aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2009-05-04 22:43:20 +0000
committerRob Austein <sra@hactrn.net>2009-05-04 22:43:20 +0000
commitf49a0a660655746f4001fb66277731e5f562be8e (patch)
treecbd77bb238d2cdd102144186ec833a543c94e380
parent78f347515c13b7ba575d9c46a7ccaf1ffdc9ac65 (diff)
Don't hang waiting for timeout of persistent connections when we know we're all done.
svn path=/rpkid/rpki/async.py; revision=2400
-rw-r--r--rpkid/rpki/async.py4
-rw-r--r--rpkid/testbed.py1
-rw-r--r--rpkid/testpoke.py12
3 files changed, 9 insertions, 8 deletions
diff --git a/rpkid/rpki/async.py b/rpkid/rpki/async.py
index 164e0102..83df75eb 100644
--- a/rpkid/rpki/async.py
+++ b/rpkid/rpki/async.py
@@ -183,3 +183,7 @@ def event_loop(catch_signals = (signal.SIGINT, signal.SIGTERM)):
finally:
for sig, handler in old_signal_handlers:
signal.signal(sig, handler)
+
+def exit_event_loop():
+ """Force exit from event_loop()."""
+ raise asyncore.ExitNow
diff --git a/rpkid/testbed.py b/rpkid/testbed.py
index c2fa2df5..19938c79 100644
--- a/rpkid/testbed.py
+++ b/rpkid/testbed.py
@@ -285,6 +285,7 @@ class main(object):
# If we've run out of deltas to apply, we're done
if not yaml_script:
rpki.log.info("No more deltas to apply, done")
+ rpki.async.exit_event_loop()
else:
rpki.log.info("Applying deltas")
self.db.apply_delta(yaml_script.pop(0), self.apply_delta_done)
diff --git a/rpkid/testpoke.py b/rpkid/testpoke.py
index 86e7aaef..78191efb 100644
--- a/rpkid/testpoke.py
+++ b/rpkid/testpoke.py
@@ -30,7 +30,7 @@ PERFORMANCE OF THIS SOFTWARE.
import os, time, getopt, sys, yaml
import rpki.resource_set, rpki.up_down, rpki.left_right, rpki.x509
import rpki.https, rpki.config, rpki.exceptions
-import rpki.relaxng, rpki.oids, rpki.log
+import rpki.relaxng, rpki.oids, rpki.log, rpki.async
os.environ["TZ"] = "UTC"
time.tzset()
@@ -101,6 +101,7 @@ def query_up_down(q_pdu):
r_msg, r_xml = rpki.up_down.cms_msg.unwrap(der, [cms_ta] + cms_ca_certs, pretty_print = True)
print r_xml
r_msg.payload.check_response()
+ rpki.async.exit_event_loop()
rpki.https.client(
server_ta = [https_ta] + https_ca_certs,
@@ -143,10 +144,5 @@ https_cert = get_PEM("ssl-cert", rpki.x509.X509)
https_certs = get_PEM_chain("ssl-cert-chain", https_cert)
https_ca_certs = get_PEM_chain("ssl-ca-certs")
-if debug:
- dispatch[yaml_req["type"]]()
-else:
- try:
- dispatch[yaml_req["type"]]()
- except Exception, edata:
- print "Failed:", edata
+dispatch[yaml_req["type"]]()
+rpki.async.event_loop()