[tor-bugs] #9741 [Obfsproxy]: SIGINT handling for py-obfsproxy

Tor Bug Tracker & Wiki blackhole at torproject.org
Sat Sep 14 17:35:01 UTC 2013


#9741: SIGINT handling for py-obfsproxy
-----------------------+---------------------
 Reporter:  dcf        |          Owner:  asn
     Type:  defect     |         Status:  new
 Priority:  minor      |      Milestone:
Component:  Obfsproxy  |        Version:
 Keywords:             |  Actual Points:
Parent ID:             |         Points:
-----------------------+---------------------
 It looks like a single SIGINT kills obfsproxy, contrary to what
 https://gitweb.torproject.org/torspec.git/blob/HEAD:/proposals/180
 -pluggable-transport.txt says:
   Proxies should respond to a single INT signal by closing their listener
 ports and not accepting any new connections, but keeping all connections
 open, then terminating when connections are all closed.  Proxies should
 respond to a second INT signal by shutting down cleanly.
 It looks like #3473 was this issue in C-obfsproxy.

 Here is what I see in the debug log when I SIGINT tor. I think the message
 "Received SIGINT, shutting down" comes from Twisted.
 {{{
 2013-09-14 10:21:09,672 [INFO] Received SIGINT, shutting down.
 2013-09-14 10:21:09,672 [INFO] Received SIGINT, shutting down.
 2013-09-14 10:21:09,674 [ERROR] Unhandled Error
 Traceback (most recent call last):
   File "/usr/local/lib/python2.7/dist-packages/obfsproxy-0.2.2_9_g37c9cbe-
 py2.7.egg/obfsproxy/pyobfsproxy.py", line 69, in do_managed_mode
     managed_server.do_managed_server()
   File "/usr/local/lib/python2.7/dist-packages/obfsproxy-0.2.2_9_g37c9cbe-
 py2.7.egg/obfsproxy/managed/server.py", line 60, in do_managed_server
     reactor.run()
   File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line
 1192, in run
     self.mainLoop()
   File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line
 1201, in mainLoop
     self.runUntilCurrent()
 --- <exception caught here> ---
   File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line
 797, in runUntilCurrent
     f(*a, **kw)
   File "/usr/lib/python2.7/dist-packages/twisted/internet/base.py", line
 580, in stop
     "Can't stop reactor that isn't running.")
 twisted.internet.error.ReactorNotRunning: Can't stop reactor that isn't
 running.

 2013-09-14 10:21:09,674 [DEBUG] conn_0x7f4e0e213890: Connection was lost
 (Connection to the other side was lost in a non-clean fashion: Connection
 lost.).
 2013-09-14 10:21:09,674 [DEBUG] conn_0x7f4e0e213890: Closing connection.
 2013-09-14 10:21:09,675 [DEBUG] circ_0x7f4e0e2165f0: Tearing down circuit.
 2013-09-14 10:21:09,675 [DEBUG] conn_0x7f4e0e20bb50: Closing connection.
 2013-09-14 10:21:09,675 [DEBUG] conn_0x7f4e0e20bbd0: Connection was lost
 (Connection to the other side was lost in a non-clean fashion: Connection
 lost.).
 2013-09-14 10:21:09,675 [DEBUG] conn_0x7f4e0e20bbd0: Closing connection.
 2013-09-14 10:21:09,675 [DEBUG] circ_0x7f4e0e216d40: Tearing down circuit.
 2013-09-14 10:21:09,675 [DEBUG] conn_0x7f4e0e20b8d0: Closing connection.
 2013-09-14 10:21:09,676 [DEBUG] conn_0x7f4e0e20b8d0: Connection was lost
 (Connection to the other side was lost in a non-clean fashion: Connection
 lost.).
 2013-09-14 10:21:09,676 [INFO] Stopping factory
 <obfsproxy.network.network.StaticDestinationClientFactory instance at
 0x7f4e0e216d88>
 2013-09-14 10:21:09,676 [DEBUG] conn_0x7f4e0e20bb50: Connection was lost
 (Connection to the other side was lost in a non-clean fashion: Connection
 lost.).
 2013-09-14 10:21:09,676 [INFO] Stopping factory
 <obfsproxy.network.network.StaticDestinationClientFactory instance at
 0x7f4e0e216638>
 2013-09-14 10:21:09,677 [INFO] (TCP Port 50126 Closed)
 2013-09-14 10:21:09,677 [INFO] Stopping factory
 <obfsproxy.network.network.StaticDestinationServerFactory instance at
 0x7f4e0e2163b0>
 2013-09-14 10:21:09,678 [INFO] Main loop terminated.
 }}}

 I noticed this while testing the super-proxy from #7167; it tries to
 SIGINT its subprocesses when it gets a SIGINT, and obfsproxy is killing
 existing connections when that happens.

 May also need to handle SIGTERM à la #9732.

-- 
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/9741>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list