aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/https.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2009-04-20 23:24:25 +0000
committerRob Austein <sra@hactrn.net>2009-04-20 23:24:25 +0000
commit024e74a42cbb21b431f0f7e1a70aaefbeefe0b0d (patch)
tree7e7b0ca4ce58af282370500e6f8f7a4b6e4b2de6 /rpkid/rpki/https.py
parent83d9fb93cad19a9d4d21a6a3b624a33332b90ed4 (diff)
Checkpoint
svn path=/rpkid/irdbd.py; revision=2350
Diffstat (limited to 'rpkid/rpki/https.py')
-rw-r--r--rpkid/rpki/https.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/rpkid/rpki/https.py b/rpkid/rpki/https.py
index 6dcf58be..1923a18f 100644
--- a/rpkid/rpki/https.py
+++ b/rpkid/rpki/https.py
@@ -225,16 +225,25 @@ class requestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
try:
handler = self.rpki_find_handler()
if self.headers["Content-Type"] != rpki_content_type:
- rcode, rtext = 415, "Received Content-Type %s, expected %s" \
- % (self.headers["Content-Type"], rpki_content_type)
+ result = 415, "No handler for Content-Type %s" % self.headers["Content-Type"]
elif handler is None:
- rcode, rtext = 404, "No handler found for URL " + self.path
+ result = 404, "No handler found for URL " + self.path
else:
- rcode, rtext = handler(query = self.rfile.read(int(self.headers["Content-Length"])),
- path = self.path)
+ self.called_back = False
+ result = handler(query = self.rfile.read(int(self.headers["Content-Length"])),
+ path = self.path,
+ cb = self.do_POST_cb)
+ assert result is not None or self.called_back, "Missing HTTPS server callback from %s" % repr(handler)
except Exception, edata:
rpki.log.error(traceback.format_exc())
- rcode, rtext = 500, "Unhandled exception %s" % edata
+ result = 500, "Unhandled exception %s" % edata
+ if result is not None:
+ self.do_POST_cb(result[0], result[1])
+
+ def do_POST_cb(self, rcode, rtext):
+ """Send result back to client."""
+ rpki.log.info("HTTPS server callback")
+ self.called_back = True
self.send_response(rcode)
self.send_header("Content-Type", rpki_content_type)
self.end_headers()