From: Ian Jackson Date: Mon, 20 Mar 2017 08:46:27 +0000 (+0000) Subject: wip X-Git-Tag: hippotat/1.0.0~55^2~232 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=hippotat.git;a=commitdiff_plain;h=aa6632821086a1a41c4f8464537db704f83a03de;hp=a63dd5015893d7a9b500c0e58b8d2c9c6a7e889f wip --- diff --git a/server b/server index e813ca0..de28624 100755 --- a/server +++ b/server @@ -1,5 +1,8 @@ #!/usr/bin/python3 +import signal +signal.signal(signal.SIGINT, signal.SIG_DFL) + import sys import os @@ -55,7 +58,7 @@ mtu = 1500 [server] ipif = userv root ipif %(host)s,%(relay)s,%(mtu)s,slip %(network)s addrs = 127.0.0.1 ::1 -port = 80 +port = 8099 [limits] max_batch_down = 262144 @@ -63,6 +66,20 @@ max_queue_time = 121 max_request_time = 121 ''' +#---------- error handling ---------- + +def crash(err): + print('CRASH ', err, file=sys.stderr) + try: reactor.stop() + except twisted.internet.error.ReactorNotRunning: pass + +def crash_on_defer(defer): + defer.addErrback(lambda err: crash(err)) + +def crash_on_critical(event): + if event.get('log_level') >= LogLevel.critical: + crash(twisted.logger.formatEvent(event)) + #---------- "router" ---------- def route(packet, saddr, daddr): @@ -288,8 +305,7 @@ def start_http(): addr = ipaddress.IPv6Address(addrspec) endpointfactory = twisted.internet.endpoints.TCP6ServerEndpoint ep = endpointfactory(reactor, cfg.getint('server','port'), addr) - defer = ep.listen(sitefactory) - defer.addErrback(lambda err: err.raiseException()) + crash_on_defer(ep.listen(sitefactory)) #---------- config and setup ---------- @@ -334,14 +350,6 @@ def process_cfg(): ipif_command = cfg.get('server','ipif', vars=iic_vars) -def crash_on_critical(event): - if event.get('log_level') >= LogLevel.critical: - print('crashing: ', twisted.logger.formatEvent(event), file=sys.stderr) - #print('crashing!', file=sys.stderr) - #os._exit(1) - try: reactor.stop() - except twisted.internet.error.ReactorNotRunning: pass - def startup(): global cfg @@ -364,3 +372,4 @@ def startup(): startup() reactor.run() +print('CRASHED (end)', file=sys.stderr)