[tor-commits] [snowflake/master] Simplify signal handling in WebSocket server.
dcf at torproject.org
dcf at torproject.org
Thu Jan 19 03:26:30 UTC 2017
commit 2a9126a1581a9e2bf5c8fbcd6992cfe57d8df831
Author: David Fifield <david at bamsoftware.com>
Date: Wed Jan 18 19:24:02 2017 -0800
Simplify signal handling in WebSocket server.
pt-spec no longer talks about SIGINT.
---
server/server.go | 29 +++++++++--------------------
1 file changed, 9 insertions(+), 20 deletions(-)
diff --git a/server/server.go b/server/server.go
index b5417b5..570de61 100644
--- a/server/server.go
+++ b/server/server.go
@@ -320,9 +320,9 @@ func main() {
var numHandlers int = 0
var sig os.Signal
sigChan := make(chan os.Signal, 1)
- signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
+ signal.Notify(sigChan, syscall.SIGTERM)
- // wait for first signal
+ // keep track of handlers and wait for a signal
sig = nil
for sig == nil {
select {
@@ -331,27 +331,16 @@ func main() {
case sig = <-sigChan:
}
}
- log.Printf("Got first signal %q with %d running handlers.", sig, numHandlers)
+
+ // signal received, shut down
+ log.Printf("Caught signal %q, exiting.", sig)
for _, ln := range listeners {
ln.Close()
}
-
- if sig == syscall.SIGTERM {
- log.Printf("Caught signal %q, exiting.", sig)
- return
- }
-
- // wait for second signal or no more handlers
- sig = nil
- for sig == nil && numHandlers != 0 {
- select {
- case n := <-handlerChan:
- numHandlers += n
- log.Printf("%d remaining handlers.", numHandlers)
- case sig = <-sigChan:
+ for n := range handlerChan {
+ numHandlers += n
+ if numHandlers == 0 {
+ break
}
}
- if sig != nil {
- log.Printf("Got second signal %q with %d running handlers.", sig, numHandlers)
- }
}
More information about the tor-commits
mailing list