File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ Fixed error handling after 100-continue so server sends 500 response instead of disconnecting -- by :user: `Dreamsorcerer `.
Original file line number Diff line number Diff line change @@ -341,6 +341,8 @@ async def _default_expect_handler(request: Request) -> None:
341341 if request .version == HttpVersion11 :
342342 if expect .lower () == "100-continue" :
343343 await request .writer .write (b"HTTP/1.1 100 Continue\r \n \r \n " )
344+ # Reset output_size as we haven't started the main body yet.
345+ request .writer .output_size = 0
344346 else :
345347 raise HTTPExpectationFailed (text = "Unknown Expect: %s" % expect )
346348
Original file line number Diff line number Diff line change 44import pathlib
55import socket
66import zlib
7- from typing import Any , Optional
7+ from typing import Any , NoReturn , Optional
88from unittest import mock
99
1010import pytest
@@ -121,6 +121,20 @@ async def handler(request):
121121 assert resp .status == 500
122122
123123
124+ async def test_handler_returns_not_response_after_100expect (
125+ aiohttp_server , aiohttp_client
126+ ) -> None :
127+ async def handler (request : web .Request ) -> NoReturn :
128+ raise Exception ("foo" )
129+
130+ app = web .Application ()
131+ app .router .add_get ("/" , handler )
132+ client = await aiohttp_client (app )
133+
134+ async with client .get ("/" , expect100 = True ) as resp :
135+ assert resp .status == 500
136+
137+
124138async def test_head_returns_empty_body (aiohttp_client ) -> None :
125139 async def handler (request ):
126140 return web .Response (body = b"test" )
You can’t perform that action at this time.
0 commit comments