summaryrefslogtreecommitdiff
path: root/sapi/cli/php_cli_server.c
diff options
context:
space:
mode:
authorAdam Harvey <aharvey@php.net>2014-07-07 20:36:06 +0000
committerAdam Harvey <aharvey@php.net>2014-07-07 20:36:06 +0000
commit604de67b7d0b8c6db76002011e3b55dd9c7aeec8 (patch)
tree96c05c4c6f487b319190e012339d19158ef199ad /sapi/cli/php_cli_server.c
parenta7d1cad4c308253b1bc2a79d94c750c31788c312 (diff)
downloadphp-git-604de67b7d0b8c6db76002011e3b55dd9c7aeec8.tar.gz
Fixed bug #66830 (Empty header causes PHP built-in web server to hang).
We had an infinite loop in sapi_cli_server_send_headers(): while iterating over the linked list of headers, when an empty header was hit, continue would go to the next iteration of the loop without updating h to be the next value in the linked list. Updating it to always increment regardless of whether the header is actually valid or not fixes the issue.
Diffstat (limited to 'sapi/cli/php_cli_server.c')
-rw-r--r--sapi/cli/php_cli_server.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c
index 2425cc0c3e..375aa25c42 100644
--- a/sapi/cli/php_cli_server.c
+++ b/sapi/cli/php_cli_server.c
@@ -540,11 +540,10 @@ static int sapi_cli_server_send_headers(sapi_headers_struct *sapi_headers TSRMLS
h = (sapi_header_struct*)zend_llist_get_first_ex(&sapi_headers->headers, &pos);
while (h) {
- if (!h->header_len) {
- continue;
+ if (h->header_len) {
+ smart_str_appendl(&buffer, h->header, h->header_len);
+ smart_str_appendl(&buffer, "\r\n", 2);
}
- smart_str_appendl(&buffer, h->header, h->header_len);
- smart_str_appendl(&buffer, "\r\n", 2);
h = (sapi_header_struct*)zend_llist_get_next_ex(&sapi_headers->headers, &pos);
}
smart_str_appendl(&buffer, "\r\n", 2);