mirror of
https://github.com/python/cpython
synced 2024-10-16 21:24:34 +00:00
Issue #26586: Merge excessive HTTP header handling from 3.5
This commit is contained in:
commit
b93e4b2480
|
@ -338,6 +338,13 @@ def parse_request(self):
|
|||
HTTPStatus.BAD_REQUEST,
|
||||
"Line too long")
|
||||
return False
|
||||
except http.client.HTTPException as err:
|
||||
self.send_error(
|
||||
HTTPStatus.REQUEST_HEADER_FIELDS_TOO_LARGE,
|
||||
"Too many headers",
|
||||
str(err)
|
||||
)
|
||||
return False
|
||||
|
||||
conntype = self.headers.get('Connection', "")
|
||||
if conntype.lower() == 'close':
|
||||
|
|
|
@ -859,6 +859,13 @@ def test_header_length(self):
|
|||
self.assertFalse(self.handler.get_called)
|
||||
self.assertEqual(self.handler.requestline, 'GET / HTTP/1.1')
|
||||
|
||||
def test_too_many_headers(self):
|
||||
result = self.send_typical_request(
|
||||
b'GET / HTTP/1.1\r\n' + b'X-Foo: bar\r\n' * 101 + b'\r\n')
|
||||
self.assertEqual(result[0], b'HTTP/1.1 431 Too many headers\r\n')
|
||||
self.assertFalse(self.handler.get_called)
|
||||
self.assertEqual(self.handler.requestline, 'GET / HTTP/1.1')
|
||||
|
||||
def test_close_connection(self):
|
||||
# handle_one_request() should be repeatedly called until
|
||||
# it sets close_connection
|
||||
|
|
|
@ -237,6 +237,10 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #26586: In http.server, respond with "413 Request header fields too
|
||||
large" if there are too many header fields to parse, rather than killing
|
||||
the connection and raising an unhandled exception. Patch by Xiang Zhang.
|
||||
|
||||
- Issue #26676: Added missing XMLPullParser to ElementTree.__all__.
|
||||
|
||||
- Issue #22854: Change BufferedReader.writable() and
|
||||
|
|
Loading…
Reference in a new issue