diff options
-rw-r--r-- | src/nxt_php_sapi.c | 14 | ||||
-rw-r--r-- | test/php/header/index.php | 4 | ||||
-rw-r--r-- | test/test_php_application.py | 40 |
3 files changed, 46 insertions, 12 deletions
diff --git a/src/nxt_php_sapi.c b/src/nxt_php_sapi.c index df7cf243..dfad9eb8 100644 --- a/src/nxt_php_sapi.c +++ b/src/nxt_php_sapi.c @@ -730,7 +730,7 @@ static int nxt_php_send_headers(sapi_headers_struct *sapi_headers TSRMLS_DC) { int rc, fields_count; - char *colon, *status_line, *value; + char *colon, *value; uint16_t status; uint32_t resp_size; nxt_php_run_ctx_t *ctx; @@ -762,17 +762,7 @@ nxt_php_send_headers(sapi_headers_struct *sapi_headers TSRMLS_DC) resp_size += h->header_len; } - if (SG(sapi_headers).http_status_line) { - status_line = SG(sapi_headers).http_status_line; - - status = nxt_int_parse((u_char *) status_line + 9, 3); - - } else if (SG(sapi_headers).http_response_code) { - status = SG(sapi_headers).http_response_code; - - } else { - status = 200; - } + status = SG(sapi_headers).http_response_code; rc = nxt_unit_response_init(req, status, fields_count, resp_size); if (nxt_slow_path(rc != NXT_UNIT_OK)) { diff --git a/test/php/header/index.php b/test/php/header/index.php new file mode 100644 index 00000000..1aa5ca04 --- /dev/null +++ b/test/php/header/index.php @@ -0,0 +1,4 @@ +<?php +header($_SERVER['HTTP_X_HEADER']); +header('Content-Length: 0'); +?> diff --git a/test/test_php_application.py b/test/test_php_application.py index 8032e96e..bf0d3bd1 100644 --- a/test/test_php_application.py +++ b/test/test_php_application.py @@ -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') |