keroserene / snowflake

WebRTC Pluggable Transport - the original snowflake repo
https://keroserene.net/snowflake/
Other
277 stars 31 forks source link

SOCKS4 failure message #32

Closed keroserene closed 6 years ago

keroserene commented 8 years ago

Sometimes, Tor emits this:

[warn] The connection to the SOCKS4 proxy server at 127.0.0.1:$someport just failed. Make sure that the proxy server is up and running.

At which point no more handlers fire. Looking at the Tor source, this happens when SOCKS is "marked for close". This is inconvenient because then the client must be restarted for connectivity to work again.

arlolra commented 8 years ago

Are you still experiencing this? Is it reproducible?

keroserene commented 8 years ago

I experienced this sporadically while working on multiplexing. Right now it seems fine though.

It seems to be 100% reproducible if I explicitly readPipe.Close() on the webrtc peer. My guess is that when the copyLoop sends an error or EOF at SOCKS, Tor interprets that as an unexpected situation, "marks for close / deletion" and so the SOCKS4 server disappears.

Maybe there's a way to account for this in main() to also be able to recover the initial SOCKS listening? (this is not in the goptlib example, which we were originally based on) When the SOCKS connection is closed normally in handler, there's doesn't seem to be an issue.

But, should test more possibilities / longer times.

arlolra commented 6 years ago

This is now https://trac.torproject.org/projects/tor/ticket/25599