diff options
Diffstat (limited to 'libmproxy')
-rw-r--r-- | libmproxy/cmdline.py | 2 | ||||
-rw-r--r-- | libmproxy/console/__init__.py | 5 | ||||
-rw-r--r-- | libmproxy/console/flowview.py | 9 | ||||
-rw-r--r-- | libmproxy/console/grideditor.py | 2 | ||||
-rw-r--r-- | libmproxy/dump.py | 2 | ||||
-rw-r--r-- | libmproxy/encoding.py | 2 | ||||
-rw-r--r-- | libmproxy/flow.py | 6 | ||||
-rw-r--r-- | libmproxy/proxy.py | 5 | ||||
-rw-r--r-- | libmproxy/version.py | 2 |
9 files changed, 22 insertions, 13 deletions
diff --git a/libmproxy/cmdline.py b/libmproxy/cmdline.py index b76792cf..6b6c4241 100644 --- a/libmproxy/cmdline.py +++ b/libmproxy/cmdline.py @@ -124,7 +124,7 @@ def get_common_options(options): except ParseException, e: raise OptionException(e.message) try: - v = open(path, "r").read() + v = open(path, "rb").read() except IOError, e: raise OptionException("Could not read replace file: %s"%path) reps.append((patt, rex, v)) diff --git a/libmproxy/console/__init__.py b/libmproxy/console/__init__.py index fe75a047..ef799167 100644 --- a/libmproxy/console/__init__.py +++ b/libmproxy/console/__init__.py @@ -479,7 +479,7 @@ class ConsoleMaster(flow.FlowMaster): def _readflow(self, path): path = os.path.expanduser(path) try: - f = file(path, "r") + f = file(path, "rb") flows = list(flow.FlowReader(f).stream()) except (IOError, flow.FlowReadError), v: return True, v.strerror @@ -519,13 +519,14 @@ class ConsoleMaster(flow.FlowMaster): except: self.statusbar.message("Can't start editor: %s" % " ".join(c)) else: - data = open(name).read() + data = open(name,"rb").read() self.ui.start() os.unlink(name) return data def spawn_external_viewer(self, data, contenttype): if contenttype: + contenttype = contenttype.split(";")[0] ext = mimetypes.guess_extension(contenttype) or "" else: ext = "" diff --git a/libmproxy/console/flowview.py b/libmproxy/console/flowview.py index 8932b912..da5a6c65 100644 --- a/libmproxy/console/flowview.py +++ b/libmproxy/console/flowview.py @@ -16,7 +16,7 @@ import os, sys import urwid import common, grideditor, contentview -from .. import utils, flow +from .. import utils, flow, controller def _mkhelp(): text = [] @@ -341,7 +341,12 @@ class FlowView(common.WWrap): conn = self.flow.request else: if not self.flow.response: - self.flow.response = flow.Response(self.flow.request, 200, "OK", flow.ODictCaseless(), "", None) + self.flow.response = flow.Response( + self.flow.request, + self.flow.request.httpversion, + 200, "OK", flow.ODictCaseless(), "", None + ) + self.flow.response.reply = controller.DummyReply() conn = self.flow.response self.flow.backup() diff --git a/libmproxy/console/grideditor.py b/libmproxy/console/grideditor.py index 314d6e88..55f3ba0f 100644 --- a/libmproxy/console/grideditor.py +++ b/libmproxy/console/grideditor.py @@ -294,7 +294,7 @@ class GridEditor(common.WWrap): if p: try: p = os.path.expanduser(p) - d = file(p, "r").read() + d = file(p, "rb").read() self.walker.set_current_value(d, unescaped) self.walker._modified() except IOError, v: diff --git a/libmproxy/dump.py b/libmproxy/dump.py index b1022ef5..06c15c63 100644 --- a/libmproxy/dump.py +++ b/libmproxy/dump.py @@ -141,7 +141,7 @@ class DumpMaster(flow.FlowMaster): def _readflow(self, path): path = os.path.expanduser(path) try: - f = file(path, "r") + f = file(path, "rb") flows = list(flow.FlowReader(f).stream()) except (IOError, flow.FlowReadError), v: raise DumpError(v.strerror) diff --git a/libmproxy/encoding.py b/libmproxy/encoding.py index 9f8acbe9..4b80d38c 100644 --- a/libmproxy/encoding.py +++ b/libmproxy/encoding.py @@ -54,7 +54,7 @@ def decode_gzip(content): gfile = gzip.GzipFile(fileobj=cStringIO.StringIO(content)) try: return gfile.read() - except IOError: + except (IOError, EOFError): return None def encode_gzip(content): diff --git a/libmproxy/flow.py b/libmproxy/flow.py index 1d15029b..10c5da5d 100644 --- a/libmproxy/flow.py +++ b/libmproxy/flow.py @@ -542,7 +542,7 @@ class Request(HTTPMsg): headers["host"] = [utils.hostport(self.scheme, self.host, self.port)] content = self.content if content: - headers["content-length"] = [str(len(content))] + headers["Content-Length"] = [str(len(content))] else: content = "" if self.close: @@ -737,7 +737,7 @@ class Response(HTTPMsg): ['proxy-connection', 'transfer-encoding'] ) if self.content: - headers["content-length"] = [str(len(self.content))] + headers["Content-Length"] = [str(len(self.content))] proto = "HTTP/%s.%s %s %s"%(self.httpversion[0], self.httpversion[1], self.code, str(self.msg)) data = (proto, str(headers)) return FMT%data @@ -1548,7 +1548,7 @@ class FlowMaster(controller.Master): if f.request: f.request._set_replay() if f.request.content: - f.request.headers["content-length"] = [str(len(f.request.content))] + f.request.headers["Content-Length"] = [str(len(f.request.content))] f.response = None f.error = None self.process_new_request(f) diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py index 283072ab..8dfae77a 100644 --- a/libmproxy/proxy.py +++ b/libmproxy/proxy.py @@ -88,6 +88,9 @@ class ServerConnection(tcp.TCPClient): def terminate(self): try: self.wfile.flush() + except IOError: + pass + try: self.connection.close() except IOError: pass @@ -213,7 +216,7 @@ class ProxyHandler(tcp.BaseHandler): return else: request_reply = self.channel.ask(request) - if request_reply == KILL: + if request_reply is None or request_reply == KILL: return elif isinstance(request_reply, flow.Response): request = False diff --git a/libmproxy/version.py b/libmproxy/version.py index 3dfc9409..b3a9bd95 100644 --- a/libmproxy/version.py +++ b/libmproxy/version.py @@ -1,4 +1,4 @@ -IVERSION = (0, 9) +IVERSION = (0, 9, 1) VERSION = ".".join(str(i) for i in IVERSION) NAME = "mitmproxy" NAMEVERSION = NAME + " " + VERSION |