[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: TTL expired?



On Tue, Mar 06, 2007 at 10:09:49PM +0100, Juliusz Chroboczek wrote:
> I've just switched to 0.1.2.8, and when trying to access a hidden
> service that doesn't exist, I'm getting SOCKS 5 error number 6
> ``TTL expired''.
> 
> That's a somewhat unexpected error -- I'd expect to get error 4 ``host
> unreachable''.

You're right: I've changed line 471 of rendclient.c so it'll use
END_STREAM_REASON_RESOLVEFAILED rather than END_STREAM_REASON_TIMEOUT,
which will result in a socks5 error 4 (host unreachable).

But there's a deeper issue, which is that we return socks5 error 6 (ttl
expired) for cases of END_STREAM_REASON_TIMEOUT, and this is probably
wrong. What's happening on Tor's side is that it's trying to build or
find a suitable circuit for the stream, but it gives up after a few
minutes and tells you you're out of luck.

Is this a host unreachable case or a network unreachable case? As far as
I can tell, the socks5 error messages are totally undocumented beyond
the short phrase for each one. I did find Some Guy On The Internet who
speculated a few more details:
http://socksipy.sourceforge.net/readme.txt

None of these fit the "we timed out without even trying to make the
connection" case in Tor, but host unreachable and network unreachable
seem closest. Anybody have a good rationale for one over the other?

--Roger