()
| 75 | udp_servers.append(udprelay.UDPRelay(a_config, dns_resolver, False)) |
| 76 | |
| 77 | def run_server(): |
| 78 | def child_handler(signum, _): |
| 79 | logging.warn('received SIGQUIT, doing graceful shutting down..') |
| 80 | list(map(lambda s: s.close(next_tick=True), |
| 81 | tcp_servers + udp_servers)) |
| 82 | signal.signal(getattr(signal, 'SIGQUIT', signal.SIGTERM), |
| 83 | child_handler) |
| 84 | |
| 85 | def int_handler(signum, _): |
| 86 | sys.exit(1) |
| 87 | signal.signal(signal.SIGINT, int_handler) |
| 88 | |
| 89 | try: |
| 90 | loop = eventloop.EventLoop() |
| 91 | dns_resolver.add_to_loop(loop) |
| 92 | list(map(lambda s: s.add_to_loop(loop), tcp_servers + udp_servers)) |
| 93 | |
| 94 | daemon.set_user(config.get('user', None)) |
| 95 | loop.run() |
| 96 | except Exception as e: |
| 97 | shell.print_exception(e) |
| 98 | sys.exit(1) |
| 99 | |
| 100 | if int(config['workers']) > 1: |
| 101 | if os.name == 'posix': |
no test coverage detected