Commit 68cccc2c authored by Denis Bilenko's avatar Denis Bilenko

examples/portforwarder.py: add signal handling and graceful exit

parent 9fed7d38
import sys
import signal
import gevent
from gevent.server import StreamServer
from gevent.socket import create_connection, gethostbyname
......@@ -17,6 +18,10 @@ class PortForwarder(StreamServer):
forwarder2 = gevent.spawn(forward, dest, source)
gevent.joinall([forwarder1, forwarder2], count=1)
def close(self):
print 'Closing listener socket'
StreamServer.close(self)
def forward(source, dest):
source_address = '%s:%s' % source.getpeername()[:2]
......@@ -50,7 +55,11 @@ def main():
dest = parse_address(args[1])
server = PortForwarder(source, dest)
log('Starting port forwarder %s:%s -> %s:%s', *(server.address[:2] + dest))
server.serve_forever()
gevent.signal(signal.SIGTERM, server.close)
gevent.signal(signal.SIGQUIT, server.close)
gevent.signal(signal.SIGINT, server.close)
server.start()
gevent.run()
def log(message, *args):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment