firewall: catch SIGHUP and SIGPIPE.

Not sure if this will fix anything, but it might stop the problem reported
on some MacOS versions where the firewall doesn't get cleaned up correctly.
This commit is contained in:
Avery Pennarun 2012-01-05 21:16:24 -05:00 committed by Brian May
parent 5a39341d50
commit 39425a03c5

View File

@ -1,6 +1,7 @@
import errno import errno
import socket import socket
import select import select
import signal
import struct import struct
import compat.ssubprocess as ssubprocess import compat.ssubprocess as ssubprocess
import ssyslog import ssyslog
@ -565,6 +566,11 @@ def main(port_v6, port_v4, dnsport_v6, dnsport_v4, method, udp, syslog):
sys.stdout.write('READY %s\n' % method) sys.stdout.write('READY %s\n' % method)
sys.stdout.flush() sys.stdout.flush()
# don't disappear if our controlling terminal or stdout/stderr
# disappears; we still have to clean up.
signal.signal(signal.SIGHUP, signal.SIG_IGN)
signal.signal(signal.SIGPIPE, signal.SIG_IGN)
# ctrl-c shouldn't be passed along to me. When the main sshuttle dies, # ctrl-c shouldn't be passed along to me. When the main sshuttle dies,
# I'll die automatically. # I'll die automatically.
os.setsid() os.setsid()