diff options
author | Maximilian Hils <git@maximilianhils.com> | 2019-11-12 03:05:35 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2019-11-23 01:06:23 +0100 |
commit | 0f868e992489eee54aadd7afc9a2a7212385f9be (patch) | |
tree | 2b456fbecf0273eff60ca601f77064ff06541c65 /mitmproxy/proxy | |
parent | bbb7eb692f58ebfcf2fb3b0d6d20ec6dc60a99de (diff) | |
download | mitmproxy-0f868e992489eee54aadd7afc9a2a7212385f9be.tar.gz mitmproxy-0f868e992489eee54aadd7afc9a2a7212385f9be.tar.bz2 mitmproxy-0f868e992489eee54aadd7afc9a2a7212385f9be.zip |
update cryptography
Diffstat (limited to 'mitmproxy/proxy')
-rw-r--r-- | mitmproxy/proxy/protocol/rawtcp.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/mitmproxy/proxy/protocol/rawtcp.py b/mitmproxy/proxy/protocol/rawtcp.py index 0ec50594..00bba04c 100644 --- a/mitmproxy/proxy/protocol/rawtcp.py +++ b/mitmproxy/proxy/protocol/rawtcp.py @@ -29,13 +29,20 @@ class RawTCPLayer(base.Layer): server = self.server_conn.connection conns = [client, server] + # https://github.com/openssl/openssl/issues/6234 + for conn in conns: + if isinstance(conn, SSL.Connection) and hasattr(SSL._lib, "SSL_clear_mode"): + SSL._lib.SSL_clear_mode(conn._ssl, SSL._lib.SSL_MODE_AUTO_RETRY) + try: while not self.channel.should_exit.is_set(): r = mitmproxy.net.tcp.ssl_read_select(conns, 10) for conn in r: dst = server if conn == client else client - - size = conn.recv_into(buf, self.chunk_size) + try: + size = conn.recv_into(buf, self.chunk_size) + except (SSL.WantReadError, SSL.WantWriteError): + continue if not size: conns.remove(conn) # Shutdown connection to the other peer |