aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/proxy
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2019-11-12 03:05:35 +0100
committerMaximilian Hils <git@maximilianhils.com>2019-11-23 01:06:23 +0100
commit0f868e992489eee54aadd7afc9a2a7212385f9be (patch)
tree2b456fbecf0273eff60ca601f77064ff06541c65 /mitmproxy/proxy
parentbbb7eb692f58ebfcf2fb3b0d6d20ec6dc60a99de (diff)
downloadmitmproxy-0f868e992489eee54aadd7afc9a2a7212385f9be.tar.gz
mitmproxy-0f868e992489eee54aadd7afc9a2a7212385f9be.tar.bz2
mitmproxy-0f868e992489eee54aadd7afc9a2a7212385f9be.zip
update cryptography
Diffstat (limited to 'mitmproxy/proxy')
-rw-r--r--mitmproxy/proxy/protocol/rawtcp.py11
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