aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2015-05-01 10:31:20 +1200
committerAldo Cortesi <aldo@nullcube.com>2015-05-01 10:31:20 +1200
commit08b2e2a6a98fd175e1b49d62dffde34e91c77b1c (patch)
treed3d2755ce7a2d6daca5087246e8f3b4d0c61e575 /netlib
parent7d9e38ffb10e92b5127f203c2d8a524da8698b00 (diff)
downloadmitmproxy-08b2e2a6a98fd175e1b49d62dffde34e91c77b1c.tar.gz
mitmproxy-08b2e2a6a98fd175e1b49d62dffde34e91c77b1c.tar.bz2
mitmproxy-08b2e2a6a98fd175e1b49d62dffde34e91c77b1c.zip
websockets: more flexible masking interface.
Diffstat (limited to 'netlib')
-rw-r--r--netlib/websockets.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/netlib/websockets.py b/netlib/websockets.py
index 84eb03ba..0ad0e294 100644
--- a/netlib/websockets.py
+++ b/netlib/websockets.py
@@ -48,13 +48,18 @@ class Masker:
self.masks = [utils.bytes_to_int(byte) for byte in key]
self.offset = 0
- def __call__(self, data):
+ def mask(self, offset, data):
result = ""
for c in data:
- result += chr(ord(c) ^ self.masks[self.offset % 4])
- self.offset += 1
+ result += chr(ord(c) ^ self.masks[offset % 4])
+ offset += 1
return result
+ def __call__(self, data):
+ ret = self.mask(self.offset, data)
+ self.offset += len(ret)
+ return ret
+
def client_handshake_headers(key=None, version=VERSION):
"""