[tor-commits] [goptlib/master] Change error returns in readSocks4aConnect.

dcf at torproject.org dcf at torproject.org
Mon Dec 9 02:49:51 UTC 2013


commit 73569ea2f431a62ca6eb8746cdb6c21c18c18abc
Author: David Fifield <david at bamsoftware.com>
Date:   Mon Dec 2 08:36:23 2013 -0800

    Change error returns in readSocks4aConnect.
---
 socks/socks.go |   25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/socks/socks.go b/socks/socks.go
index b82fba7..060f746 100644
--- a/socks/socks.go
+++ b/socks/socks.go
@@ -55,24 +55,26 @@ func AwaitSocks4aConnect(conn *net.TCPConn, connect func(string) (*net.TCPAddr,
 }
 
 // Read a SOCKS4a connect request. Returns a "host:port" string.
-func readSocks4aConnect(s io.Reader) (string, error) {
+func readSocks4aConnect(s io.Reader) (target string, err error) {
 	r := bufio.NewReader(s)
 
 	var h [8]byte
-	n, err := io.ReadFull(r, h[:])
+	_, err = io.ReadFull(r, h[:])
 	if err != nil {
-		return "", errors.New(fmt.Sprintf("after %d bytes of SOCKS header: %s", n, err))
+		return
 	}
 	if h[0] != socksVersion {
-		return "", errors.New(fmt.Sprintf("SOCKS header had version 0x%02x, not 0x%02x", h[0], socksVersion))
+		err = errors.New(fmt.Sprintf("SOCKS header had version 0x%02x, not 0x%02x", h[0], socksVersion))
+		return
 	}
 	if h[1] != socksCmdConnect {
-		return "", errors.New(fmt.Sprintf("SOCKS header had command 0x%02x, not 0x%02x", h[1], socksCmdConnect))
+		err = errors.New(fmt.Sprintf("SOCKS header had command 0x%02x, not 0x%02x", h[1], socksCmdConnect))
+		return
 	}
 
 	_, err = r.ReadBytes('\x00')
 	if err != nil {
-		return "", errors.New(fmt.Sprintf("reading SOCKS userid: %s", err))
+		return
 	}
 
 	var port int
@@ -80,9 +82,10 @@ func readSocks4aConnect(s io.Reader) (string, error) {
 
 	port = int(h[2])<<8 | int(h[3])<<0
 	if h[4] == 0 && h[5] == 0 && h[6] == 0 && h[7] != 0 {
-		hostBytes, err := r.ReadBytes('\x00')
+		var hostBytes []byte
+		hostBytes, err = r.ReadBytes('\x00')
 		if err != nil {
-			return "", errors.New(fmt.Sprintf("reading SOCKS4a destination: %s", err))
+			return
 		}
 		host = string(hostBytes[:len(hostBytes)-1])
 	} else {
@@ -90,10 +93,12 @@ func readSocks4aConnect(s io.Reader) (string, error) {
 	}
 
 	if r.Buffered() != 0 {
-		return "", errors.New(fmt.Sprintf("%d bytes left after SOCKS header", r.Buffered()))
+		err = errors.New(fmt.Sprintf("%d bytes left after SOCKS header", r.Buffered()))
+		return
 	}
 
-	return fmt.Sprintf("%s:%d", host, port), nil
+	target = fmt.Sprintf("%s:%d", host, port)
+	return
 }
 
 // Send a SOCKS4a response with the given code and address.





More information about the tor-commits mailing list