[tor-dev] Status report - Stream-RTT
r.a at posteo.net
Fri Aug 9 23:33:24 UTC 2013
On Monday 05 August 2013 07:25:20 Damian Johnson wrote:
> Yup. It's unfortunate that tor decided to include an 'Exit' flag with
> such an unintuitive meaning. You're not the first person to be
> confused by it.
Is this meaning at least documented somewhere and I have just read over it?
> > -) It is not safe to use extend_circuit in parallel for creating new
> > circuits. I think this is not mentioned anywhere.
> What kind of issue does that encounter? Is it a problem with stem's
> thread safety or an issue on tor's side?
If requests are sent to Tor to create more then a single circuit at once, the
mapping between circuit events and create-request is unknown because the
circuit ID is not known until the LAUNCHED-event has been received.
This is clearly an issue on Tor's side but one could argue that Stem should
stop me from using it that way.
> Manual lock handling is risky. If anything within this block raises an
> exception (and there's several points throughout your script where you
> use Controller methods that can potentially raise errors) then the
> lock won't be released.
> The safer way of doing this is to use the 'with' keyword...
I could get rid of all manual locking besides in one case.
> Not necessary. Methods return None by default.
> You might want to look into pyflakes and pep8. I've found them to be
> better static analysis tools.
pyflakes didn't say anything but I commited lots of cosmetic pep8 changes .
> > try:
> > controller = connect_port()
> > except SocketError:
> > sys.stderr.write("ERROR: Couldn't connect to Tor.\n")
> > sys.exit(1)
> > controller.authenticate()
> Not quite. The connect_port() function never returns an exception.
> Rather, if it fails to establish a control connection then it prints
> the issue to stdout and returns None. Also, the connection it provides
> is already authenticated.
If Tor has ControlPort enabled without having HashedControlPassword set,
authenticate() has to be called to authenticate the connection.
Though this is not recommended I don't know which other default setting would
be more appropriate.
> This should instead be...
> controller = connect_port()
> if not controller:
> sys.exit(1) # failed to get a control connenction
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 198 bytes
Desc: This is a digitally signed message part.
More information about the tor-dev