mirror of
https://github.com/kuitoi/kuitoi-Server.git
synced 2025-08-18 00:35:36 +00:00
Fix recv
This commit is contained in:
parent
6242ff4129
commit
f71958a0cc
@ -17,19 +17,15 @@ class TCPServer:
|
|||||||
self.Core = core
|
self.Core = core
|
||||||
self.host = host
|
self.host = host
|
||||||
self.port = port
|
self.port = port
|
||||||
|
self.loop = asyncio.get_event_loop()
|
||||||
|
|
||||||
async def recv(self, client):
|
async def recv(self, client):
|
||||||
if not client.is_disconnected():
|
# if not client.is_disconnected():
|
||||||
self.log.debug(f"Client with {client.nick}({client.cid}) disconnected")
|
# self.log.debug(f"Client with {client.nick}({client.cid}) disconnected")
|
||||||
return
|
# return
|
||||||
|
|
||||||
header = await client.loop.sock_recv(client.socket, 4) # header: 4 bytes
|
header = await client.reader.read(4) # header: 4 bytes
|
||||||
data = b""
|
data = await client.reader.read(101 * MB)
|
||||||
while True:
|
|
||||||
chunk = await client.loop.sock_recv(client.socket, 1)
|
|
||||||
if not chunk:
|
|
||||||
break
|
|
||||||
data += chunk
|
|
||||||
|
|
||||||
int_header = 0
|
int_header = 0
|
||||||
for i in range(len(header)):
|
for i in range(len(header)):
|
||||||
@ -37,16 +33,15 @@ class TCPServer:
|
|||||||
self.log.debug(f"header: `{header}`; int_header: `{int_header}`; data: `{data}`;")
|
self.log.debug(f"header: `{header}`; int_header: `{int_header}`; data: `{data}`;")
|
||||||
|
|
||||||
if int_header <= 0:
|
if int_header <= 0:
|
||||||
client.kick("Invalid packet - header negative")
|
await client.kick("Invalid packet - header negative")
|
||||||
return
|
return
|
||||||
|
|
||||||
if not int_header < 100 * MB:
|
if not int_header < 100 * MB:
|
||||||
client.kick("Header size limit exceeded")
|
await client.kick("Header size limit exceeded")
|
||||||
self.log.warn(f"Client {client.nick}({client.cid}) sent header of >100MB - "
|
self.log.warn(f"Client {client.nick}({client.cid}) sent header of >100MB - "
|
||||||
f"assuming malicious intent and disconnecting the client.")
|
f"assuming malicious intent and disconnecting the client.")
|
||||||
return
|
return
|
||||||
|
|
||||||
# TODO: read Data
|
|
||||||
if len(data) != int_header:
|
if len(data) != int_header:
|
||||||
self.log.debug(f"WARN Expected to read {int_header} bytes, instead got {len(data)}")
|
self.log.debug(f"WARN Expected to read {int_header} bytes, instead got {len(data)}")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user