From 310fb18aac972123e0b25e618978d4dce7031078 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Thu, 5 Feb 2015 15:24:32 +0100 Subject: fix #464 --- libmproxy/protocol/http.py | 6 +++--- libmproxy/protocol/tcp.py | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/libmproxy/protocol/http.py b/libmproxy/protocol/http.py index da7c4240..bebb4f7b 100644 --- a/libmproxy/protocol/http.py +++ b/libmproxy/protocol/http.py @@ -996,7 +996,7 @@ class HTTPHandler(ProtocolHandler): include_body=False ) break - except (tcp.NetLibDisconnect, http.HttpErrorConnClosed), v: + except (tcp.NetLibError, http.HttpErrorConnClosed), v: self.c.log( "error in server communication: %s" % repr(v), level="debug" @@ -1043,7 +1043,7 @@ class HTTPHandler(ProtocolHandler): self.c.client_conn.rfile, body_size_limit=self.c.config.body_size_limit ) - except tcp.NetLibDisconnect: + except tcp.NetLibError: # don't throw an error for disconnects that happen # before/between requests. return False @@ -1141,7 +1141,7 @@ class HTTPHandler(ProtocolHandler): message = repr(error) message_debug = None - if isinstance(error, tcp.NetLibDisconnect): + if isinstance(error, tcp.NetLibError): message = None message_debug = "TCP connection closed unexpectedly." elif "tlsv1 alert unknown ca" in message: diff --git a/libmproxy/protocol/tcp.py b/libmproxy/protocol/tcp.py index da0c9087..d2d21829 100644 --- a/libmproxy/protocol/tcp.py +++ b/libmproxy/protocol/tcp.py @@ -3,6 +3,7 @@ import select import socket from .primitives import ProtocolHandler from netlib.utils import cleanBin +from netlib.tcp import NetLibError class TCPHandler(ProtocolHandler): @@ -76,7 +77,8 @@ class TCPHandler(ProtocolHandler): ), "info" ) - dst.connection.send(contents) + # Do not use dst.connection.send here, which may raise OpenSSL-specific errors. + dst.send(contents) else: # socket.socket.send supports raw bytearrays/memoryviews if self.log: @@ -87,6 +89,6 @@ class TCPHandler(ProtocolHandler): "info" ) dst.connection.send(buf[:size]) - except socket.error as e: + except (socket.error, NetLibError) as e: self.c.log("TCP connection closed unexpectedly.", "debug") return -- cgit v1.2.3