aboutsummaryrefslogtreecommitdiff
path: root/rpki/rtr
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2014-06-11 18:21:10 +0000
committerRob Austein <sra@hactrn.net>2014-06-11 18:21:10 +0000
commit89439c425c95fca242a1f1974441c0e04d65e5fa (patch)
tree1afc48df1a7aeb44484d108435757dccea70b8f2 /rpki/rtr
parent2cc08642fca1d0de274b0f833adcc570d270b4b7 (diff)
Race condition during server shutdown could prevent cleanup of kickme socket.
svn path=/trunk/; revision=5864
Diffstat (limited to 'rpki/rtr')
-rw-r--r--rpki/rtr/server.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/rpki/rtr/server.py b/rpki/rtr/server.py
index a1aacbee..b3e4fd7c 100644
--- a/rpki/rtr/server.py
+++ b/rpki/rtr/server.py
@@ -24,6 +24,7 @@ import os
import sys
import errno
import socket
+import signal
import logging
import asyncore
import rpki.POW
@@ -490,9 +491,11 @@ def server_main(args):
server = rpki.rtr.server.ServerChannel(logger = logger, refresh = args.refresh, retry = args.retry, expire = args.expire)
kickme = rpki.rtr.server.KickmeChannel(server = server)
asyncore.loop(timeout = None)
+ signal.signal(signal.SIGINT, signal.SIG_IGN) # Theorized race condition
except KeyboardInterrupt:
sys.exit(0)
finally:
+ signal.signal(signal.SIGINT, signal.SIG_IGN) # Observed race condition
if kickme is not None:
kickme.cleanup()