diff options
author | Rob Austein <sra@hactrn.net> | 2009-04-20 23:24:25 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2009-04-20 23:24:25 +0000 |
commit | 024e74a42cbb21b431f0f7e1a70aaefbeefe0b0d (patch) | |
tree | 7e7b0ca4ce58af282370500e6f8f7a4b6e4b2de6 /rpkid/rpki/https.py | |
parent | 83d9fb93cad19a9d4d21a6a3b624a33332b90ed4 (diff) |
Checkpoint
svn path=/rpkid/irdbd.py; revision=2350
Diffstat (limited to 'rpkid/rpki/https.py')
-rw-r--r-- | rpkid/rpki/https.py | 21 |
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() |