[tor-commits] [meek/master] Don't wait for handlers to finish after SIGTERM.
dcf at torproject.org
dcf at torproject.org
Thu Jan 17 05:58:54 UTC 2019
commit c7541223c704f76cb45a4e20bd20d963ea8d1fc7
Author: David Fifield <david at bamsoftware.com>
Date: Wed Jan 16 22:52:51 2019 -0700
Don't wait for handlers to finish after SIGTERM.
The requirement to wait until handlers are finished, as well as the
complicated signal counting logic, was removed from pt-spec.txt in 2014.
https://bugs.torproject.org/26389
Compare
https://gitweb.torproject.org/pluggable-transports/goptlib.git/commit/?id=15f83653abbcced9003c96cc14edc5b2f82e0e0e
---
meek-client/meek-client.go | 27 +++------------------------
meek-server/meek-server.go | 25 ++-----------------------
2 files changed, 5 insertions(+), 47 deletions(-)
diff --git a/meek-client/meek-client.go b/meek-client/meek-client.go
index 1b13f11..6059947 100644
--- a/meek-client/meek-client.go
+++ b/meek-client/meek-client.go
@@ -102,10 +102,6 @@ var options struct {
UseHelper bool
}
-// When a connection handler starts, +1 is written to this channel; when it
-// ends, -1 is written.
-var handlerChan = make(chan int)
-
// RequestInfo encapsulates all the configuration used for a request–response
// roundtrip, including variables that may come from SOCKS args or from the
// command line.
@@ -279,11 +275,6 @@ func genSessionID() string {
// Callback for new SOCKS requests.
func handler(conn *pt.SocksConn) error {
- handlerChan <- 1
- defer func() {
- handlerChan <- -1
- }()
-
defer conn.Close()
err := conn.Grant(&net.TCPAddr{IP: net.IPv4zero, Port: 0})
if err != nil {
@@ -473,8 +464,6 @@ func main() {
}
pt.CmethodsDone()
- var numHandlers int = 0
- var sig os.Signal
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGTERM)
@@ -488,23 +477,13 @@ func main() {
}()
}
- // Keep track of handlers and wait for a signal.
- sig = nil
- for sig == nil {
- select {
- case n := <-handlerChan:
- numHandlers += n
- case sig = <-sigChan:
- log.Printf("got signal %s", sig)
- }
- }
+ // Wait for a signal.
+ sig := <-sigChan
+ log.Printf("got signal %s", sig)
for _, ln := range listeners {
ln.Close()
}
- for numHandlers > 0 {
- numHandlers += <-handlerChan
- }
log.Printf("done")
}
diff --git a/meek-server/meek-server.go b/meek-server/meek-server.go
index 4676b47..42aab0a 100644
--- a/meek-server/meek-server.go
+++ b/meek-server/meek-server.go
@@ -70,10 +70,6 @@ const (
var ptInfo pt.ServerInfo
-// When a connection handler starts, +1 is written to this channel; when it
-// ends, -1 is written.
-var handlerChan = make(chan int)
-
func httpBadRequest(w http.ResponseWriter) {
http.Error(w, "Bad request.", http.StatusBadRequest)
}
@@ -115,11 +111,6 @@ func NewState() *State {
}
func (state *State) ServeHTTP(w http.ResponseWriter, req *http.Request) {
- handlerChan <- 1
- defer func() {
- handlerChan <- -1
- }()
-
switch req.Method {
case "GET":
state.Get(w, req)
@@ -494,8 +485,6 @@ func main() {
}
pt.SmethodsDone()
- var numHandlers int = 0
- var sig os.Signal
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGTERM)
@@ -510,15 +499,8 @@ func main() {
}
// Keep track of handlers and wait for a signal.
- sig = nil
- for sig == nil {
- select {
- case n := <-handlerChan:
- numHandlers += n
- case sig = <-sigChan:
- log.Printf("got signal %s", sig)
- }
- }
+ sig := <-sigChan
+ log.Printf("got signal %s", sig)
/*
// Not supported until go1.8.
@@ -526,9 +508,6 @@ func main() {
server.Close()
}
*/
- for numHandlers > 0 {
- numHandlers += <-handlerChan
- }
log.Printf("done")
}
More information about the tor-commits
mailing list