aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/flow.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2011-03-11 15:16:31 +1300
committerAldo Cortesi <aldo@nullcube.com>2011-03-11 15:16:31 +1300
commit9f16a84a9e771dbbc3314daafaf63449de73d3eb (patch)
treea3e610eb6e629bf918d21cd9c22061ac487f0e36 /libmproxy/flow.py
parent7d85db0da31186a5a80d3a925ab6382f6e5b42f9 (diff)
downloadmitmproxy-9f16a84a9e771dbbc3314daafaf63449de73d3eb.tar.gz
mitmproxy-9f16a84a9e771dbbc3314daafaf63449de73d3eb.tar.bz2
mitmproxy-9f16a84a9e771dbbc3314daafaf63449de73d3eb.zip
Make mitmdump handle invalid serialized data gracefully.
Diffstat (limited to 'libmproxy/flow.py')
-rw-r--r--libmproxy/flow.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/libmproxy/flow.py b/libmproxy/flow.py
index 60a6ebd2..d555c926 100644
--- a/libmproxy/flow.py
+++ b/libmproxy/flow.py
@@ -560,6 +560,10 @@ class FlowWriter:
s = json.dumps(d)
self.ns.write(s)
+class FlowReadError(Exception):
+ @property
+ def strerror(self):
+ return self.args[0]
class FlowReader:
def __init__(self, fo):
@@ -570,7 +574,10 @@ class FlowReader:
"""
Yields Flow objects from the dump.
"""
- for i in self.ns:
- data = json.loads(i)
- yield Flow.from_state(data)
+ try:
+ for i in self.ns:
+ data = json.loads(i)
+ yield Flow.from_state(data)
+ except netstring.DecoderError:
+ raise FlowReadError("Invalid data format.")