Skip to content

Commit 7c3739b

Browse files
authored
Merge pull request #376 from Pylons/bugfix/header-calculation
Bugfix: header calculation
2 parents 3066fdd + dacaeee commit 7c3739b

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/waitress/parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ def received(self, data):
103103
# If the headers have ended, and we also have part of the body
104104
# message in data we still want to validate we aren't going
105105
# over our limit for received headers.
106-
self.header_bytes_received += index
106+
self.header_bytes_received = index
107107
consumed = datalen - (len(s) - index)
108108
else:
109109
self.header_bytes_received += datalen

tests/test_parser.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,18 @@ def test_received_cl_too_large(self):
106106
self.assertTrue(self.parser.completed)
107107
self.assertTrue(isinstance(self.parser.error, RequestEntityTooLarge))
108108

109+
def test_received_headers_not_too_large_multiple_chunks(self):
110+
111+
data = b"GET /foobar HTTP/8.4\r\nX-Foo: 1\r\n"
112+
data2 = b"X-Foo-Other: 3\r\n\r\n"
113+
self.parser.adj.max_request_header_size = len(data) + len(data2) + 1
114+
result = self.parser.received(data)
115+
self.assertEqual(result, 32)
116+
result = self.parser.received(data2)
117+
self.assertEqual(result, 18)
118+
self.assertTrue(self.parser.completed)
119+
self.assertFalse(self.parser.error)
120+
109121
def test_received_headers_too_large(self):
110122

111123
self.parser.adj.max_request_header_size = 2

0 commit comments

Comments
 (0)