[tor-commits] [ooni-probe/master] Add connectionRenegotiate() method for calling methods to either handle

art at torproject.org art at torproject.org
Tue Apr 30 13:01:43 UTC 2013


commit 4ad6a7e1ea528b72731c509bddc63562f1b79f86
Author: Isis Lovecruft <isis at torproject.org>
Date:   Thu Feb 28 04:17:13 2013 +0000

    Add connectionRenegotiate() method for calling methods to either handle
    SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE, as may be the case.
---
 nettests/experimental/tls_handshake.py |   25 ++++++++++++++++++++++++-
 1 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/nettests/experimental/tls_handshake.py b/nettests/experimental/tls_handshake.py
index d84f174..81cab6a 100644
--- a/nettests/experimental/tls_handshake.py
+++ b/nettests/experimental/tls_handshake.py
@@ -271,7 +271,30 @@ class TLSHandshakeTest(nettest.NetTestCase):
 
             return connection
 
-        def doHandshake(connection):
+        def connectionRenegotiate(connection, host, error_message):
+            log.msg("Server requested renegotiation from: %s" % host)
+            log.debug("Renegotiation reason: %s" % error_message)
+            log.debug("State: %s" % connection.state_string())
+
+            if connection.renegotiate():
+                log.debug("Renegotiation possible.")
+                log.message("Retrying handshake with %s..." % host)
+                try:
+                    connection.do_handshake()
+                    while connection.renegotiate_pending():
+                        log.msg("Renegotiation with %s in progress..." % host)
+                        log.debug("State: %s" % connection.state_string())
+                        sleep(1)
+                    else:
+                        log.msg("Renegotiation with %s complete!" % host)
+                except SSL.WantReadError, wre:
+                    connection = handleWantRead(connection)
+                    log.debug("State: %s" % connection.state_string())
+                except SSL.WantWriteError, wwe:
+                    connection = handleWantWrite(connection)
+                    log.debug("State: %s" % connection.state_string())
+            return connection
+
             try:
                 connection.do_handshake()
             except SSL.WantReadError():





More information about the tor-commits mailing list