aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2009-07-31 13:24:47 +0000
committerRob Austein <sra@hactrn.net>2009-07-31 13:24:47 +0000
commitfb9d4d2ddf7a6638d9cc896b125c9e065f160511 (patch)
tree6bc14754c7c8a4f11060b83830fe9e2a808c7d35
parentc467f935057d9b141a626c9d5c5b377dc0ff4c38 (diff)
Several little portability fixes
svn path=/rpkid/rpki/https.py; revision=2683
-rw-r--r--rpkid/rpki/https.py14
-rw-r--r--rpkid/testbed.py4
2 files changed, 14 insertions, 4 deletions
diff --git a/rpkid/rpki/https.py b/rpkid/rpki/https.py
index 3fab4e77..672fd3a0 100644
--- a/rpkid/rpki/https.py
+++ b/rpkid/rpki/https.py
@@ -323,7 +323,16 @@ class http_stream(asynchat.async_chat):
self.close(force = True)
def handle_write(self):
- assert self.retry_read is None, "%r: TLS I/O already in progress, r %r" % (self, self.retry_read)
+
+ # This used to be an assertion, but apparently this can happen
+ # without anything really being wrong, as a sort of race
+ # condition, due to select() having signaled that a socket was
+ # both readable and writable. I think.
+ #
+ if self.retry_read is not None:
+ self.log("TLS I/O already in progress, r %r" % self.retry_read)
+ return
+
if self.retry_write is not None:
thunk = self.retry_write
self.retry_write = None
@@ -476,7 +485,8 @@ class http_listener(asyncore.dispatcher):
try:
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- self.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
+ if hasattr(socket, "SO_REUSEPORT"):
+ self.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
self.bind((host, port))
self.listen(5)
except (rpki.async.ExitNow, SystemExit):
diff --git a/rpkid/testbed.py b/rpkid/testbed.py
index 0b259333..92902a69 100644
--- a/rpkid/testbed.py
+++ b/rpkid/testbed.py
@@ -285,7 +285,7 @@ def main():
except:
rpki.log.info("Event loop exited with an exception")
- raise
+ rpki.log.traceback()
finally:
@@ -1417,7 +1417,7 @@ rootd_fmt_3 = '''\
%(openssl)s req -new -sha256 -key %(rootd_name)s.key -out %(rootd_name)s.req -config %(rootd_name)s.conf -text -extensions req_x509_rpki_ext &&
%(openssl)s x509 -req -sha256 -in %(rootd_name)s.req -out %(rootd_name)s.cer -outform DER -extfile %(rootd_name)s.conf -extensions req_x509_rpki_ext \
-signkey %(rootd_name)s.key &&
-ln -f %(rootd_name)s.cer %(rsyncd_dir)s &&
+ln -f %(rootd_name)s.cer %(rsyncd_dir)s
'''
rcynic_fmt_1 = '''\