Просмотр исходного кода

Fixed SOCKS listener temporary error check.

If the error is not of type net.Error, it should *not* be treated as a temporary error.
Adam Pritchard 11 лет назад
Родитель
Сommit
8e79daed5e
1 измененных файлов с 8 добавлено и 7 удалено
  1. 8 7
      psiphon/socksProxy.go

+ 8 - 7
psiphon/socksProxy.go

@@ -21,9 +21,10 @@ package psiphon
 
 import (
 	"fmt"
-	socks "github.com/Psiphon-Inc/goptlib"
 	"net"
 	"sync"
+
+	socks "github.com/Psiphon-Inc/goptlib"
 )
 
 // SocksProxy is a SOCKS server that accepts local host connections
@@ -103,13 +104,13 @@ loop:
 		}
 		if err != nil {
 			Notice(NOTICE_ALERT, "SOCKS proxy accept error: %s", err)
-			if e, ok := err.(net.Error); ok && !e.Temporary() {
-				proxy.tunneler.SignalFailure()
-				// Fatal error, stop the proxy
-				break loop
+			if e, ok := err.(net.Error); ok && e.Temporary() {
+				// Temporary error, keep running
+				continue
 			}
-			// Temporary error, keep running
-			continue
+			// Fatal error, stop the proxy
+			proxy.tunneler.SignalFailure()
+			break loop
 		}
 		go func() {
 			err := proxy.socksConnectionHandler(socksConnection)