From d01f3c4b8ca72d722aff8ac6ac4346e089f319a6 Mon Sep 17 00:00:00 2001 From: Magnus Ahltorp Date: Tue, 18 Nov 2014 15:46:23 +0100 Subject: Catch ctrl-c more correctly. Catch SystemExit from add_chain and exit in main process instead --- tools/submitcert.py | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'tools') diff --git a/tools/submitcert.py b/tools/submitcert.py index 80a3e37..2bb0c1a 100755 --- a/tools/submitcert.py +++ b/tools/submitcert.py @@ -13,6 +13,7 @@ import hashlib import itertools from certtools import * import os +import signal from multiprocessing import Pool @@ -32,7 +33,10 @@ def submitcert(certfile): certs = get_certs_from_file(certfile) timing_point(timing, "readcerts") - result = add_chain(baseurl, {"chain":map(base64.b64encode, certs)}) + try: + result = add_chain(baseurl, {"chain":map(base64.b64encode, certs)}) + except SystemExit: + return None timing_point(timing, "addchain") @@ -42,10 +46,13 @@ def submitcert(certfile): timing_point(timing, "checksig") except AssertionError, e: print "ERROR:", e - sys.exit(1) + return None + except urllib2.HTTPError, e: + print "ERROR:", e + return None except ecdsa.keys.BadSignatureError, e: print "ERROR: bad signature" - sys.exit(1) + return None if lookup_in_log: @@ -91,8 +98,15 @@ def submitcert(certfile): timing_point(timing, "lookup") return timing["deltatimes"] -p = Pool(1) - -for timing in p.imap_unordered(submitcert, certfiles): - print timing - +p = Pool(1, lambda: signal.signal(signal.SIGINT, signal.SIG_IGN)) + +try: + for timing in p.imap_unordered(submitcert, certfiles): + if timing == None: + p.terminate() + p.join() + sys.exit(1) + print timing +except KeyboardInterrupt: + p.terminate() + p.join() -- cgit v1.1