blob: a329532eb6008b6067a9ab535bb7e8034a10f3b1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import pickle
import zlib
def recv_data(conn, settings, callback=None):
encryption, headersize = settings
mode = [True, 0, b'']
while True:
client_msg = conn.recv(81920)
if mode[0]:
mode[1] = int(client_msg[:headersize])
mode[0] = False
mode[2] += client_msg
if len(mode[2])-headersize == mode[1]:
decrypted_msg = encryption.do_decrypt(mode[2][headersize:])
decompressed_msg = zlib.decompress(decrypted_msg)
client_msg = pickle.loads(decompressed_msg)
if callback:
callback(conn, client_msg)
return client_msg
|