kit-sub: на мусорную строку запроса – «HTTP/1.1 400 Bad Request», как у nginx

Python считал такой запрос HTTP/0.9 и отвечал одним телом, без строки статуса и
заголовков. Теперь ошибки разбора запроса идут со строкой статуса HTTP/1.1,
Server: nginx и Connection: close. Тесты – в tools/test/kitsub_http_test.py.
This commit is contained in:
maxdmitrov
2026-10-06 17:02:34 +03:00
parent 1aa9a84e96
commit 220d82c01e
3 changed files with 17 additions and 1 deletions
+13
View File
@@ -45,6 +45,19 @@ class Http(unittest.TestCase):
self.assertIn("Connection: close", r)
self.assertNotIn("<open>", r)
def test_garbage_request_line(self):
for req in (b"GARBAGE\r\n\r\n", b"GET\r\n\r\n", b"GET / HTTP/1.1 x\r\n\r\n", b"POST /\r\n\r\n"):
r = raw(req)
self.assertTrue(r.startswith("HTTP/1.1 400 Bad Request\r\n"), (req, r[:60]))
self.assertIn("\r\nServer: nginx\r\n", r)
self.assertIn("Connection: close", r)
self.assertIn("<center><h1>400 Bad Request</h1></center>", r)
self.assertNotIn("<open>", r)
def test_bad_version(self):
r = raw(b"GET / HTTP/9.9\r\n\r\n")
self.assertTrue(r.startswith("HTTP/1.1 505"), r[:40])
if __name__ == "__main__":
unittest.main()