diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2015-04-24 15:23:00 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2015-04-24 15:23:00 +1200 |
commit | def93ea8cae69676a91b01e149e8a406fa03eacd (patch) | |
tree | a63986489656694fdbc4a0eb1083f43ca2810c71 /netlib/websockets.py | |
parent | f22bc0b4c74776bcc312fed1f4ceede83f869a6e (diff) | |
download | mitmproxy-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.py | 24 |
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)), |