Skip to content
Snippets Groups Projects
Commit dab4e40d authored by Capstone 2023's avatar Capstone 2023
Browse files

Lowered frame size for initial websocket frame.

parent ab5e8314
Branches
No related tags found
No related merge requests found
......@@ -24,7 +24,7 @@ def construct_frame_header(kind='text', final=False, length=0, use_mask=True):
B1 = (final << 7) | opcode
frame_extra_length = b''
small_length = length
if length > 2**64-1:
if length > 2**63-1:
raise Exception(f'Frames cannot have a payload this big, max is a 64 bit unsigned integer, and this number is: {length}')
elif length > 2**16-1:
frame_extra_length= struct.pack('!Q', length)
......@@ -54,11 +54,13 @@ def get_frame_header(data, ):
return header, data
length_data, rest_of_data = rest_of_data[:2], rest_of_data[2:]
length = struct.unpack('!H', length_data)[0]
length -= 2
elif small_length == 127:
if len(rest_of_data) < 8:
return header, data
length_data, rest_of_data = rest_of_data[:8], rest_of_data[8:]
length = struct.unpack('!Q', length_data)[0]
length -= 8
else:
length = small_length
......@@ -67,6 +69,7 @@ def get_frame_header(data, ):
if len(rest_of_data) < 4:
return header, data
mask, rest_of_data = rest_of_data[:4], rest_of_data[4:]
length -= 4
header = {'length': length, 'finish': finish, 'opcode': opcode, 'mask': mask}
......@@ -76,6 +79,8 @@ def get_frame_header(data, ):
return header, rest_of_data
# About 3GB:
FRAME_LENGTH = (2**34 // 5) # 2**63-1
class AmigosConnectionClosed(Exception):
pass
......@@ -142,7 +147,7 @@ class AmigosRPC:
# Pretent this is pretty much an infinitely long frame (amigos rpc)
head = self._recieve_http_header()
frame_header, mask = construct_frame_header(kind='binary', final=True, length=2**64-1)
frame_header, mask = construct_frame_header(kind='binary', final=True, length=FRAME_LENGTH)
self.sock.send(frame_header)
self._recieve_websock_header()
......@@ -168,7 +173,7 @@ class AmigosRPC:
self.sock.send(send_this)
self._recieve_websock_header()
frame_header, mask = construct_frame_header(kind='binary', final=True, length=2**64-1)
frame_header, mask = construct_frame_header(kind='binary', final=True, length=FRAME_LENGTH)
self.sock.send(frame_header)
def accept(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment