diff options
author | Rob Austein <sra@hactrn.net> | 2009-07-31 13:24:47 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2009-07-31 13:24:47 +0000 |
commit | fb9d4d2ddf7a6638d9cc896b125c9e065f160511 (patch) | |
tree | 6bc14754c7c8a4f11060b83830fe9e2a808c7d35 | |
parent | c467f935057d9b141a626c9d5c5b377dc0ff4c38 (diff) |
Several little portability fixes
svn path=/rpkid/rpki/https.py; revision=2683
-rw-r--r-- | rpkid/rpki/https.py | 14 | ||||
-rw-r--r-- | rpkid/testbed.py | 4 |
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 = '''\ |