aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy
diff options
context:
space:
mode:
Diffstat (limited to 'libmproxy')
-rw-r--r--libmproxy/protocol/primitives.py17
-rw-r--r--libmproxy/proxy/primitives.py2
-rw-r--r--libmproxy/proxy/server.py10
3 files changed, 14 insertions, 15 deletions
diff --git a/libmproxy/protocol/primitives.py b/libmproxy/protocol/primitives.py
index 81730616..dfe6371e 100644
--- a/libmproxy/protocol/primitives.py
+++ b/libmproxy/protocol/primitives.py
@@ -1,8 +1,9 @@
from __future__ import absolute_import
+import copy
+import netlib.tcp
from .. import stateobject, utils, version
from ..proxy.primitives import AddressPriority
from ..proxy.connection import ClientConnection, ServerConnection
-import copy
KILL = 0 # const for killed requests
@@ -161,16 +162,12 @@ class TemporaryServerChangeMixin(object):
without any need to expose the ConnectionHandler to the Flow.
"""
def change_server(self, address, ssl):
+ address = netlib.tcp.Address.wrap(address)
if address == self.c.server_conn.address():
return
priority = AddressPriority.MANUALLY_CHANGED
- if self.c.server_conn.priority > priority:
- self.log("Attempt to change server address, "
- "but priority is too low (is: %s, got: %s)" % (self.server_conn.priority, priority))
- return
-
- self.log("Temporarily change server connection: %s:%s -> %s:%s" % (
+ self.c.log("Temporarily change server connection: %s:%s -> %s:%s" % (
self.c.server_conn.address.host,
self.c.server_conn.address.port,
address.host,
@@ -191,11 +188,11 @@ class TemporaryServerChangeMixin(object):
if not hasattr(self, "_backup_server_conn"):
return
- self.log("Restore original server connection: %s:%s -> %s:%s" % (
+ self.c.log("Restore original server connection: %s:%s -> %s:%s" % (
self.c.server_conn.address.host,
self.c.server_conn.address.port,
- self._backup_server_conn.host,
- self._backup_server_conn.port
+ self._backup_server_conn.address.host,
+ self._backup_server_conn.address.port
))
self.c.del_server_connection()
diff --git a/libmproxy/proxy/primitives.py b/libmproxy/proxy/primitives.py
index 8ae4b848..f6a02e51 100644
--- a/libmproxy/proxy/primitives.py
+++ b/libmproxy/proxy/primitives.py
@@ -25,7 +25,7 @@ class UpstreamServerResolver(object):
"""
Returns the address of the server to connect to.
"""
- raise NotImplementedError
+ raise NotImplementedError # pragma: nocover
class ConstUpstreamServerResolver(UpstreamServerResolver):
diff --git a/libmproxy/proxy/server.py b/libmproxy/proxy/server.py
index a5b95fb7..dc502e1c 100644
--- a/libmproxy/proxy/server.py
+++ b/libmproxy/proxy/server.py
@@ -90,13 +90,15 @@ class ConnectionHandler:
continue
# FIXME: Do we want to persist errors?
- except (ProxyError, tcp.NetLibError), e:
+ except (ProxyError, tcp.NetLibError, IOError), e:
handle_error(self.conntype, self, e)
except Exception, e:
- self.log(e.__class__)
- import traceback
+ import traceback, sys
self.log(traceback.format_exc())
- self.log(str(e))
+ print >> sys.stderr, traceback.format_exc()
+ print >> sys.stderr, "mitmproxy has crashed!"
+ print >> sys.stderr, "Please lodge a bug report at: https://github.com/mitmproxy/mitmproxy"
+ raise e
self.del_server_connection()
self.log("clientdisconnect")