Skip to content

Commit 589e6cb

Browse files
author
FuNK3Y
committed
python-ecosys/aiohttp: Use readexactly.
Signed-off-by: FuNK3Y <fun__key@hotmail.com>
1 parent 5c0467a commit 589e6cb

File tree

2 files changed

+10
-16
lines changed

2 files changed

+10
-16
lines changed

python-ecosys/aiohttp/aiohttp/__init__.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,8 @@ def _decode(self, data):
4444
async def read(self, sz=-1):
4545
if sz == -1:
4646
return self._decode(await self.content.read(sz))
47-
data = bytearray()
48-
while sz > 0:
49-
data.extend(await self.content.read(sz))
50-
sz -= len(data)
51-
return self._decode(data)
47+
else:
48+
return self._decode(await self.content.readexactly(sz))
5249

5350
async def text(self, encoding="utf-8"):
5451
return (await self.read(int(self._get_header("content-length", -1)))).decode(encoding)
@@ -72,13 +69,13 @@ async def read(self, sz=4 * 1024 * 1024):
7269
self.chunk_size = int(l, 16)
7370
if self.chunk_size == 0:
7471
# End of message
75-
sep = await self.content.read(2)
72+
sep = await self.content.readexactly(2)
7673
assert sep == b"\r\n"
7774
return b""
78-
data = await self.content.read(min(sz, self.chunk_size))
75+
data = await self.content.readexactly(min(sz, self.chunk_size))
7976
self.chunk_size -= len(data)
8077
if self.chunk_size == 0:
81-
sep = await self.content.read(2)
78+
sep = await self.content.readexactly(2)
8279
assert sep == b"\r\n"
8380
return self._decode(data)
8481

python-ecosys/aiohttp/aiohttp/aiohttp_ws.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -189,24 +189,21 @@ async def close(self):
189189
await self.send(b"", self.CLOSE)
190190

191191
async def _read_frame(self):
192-
header = await self.reader.read(2)
192+
header = await self.reader.readexactly(2)
193193
if len(header) != 2: # pragma: no cover
194194
# raise OSError(32, "Websocket connection closed")
195195
opcode = self.CLOSE
196196
payload = b""
197197
return opcode, payload
198198
fin, opcode, has_mask, length = self._parse_frame_header(header)
199199
if length == 126: # Magic number, length header is 2 bytes
200-
(length,) = struct.unpack("!H", await self.reader.read(2))
200+
(length,) = struct.unpack("!H", await self.reader.readexactly(2))
201201
elif length == 127: # Magic number, length header is 8 bytes
202-
(length,) = struct.unpack("!Q", await self.reader.read(8))
202+
(length,) = struct.unpack("!Q", await self.reader.readexactly(8))
203203

204204
if has_mask: # pragma: no cover
205-
mask = await self.reader.read(4)
206-
payload = bytearray()
207-
while length > 0:
208-
payload.extend(await self.reader.read(length))
209-
length -= len(payload)
205+
mask = await self.reader.readexactly(4)
206+
payload = await self.reader.readexactly(length)
210207
if has_mask: # pragma: no cover
211208
payload = bytes(x ^ mask[i % 4] for i, x in enumerate(payload))
212209
return opcode, payload

0 commit comments

Comments
 (0)