PHP: improved response status code handling.

There's no reason to parse "http_status_line"; the PHP interpreter already
does this.  If the line contains a valid status code, it's assigned to
"http_response_code".

This also fixes invalid status line handling, where the nxt_int_parse()
function returned -1; it was cast to unsigned, yielding response code 65535.
This commit is contained in:
Valentin Bartenev
2019-07-05 18:42:30 +03:00
parent e1de5bcfab
commit 924165c90b
3 changed files with 46 additions and 12 deletions

View File

@@ -102,6 +102,46 @@ class TestPHPApplication(TestApplicationPHP):
self.assertEqual(resp['status'], 200, 'status')
self.assertNotEqual(resp['body'], '', 'body not empty')
def test_php_application_header_status(self):
self.load('header')
self.assertEqual(
self.get(
headers={
'Host': 'localhost',
'Connection': 'close',
'X-Header': 'HTTP/1.1 404 Not Found',
}
)['status'],
404,
'status',
)
self.assertEqual(
self.get(
headers={
'Host': 'localhost',
'Connection': 'close',
'X-Header': 'http/1.1 404 Not Found',
}
)['status'],
404,
'status case insensitive',
)
self.assertEqual(
self.get(
headers={
'Host': 'localhost',
'Connection': 'close',
'X-Header': 'HTTP/ 404 Not Found',
}
)['status'],
404,
'status version empty',
)
def test_php_application_404(self):
self.load('404')