From 604de67b7d0b8c6db76002011e3b55dd9c7aeec8 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Mon, 7 Jul 2014 20:36:06 +0000 Subject: 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. --- sapi/cli/php_cli_server.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'sapi/cli/php_cli_server.c') 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); -- cgit v1.2.1