aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2010-01-24 14:51:33 +0000
committerRob Austein <sra@hactrn.net>2010-01-24 14:51:33 +0000
commitfe215500a53d9914e04100f20c76813c5ff8dc11 (patch)
tree09f0f8576e17beb42330824e7be64d4da520230d
parent6ed89c99df60877c5ff26829b32faabfd7dec348 (diff)
Tweak twisty maze of connection shutdown code to adhere more closely
to underlying asynchat event sequence. I think that violating the underlying event model is why we were leaking file descriptors ("closed" connections that were not in fact being closed), overnight test seems to bear this out. svn path=/rpkid/rpki/https.py; revision=2970
-rw-r--r--rpkid/rpki/https.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/rpkid/rpki/https.py b/rpkid/rpki/https.py
index 7f06f31a..62987b4c 100644
--- a/rpkid/rpki/https.py
+++ b/rpkid/rpki/https.py
@@ -281,6 +281,7 @@ class http_stream(asynchat.async_chat):
self.log("Close event in HTTP stream handler")
self.timer.cancel()
self.timer.set_handler(None)
+ asynchat.async_chat.handle_close(self)
def send(self, data):
assert self.retry_read is None and self.retry_write is None, "%r: TLS I/O already in progress, r %r w %r" % (self, self.retry_read, self.retry_write)
@@ -374,7 +375,6 @@ class http_stream(asynchat.async_chat):
self.tls = None
if self.tls is None:
asynchat.async_chat.close(self)
- self.handle_close()
def log_cert(self, tag, x):
if debug_tls_certs: