Skip to content

Commit 5298d46

Browse files
Update micropython aiohttp to 0.0.6
1 parent bbc04cf commit 5298d46

2 files changed

Lines changed: 13 additions & 33 deletions

File tree

internal_filesystem/lib/aiohttp/__init__.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ def _get_header(self, keyname, default):
2727
def _decode(self, data):
2828
c_encoding = self._get_header("content-encoding", None)
2929
if c_encoding in ("gzip", "deflate", "gzip,deflate"):
30-
print(f"__init__.py of aiohttp has to decompress {c_encoding}")
3130
try:
3231
import deflate
3332
import io
@@ -43,7 +42,9 @@ def _decode(self, data):
4342
return data
4443

4544
async def read(self, sz=-1):
46-
return self._decode(await self.content.read(sz))
45+
return self._decode(
46+
await (self.content.read(sz) if sz == -1 else self.content.readexactly(sz))
47+
)
4748

4849
async def text(self, encoding="utf-8"):
4950
return (await self.read(int(self._get_header("content-length", -1)))).decode(encoding)
@@ -60,20 +61,20 @@ def __init__(self, reader):
6061
self.content = reader
6162
self.chunk_size = 0
6263

63-
async def read(self, sz=2 * 1024 * 1024): # reduced from 4 to 2MB
64+
async def read(self, sz=4 * 1024 * 1024):
6465
if self.chunk_size == 0:
6566
l = await self.content.readline()
6667
l = l.split(b";", 1)[0]
6768
self.chunk_size = int(l, 16)
6869
if self.chunk_size == 0:
6970
# End of message
70-
sep = await self.content.read(2)
71+
sep = await self.content.readexactly(2)
7172
assert sep == b"\r\n"
7273
return b""
73-
data = await self.content.read(min(sz, self.chunk_size))
74+
data = await self.content.readexactly(min(sz, self.chunk_size))
7475
self.chunk_size -= len(data)
7576
if self.chunk_size == 0:
76-
sep = await self.content.read(2)
77+
sep = await self.content.readexactly(2)
7778
assert sep == b"\r\n"
7879
return self._decode(data)
7980

@@ -137,7 +138,6 @@ async def _request(self, method, url, data=None, json=None, ssl=None, params=Non
137138
break
138139

139140
if chunked:
140-
print("__init__.py of aiohttp received chunked, creating ChunkedClientResponse")
141141
resp = ChunkedClientResponse(reader)
142142
else:
143143
resp = ClientResponse(reader)

internal_filesystem/lib/aiohttp/aiohttp_ws.py

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,6 @@ def _process_websocket_frame(self, opcode, payload):
9696
return self.PONG, payload
9797
elif opcode == self.PONG: # pragma: no branch
9898
return None, None
99-
else:
100-
print(f"Warning: aiohttp_ws.py received unsupported opcode {opcode} with data {payload}")
10199
return None, payload
102100

103101
@classmethod
@@ -191,39 +189,21 @@ async def close(self):
191189
await self.send(b"", self.CLOSE)
192190

193191
async def _read_frame(self):
194-
header = await self.reader.read(2)
192+
header = await self.reader.readexactly(2)
195193
if len(header) != 2: # pragma: no cover
196194
# raise OSError(32, "Websocket connection closed")
197195
opcode = self.CLOSE
198196
payload = b""
199197
return opcode, payload
200198
fin, opcode, has_mask, length = self._parse_frame_header(header)
201199
if length == 126: # Magic number, length header is 2 bytes
202-
length_data = await self.reader.read(2)
203-
if len(length_data) != 2:
204-
print("WARNING: aiohttp_ws.py failed to read 2-byte length, closing")
205-
return self.CLOSE, b""
206-
(length,) = struct.unpack("!H", length_data)
200+
(length,) = struct.unpack("!H", await self.reader.readexactly(2))
207201
elif length == 127: # Magic number, length header is 8 bytes
208-
length_data = await self.reader.read(8)
209-
if len(length_data) != 8:
210-
print("WARNING: aiohttp_ws.py failed to read 8-byte length, closing")
211-
return self.CLOSE, b""
212-
(length,) = struct.unpack("!Q", length_data)
202+
(length,) = struct.unpack("!Q", await self.reader.readexactly(8))
203+
213204
if has_mask: # pragma: no cover
214-
mask = await self.reader.read(4)
215-
if len(mask) != 4:
216-
print("WARNING: aiohttp_ws.py failed to read mask, closing")
217-
return self.CLOSE, b""
218-
payload = b""
219-
remaining_length = length
220-
while remaining_length > 0:
221-
chunk = await self.reader.read(remaining_length)
222-
if not chunk: # Connection closed or error
223-
print(f"WARNING: aiohttp_ws.py connection closed while reading payload, got {len(payload)}/{length} bytes, closing")
224-
return self.CLOSE, b""
225-
payload += chunk
226-
remaining_length -= len(chunk)
205+
mask = await self.reader.readexactly(4)
206+
payload = await self.reader.readexactly(length)
227207
if has_mask: # pragma: no cover
228208
payload = bytes(x ^ mask[i % 4] for i, x in enumerate(payload))
229209
return opcode, payload

0 commit comments

Comments
 (0)