Hi Mike. By issuing a sighup with an invalid torrc (my test case being to set RelayBandwidthBurst <
RelayBandwidthRate) TorCtl dies in a rather unsightly way. Unfortunately I can't prevent this in arm, and if
TorCtl kills the interpreter while curses is running the user's terminal is left in an especially screwed up
state (requiring a reset to function again).
Traceback (most recent call last):
File "/home/atagar/Desktop/arm/TorCtl/TorCtl.py", line 494, in _loop
isEvent, reply = self._read_reply()
File "/home/atagar/Desktop/arm/TorCtl/TorCtl.py", line 636, in _read_reply
line = self._s.readline()
File "/home/atagar/Desktop/arm/TorCtl/TorUtil.py", line 198, in readline
s = self._s.recv(128)
error: (104, 'Connection reset by peer')
[Automatically added by flyspray2trac: Operating System: All]
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
(At least from Tor's side, Tor is supposed to die when you hup it and the
torrc is invalid. It's better to die than let the user think the hup worked.)
Yup, realize that. The problem here is that TorCtl's death in that occurrence
is messy, killing the python process using it (and in my case if curses isn't
given the chance to stop nicely it leaves the user's terminal in very bad shape).
In all the testing I'm throwing at it this seems to work well, however this concurrency handling is pretty confusing so scrutiny welcome. :)
Trac: Description: Hi Mike. By issuing a sighup with an invalid torrc (my test case being to set RelayBandwidthBurst <
RelayBandwidthRate) TorCtl dies in a rather unsightly way. Unfortunately I can't prevent this in arm, and if
TorCtl kills the interpreter while curses is running the user's terminal is left in an especially screwed up
state (requiring a reset to function again).
Traceback (most recent call last):
File "/home/atagar/Desktop/arm/TorCtl/TorCtl.py", line 494, in _loop
isEvent, reply = self._read_reply()
File "/home/atagar/Desktop/arm/TorCtl/TorCtl.py", line 636, in _read_reply
line = self._s.readline()
File "/home/atagar/Desktop/arm/TorCtl/TorUtil.py", line 198, in readline
s = self._s.recv(128)
error: (104, 'Connection reset by peer')
[Automatically added by flyspray2trac: Operating System: All]
to
Hi Mike. By issuing a sighup with an invalid torrc (my test case being to set RelayBandwidthBurst <
RelayBandwidthRate) TorCtl dies in a rather unsightly way. Unfortunately I can't prevent this in arm, and if
TorCtl kills the interpreter while curses is running the user's terminal is left in an especially screwed up
state (requiring a reset to function again).
Traceback (most recent call last):
File "/home/atagar/Desktop/arm/TorCtl/TorCtl.py", line 494, in _loop
isEvent, reply = self._read_reply()
File "/home/atagar/Desktop/arm/TorCtl/TorCtl.py", line 636, in _read_reply
line = self._s.readline()
File "/home/atagar/Desktop/arm/TorCtl/TorUtil.py", line 198, in readline
s = self._s.recv(128)
error: (104, 'Connection reset by peer')
[Automatically added by flyspray2trac: Operating System: All] Actualpoints: N/AtoN/A Status: new to needs_review Points: N/AtoN/A Priority: minor to normal