aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2016-09-07 12:05:05 +1200
committerAldo Cortesi <aldo@nullcube.com>2016-09-07 12:11:10 +1200
commit6c970cfd4c61defed0bfea08b5c653c5a7c704ca (patch)
treee393f49f9a0d93648468e7d75129bdf2794d080d
parent9abdd3a8d9189ca300221e5acde4a8190804abd7 (diff)
downloadmitmproxy-6c970cfd4c61defed0bfea08b5c653c5a7c704ca.tar.gz
mitmproxy-6c970cfd4c61defed0bfea08b5c653c5a7c704ca.tar.bz2
mitmproxy-6c970cfd4c61defed0bfea08b5c653c5a7c704ca.zip
Fix byte/string comparison error in server playback
-rw-r--r--mitmproxy/builtins/serverplayback.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/mitmproxy/builtins/serverplayback.py b/mitmproxy/builtins/serverplayback.py
index 6b05173b..fe56d68b 100644
--- a/mitmproxy/builtins/serverplayback.py
+++ b/mitmproxy/builtins/serverplayback.py
@@ -2,6 +2,7 @@ from __future__ import absolute_import, print_function, division
from six.moves import urllib
import hashlib
+from netlib import strutils
from mitmproxy import exceptions, flow, ctx
@@ -38,10 +39,13 @@ class ServerPlayback(object):
if not self.options.replay_ignore_content:
form_contents = r.urlencoded_form or r.multipart_form
if self.options.replay_ignore_payload_params and form_contents:
- key.extend(
- p for p in form_contents.items(multi=True)
- if p[0] not in self.options.replay_ignore_payload_params
- )
+ params = [
+ strutils.always_bytes(i)
+ for i in self.options.replay_ignore_payload_params
+ ]
+ for p in form_contents.items(multi=True):
+ if p[0] not in params:
+ key.append(p)
else:
key.append(str(r.raw_content))
@@ -63,7 +67,9 @@ class ServerPlayback(object):
v = r.headers.get(i)
headers.append((i, v))
key.append(headers)
- return hashlib.sha256(repr(key).encode("utf8", "surrogateescape")).digest()
+ return hashlib.sha256(
+ repr(key).encode("utf8", "surrogateescape")
+ ).digest()
def next_flow(self, request):
"""