commit b4f4b29a037fd2444423835da5999f39525f3d24
Author: David Fifield <da...@bamsoftware.com>
Date:   Fri Oct 11 16:50:25 2019 -0600

    Stop counting handlers before terminating.
    
    The requirement to do so is obsolete and has already been removed from
    other pluggable transports.
    
    https://bugs.torproject.org/32046
---
 client/lib/snowflake.go    |  8 --------
 client/snowflake.go        | 14 +-------------
 server-webrtc/snowflake.go | 26 ++------------------------
 server/server.go           | 25 ++-----------------------
 4 files changed, 5 insertions(+), 68 deletions(-)

diff --git a/client/lib/snowflake.go b/client/lib/snowflake.go
index 1c9c34d..2e68e36 100644
--- a/client/lib/snowflake.go
+++ b/client/lib/snowflake.go
@@ -13,17 +13,9 @@ const (
        SnowflakeTimeout = 30
 )
 
-// HandlerChan - When a connection handler starts, +1 is written to this 
channel; when it
-// ends, -1 is written.
-var HandlerChan = make(chan int)
-
 // Given an accepted SOCKS connection, establish a WebRTC connection to the
 // remote peer and exchange traffic.
 func Handler(socks SocksConnector, snowflakes SnowflakeCollector) error {
-       HandlerChan <- 1
-       defer func() {
-               HandlerChan <- -1
-       }()
        // Obtain an available WebRTC remote. May block.
        snowflake := snowflakes.Pop()
        if nil == snowflake {
diff --git a/client/snowflake.go b/client/snowflake.go
index 18b704f..959f83c 100644
--- a/client/snowflake.go
+++ b/client/snowflake.go
@@ -184,8 +184,6 @@ func main() {
        }
        pt.CmethodsDone()
 
-       var numHandlers int
-       var sig os.Signal
        sigChan := make(chan os.Signal, 1)
        signal.Notify(sigChan, syscall.SIGTERM)
 
@@ -202,22 +200,12 @@ func main() {
        }
 
        // keep track of handlers and wait for a signal
-       sig = nil
-       for sig == nil {
-               select {
-               case n := <-sf.HandlerChan:
-                       numHandlers += n
-               case sig = <-sigChan:
-               }
-       }
+       <-sigChan
 
        // signal received, shut down
        for _, ln := range listeners {
                ln.Close()
        }
        snowflakes.End()
-       for numHandlers > 0 {
-               numHandlers += <-sf.HandlerChan
-       }
        log.Println("snowflake is done.")
 }
diff --git a/server-webrtc/snowflake.go b/server-webrtc/snowflake.go
index cf1c888..d5b1604 100644
--- a/server-webrtc/snowflake.go
+++ b/server-webrtc/snowflake.go
@@ -21,10 +21,6 @@ var ptMethodName = "snowflake"
 var ptInfo pt.ServerInfo
 var logFile *os.File
 
-// When a datachannel handler starts, +1 is written to this channel;
-// when it ends, -1 is written.
-var handlerChan = make(chan int)
-
 func copyLoop(WebRTC, ORPort net.Conn) {
        var wg sync.WaitGroup
        wg.Add(2)
@@ -100,11 +96,6 @@ func (c *webRTCConn) SetWriteDeadline(t time.Time) error {
 func datachannelHandler(conn *webRTCConn) {
        defer conn.Close()
 
-       handlerChan <- 1
-       defer func() {
-               handlerChan <- -1
-       }()
-
        or, err := pt.DialOr(&ptInfo, "", ptMethodName) // TODO: Extended OR
        if err != nil {
                log.Printf("Failed to connect to ORPort: " + err.Error())
@@ -246,8 +237,6 @@ func main() {
        }
        pt.SmethodsDone()
 
-       var numHandlers int
-       var sig os.Signal
        sigChan := make(chan os.Signal, 1)
        signal.Notify(sigChan, syscall.SIGTERM)
 
@@ -263,17 +252,6 @@ 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:
-               }
-       }
-
-       for numHandlers > 0 {
-               numHandlers += <-handlerChan
-       }
+       // wait for a signal
+       <-sigChan
 }
diff --git a/server/server.go b/server/server.go
index 5d15df6..b1b566a 100644
--- a/server/server.go
+++ b/server/server.go
@@ -37,10 +37,6 @@ const listenAndServeErrorTimeout = 100 * time.Millisecond
 
 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 usage() {
        fmt.Fprintf(os.Stderr, `Usage: %s [OPTIONS]
 
@@ -157,11 +153,6 @@ func webSocketHandler(ws *websocket.WebSocket) {
        conn := newWebSocketConn(ws)
        defer conn.Close()
 
-       handlerChan <- 1
-       defer func() {
-               handlerChan <- -1
-       }()
-
        // Pass the address of client as the remote address of incoming 
connection
        clientIPParam := ws.Request().URL.Query().Get("client_ip")
        addr := clientAddr(clientIPParam)
@@ -390,8 +381,6 @@ func main() {
        }
        pt.SmethodsDone()
 
-       var numHandlers int
-       var sig os.Signal
        sigChan := make(chan os.Signal, 1)
        signal.Notify(sigChan, syscall.SIGTERM)
 
@@ -407,22 +396,12 @@ 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:
-               }
-       }
+       // wait for a signal
+       sig := <-sigChan
 
        // signal received, shut down
        log.Printf("caught signal %q, exiting", sig)
        for _, server := range servers {
                server.Close()
        }
-       for numHandlers > 0 {
-               numHandlers += <-handlerChan
-       }
 }

_______________________________________________
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to