aboutsummaryrefslogtreecommitdiffstats
path: root/netlib/websockets.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2015-04-24 15:23:00 +1200
committerAldo Cortesi <aldo@nullcube.com>2015-04-24 15:23:00 +1200
commitdef93ea8cae69676a91b01e149e8a406fa03eacd (patch)
treea63986489656694fdbc4a0eb1083f43ca2810c71 /netlib/websockets.py
parentf22bc0b4c74776bcc312fed1f4ceede83f869a6e (diff)
downloadmitmproxy-def93ea8cae69676a91b01e149e8a406fa03eacd.tar.gz
mitmproxy-def93ea8cae69676a91b01e149e8a406fa03eacd.tar.bz2
mitmproxy-def93ea8cae69676a91b01e149e8a406fa03eacd.zip
websockets: remove validation
We don't really need this any more. The interface is much less error prone because bit flags are no longer integers, we have a range check on opcode on header instantiation, and we've deferred length code calculation and so forth into the byte render methods.
Diffstat (limited to 'netlib/websockets.py')
-rw-r--r--netlib/websockets.py24
1 files changed, 4 insertions, 20 deletions
diff --git a/netlib/websockets.py b/netlib/websockets.py
index 016e75c2..b1afa620 100644
--- a/netlib/websockets.py
+++ b/netlib/websockets.py
@@ -115,6 +115,8 @@ def create_server_nonce(client_nonce):
DEFAULT = object()
+
+
class FrameHeader:
def __init__(
self,
@@ -128,6 +130,8 @@ class FrameHeader:
mask = DEFAULT,
length_code = DEFAULT
):
+ if not 0 <= opcode < 2 ** 4:
+ raise ValueError("opcode must be 0-16")
self.opcode = opcode
self.payload_length = payload_length
self.fin = fin
@@ -275,26 +279,6 @@ class Frame(object):
masking_key = masking_key,
)
- def is_valid(self):
- """
- Validate websocket frame invariants, call at anytime to ensure the
- Frame has not been corrupted.
- """
- constraints = [
- 0 <= self.header.fin <= 1,
- 0 <= self.header.rsv1 <= 1,
- 0 <= self.header.rsv2 <= 1,
- 0 <= self.header.rsv3 <= 1,
- 1 <= self.header.opcode <= 4,
- 0 <= self.header.mask <= 1,
- #1 <= self.payload_length_code <= 127,
- 1 <= len(self.header.masking_key) <= 4 if self.header.mask else True,
- self.header.masking_key is not None if self.header.mask else True
- ]
- if not all(constraints):
- return False
- return True
-
def human_readable(self):
return "\n".join([
("fin - " + str(self.header.fin)),