commit a656ff02d15ebc8c1cf937d94c1a6ad9bbdcb038
Author: David Fifield <[email protected]>
Date:   Sat Dec 14 21:53:32 2013 -0800

    Check the type of accept errors and close listeners explicitly.
---
 websocket-client/websocket-client.go |    6 +++++-
 websocket-server/websocket-server.go |    1 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/websocket-client/websocket-client.go 
b/websocket-client/websocket-client.go
index d1d6dcc..228cb1c 100644
--- a/websocket-client/websocket-client.go
+++ b/websocket-client/websocket-client.go
@@ -152,10 +152,14 @@ func handleConnection(conn *pt.SocksConn) error {
 }
 
 func socksAcceptLoop(ln *pt.SocksListener) error {
+       defer ln.Close()
        for {
                socks, err := ln.AcceptSocks()
                if err != nil {
-                       return err
+                       if e, ok := err.(*net.OpError); ok && !e.Temporary() {
+                               return err
+                       }
+                       continue
                }
                go func() {
                        err := handleConnection(socks)
diff --git a/websocket-server/websocket-server.go 
b/websocket-server/websocket-server.go
index 84b5e5c..64ae7b4 100644
--- a/websocket-server/websocket-server.go
+++ b/websocket-server/websocket-server.go
@@ -192,6 +192,7 @@ func startListener(addr *net.TCPAddr) (*net.TCPListener, 
error) {
                return nil, err
        }
        go func() {
+               defer ln.Close()
                var config websocket.Config
                config.Subprotocols = []string{"base64"}
                config.MaxMessageSize = maxMessageSize

_______________________________________________
tor-commits mailing list
[email protected]
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to