summaryrefslogtreecommitdiff
path: root/binary/data_handling/recv_data.py
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