aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/proxy/server.py
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2015-09-11 02:17:04 +0200
committerMaximilian Hils <git@maximilianhils.com>2015-09-11 02:17:04 +0200
commitdd414e485212e3cab612a66d5d858c1a766ace04 (patch)
tree0dd5dd8a4f0d963f5ba43884918bf42f9991c931 /libmproxy/proxy/server.py
parent40ce06e780aeb90a239c7af8b5231214d5d9f9d9 (diff)
downloadmitmproxy-dd414e485212e3cab612a66d5d858c1a766ace04.tar.gz
mitmproxy-dd414e485212e3cab612a66d5d858c1a766ace04.tar.bz2
mitmproxy-dd414e485212e3cab612a66d5d858c1a766ace04.zip
better error messages, remove error cause
Diffstat (limited to 'libmproxy/proxy/server.py')
-rw-r--r--libmproxy/proxy/server.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/libmproxy/proxy/server.py b/libmproxy/proxy/server.py
index c00bb815..88448172 100644
--- a/libmproxy/proxy/server.py
+++ b/libmproxy/proxy/server.py
@@ -8,7 +8,7 @@ import six
from netlib import tcp
from netlib.http.http1 import HTTP1Protocol
from netlib.tcp import NetLibError
-from ..exceptions import ProtocolException, ServerException
+from ..exceptions import ProtocolException, ServerException, ClientHandshakeException
from ..protocol import Kill
from ..models import ClientConnection, make_error_response
from .modes import HttpUpstreamProxy, HttpProxy, ReverseProxy, TransparentProxy, Socks5Proxy
@@ -42,7 +42,7 @@ class ProxyServer(tcp.TCPServer):
except socket.error as e:
six.reraise(
ServerException,
- ServerException('Error starting proxy server: ' + repr(e), e),
+ ServerException('Error starting proxy server: ' + repr(e)),
sys.exc_info()[2]
)
self.channel = None
@@ -121,8 +121,18 @@ class ConnectionHandler(object):
except Kill:
self.log("Connection killed", "info")
except ProtocolException as e:
- self.log(repr(e), "info")
- self.log(traceback.format_exc(), "debug")
+
+ if isinstance(e, ClientHandshakeException):
+ self.log(
+ "Client Handshake failed. "
+ "The client may not trust the proxy's certificate for {}.".format(e.server),
+ "error"
+ )
+ self.log(repr(e), "debug")
+ else:
+ self.log(repr(e), "error")
+
+ self.log(traceback.format_exc(), "debug")
# If an error propagates to the topmost level,
# we send an HTTP error response, which is both
# understandable by HTTP clients and humans.