Skip to content

Commit

Permalink
Merge pull request #376 from Pylons/bugfix/header-calculation
Browse files Browse the repository at this point in the history
Bugfix: header calculation
  • Loading branch information
mmerickel committed Apr 27, 2022
2 parents 3066fdd + dacaeee commit 7c3739b
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/waitress/parser.py
Expand Up @@ -103,7 +103,7 @@ def received(self, data):
# If the headers have ended, and we also have part of the body
# message in data we still want to validate we aren't going
# over our limit for received headers.
self.header_bytes_received += index
self.header_bytes_received = index
consumed = datalen - (len(s) - index)
else:
self.header_bytes_received += datalen
Expand Down
12 changes: 12 additions & 0 deletions tests/test_parser.py
Expand Up @@ -106,6 +106,18 @@ def test_received_cl_too_large(self):
self.assertTrue(self.parser.completed)
self.assertTrue(isinstance(self.parser.error, RequestEntityTooLarge))

def test_received_headers_not_too_large_multiple_chunks(self):

data = b"GET /foobar HTTP/8.4\r\nX-Foo: 1\r\n"
data2 = b"X-Foo-Other: 3\r\n\r\n"
self.parser.adj.max_request_header_size = len(data) + len(data2) + 1
result = self.parser.received(data)
self.assertEqual(result, 32)
result = self.parser.received(data2)
self.assertEqual(result, 18)
self.assertTrue(self.parser.completed)
self.assertFalse(self.parser.error)

def test_received_headers_too_large(self):

self.parser.adj.max_request_header_size = 2
Expand Down

0 comments on commit 7c3739b

Please sign in to comment.