Skip to content

Commit 231c0b7

Browse files
committed
asgi: get valid/invalid http tests to pass
* change asgi HTTP error exceptions to match base sync worker * use StopAsyncIteration in async def * override config in cases tests/test_asgi.py::MockConfig has non-default
1 parent f0952e5 commit 231c0b7

3 files changed

Lines changed: 12 additions & 4 deletions

File tree

gunicorn/asgi/message.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
from gunicorn.http.errors import (
1818
InvalidHeader, InvalidHeaderName, NoMoreData,
19+
ChunkMissingTerminator, InvalidChunkSize,
1920
InvalidRequestLine, InvalidRequestMethod, InvalidHTTPVersion,
2021
LimitRequestLine, LimitRequestHeaders,
2122
UnsupportedTransferCoding, ObsoleteFolding,
@@ -177,7 +178,7 @@ async def _read_into(self, buf, stop=False):
177178
data = await self.unreader.read()
178179
if not data:
179180
if stop:
180-
raise StopIteration()
181+
raise StopAsyncIteration
181182
raise NoMoreData(bytes(buf))
182183
buf.extend(data)
183184

@@ -628,9 +629,9 @@ async def _chunked_body_reader(self):
628629
chunk_size = chunk_size.rstrip(b" \t")
629630

630631
if any(n not in b"0123456789abcdefABCDEF" for n in chunk_size):
631-
raise InvalidHeader("Invalid chunk size")
632+
raise InvalidChunkSize(chunk_size)
632633
if len(chunk_size) == 0:
633-
raise InvalidHeader("Invalid chunk size")
634+
raise InvalidChunkSize(chunk_size)
634635

635636
chunk_size = int(chunk_size, 16)
636637

@@ -658,7 +659,7 @@ async def _chunked_body_reader(self):
658659
break
659660
crlf += more
660661
if crlf != b"\r\n":
661-
raise InvalidHeader("Missing chunk terminator")
662+
raise ChunkMissingTerminator(crlf)
662663

663664
async def _read_chunk_size_line(self):
664665
"""Read a chunk size line."""

tests/requests/invalid/006.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1+
from gunicorn.config import Config
12
from gunicorn.http.errors import LimitRequestLine
3+
cfg = Config()
4+
cfg.set("limit_request_line", 4094)
25
request = LimitRequestLine

tests/requests/valid/040.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
from gunicorn.config import Config
2+
cfg = Config()
3+
cfg.set("header_map", "drop")
4+
15
request = {
26
"method": "GET",
37
"uri": uri("/keep/same/as?invalid/040"),

0 commit comments

Comments
 (0)