aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2010-05-24 20:37:13 +0000
committerRob Austein <sra@hactrn.net>2010-05-24 20:37:13 +0000
commitb83343098c9df5336f5e9b07a35b4b83e5782733 (patch)
treed90d40a2223aaccf432e908c990b9877b27e4315
parent40225e118ce8cd72e4f897203329b903eb5f762f (diff)
Bugfix from Gary Kennedy: handle HTTPS close event properly if it
arrives while client thinks it's still reading the response. svn path=/rpkid/rpki/https.py; revision=3260
-rw-r--r--rpkid/rpki/https.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/rpkid/rpki/https.py b/rpkid/rpki/https.py
index 085c5347..a8e69ef1 100644
--- a/rpkid/rpki/https.py
+++ b/rpkid/rpki/https.py
@@ -71,6 +71,10 @@ default_server_timeout = rpki.sundial.timedelta(minutes = 20)
# Preferred HTTP version.
default_http_version = (1, 0)
+## @var default_tcp_port
+# Default port for clients and servers that don't specify one.
+default_tcp_port = 443
+
## @var supported_address_families
#
# IP address families to support. Almost all the code is in place for
@@ -470,7 +474,7 @@ class http_stream(asynchat.async_chat):
self.retry_write = self.handle_read
except POW.ZeroReturnError:
self.log("ZeroReturn in handle_read()")
- self.close()
+ self.handle_close()
except POW.SSLUnexpectedEOFError:
self.log("SSLUnexpectedEOF in handle_read()", rpki.log.warn)
self.close(force = True)
@@ -513,7 +517,7 @@ class http_stream(asynchat.async_chat):
self.retry_write = self.initiate_send
except POW.ZeroReturnError:
self.log("ZeroReturn in initiate_send()")
- self.close()
+ self.handle_close()
except POW.SSLUnexpectedEOFError:
self.log("SSLUnexpectedEOF in initiate_send()", rpki.log.warn)
self.close(force = True)
@@ -711,7 +715,7 @@ class http_listener(asyncore.dispatcher):
log = log_method
- def __init__(self, handlers, port = 80, host = "", cert = None, key = None, ta = None, dynamic_ta = None, af = supported_address_families[0]):
+ def __init__(self, handlers, port = default_tcp_port, host = "", cert = None, key = None, ta = None, dynamic_ta = None, af = supported_address_families[0]):
self.log("Listener cert %r key %r ta %r dynamic_ta %r" % (cert, key, ta, dynamic_ta))
asyncore.dispatcher.__init__(self)
self.handlers = handlers
@@ -1059,7 +1063,7 @@ def client(msg, client_key, client_cert, server_ta, url, callback, errback):
Host = u.hostname,
Content_Type = rpki_content_type)
- hostport = (u.hostname or "localhost", u.port or 80)
+ hostport = (u.hostname or "localhost", u.port or default_tcp_port)
if debug_http:
rpki.log.debug("Created request %r for %r" % (request, hostport))