[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [tor-bugs] #14135 [Pluggable transport]: Incorrect SocksListener temporary error check
#14135: Incorrect SocksListener temporary error check
-------------------------------------+--------------------------
Reporter: adam-p | Owner: dcf
Type: defect | Status: needs_review
Priority: minor | Milestone:
Component: Pluggable transport | Version:
Resolution: | Keywords: goptlib
Actual Points: | Parent ID:
Points: |
-------------------------------------+--------------------------
Comment (by dcf):
What do you think about just not returning errors that happen post-Accept
during SOCKS negotiation? Something like this:
{{{
#!diff
--- a/socks.go
+++ b/socks.go
@@ -126,30 +126,31 @@ func (ln *SocksListener) Accept() (net.Conn, error)
{
// continue
// }
// go handleConn(conn)
// }
func (ln *SocksListener) AcceptSocks() (*SocksConn, error) {
+retry:
c, err := ln.Listener.Accept()
if err != nil {
return nil, err
}
conn := new(SocksConn)
conn.Conn = c
err = conn.SetDeadline(time.Now().Add(socksRequestTimeout))
if err != nil {
conn.Close()
- return nil, err
+ goto retry
}
conn.Req, err = readSocks4aConnect(conn)
if err != nil {
conn.Close()
- return nil, err
+ goto retry
}
err = conn.SetDeadline(time.Time{})
if err != nil {
conn.Close()
- return nil, err
+ goto retry
}
return conn, nil
}
// Returns "socks4", suitable to be included in a call to Cmethod.
}}}
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/14135#comment:5>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs