Skip to content

Commit 22b141a

Browse files
committed
Treat accept failing with SOCK_EAGAIN as success in CLI web server
This ensures that no useless "Failed to poll event" error messages are logged during normal server operation, as the SOCK_EAGAIN error simply indicates another worker is already serving the request.
1 parent 9d69ab9 commit 22b141a

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

sapi/cli/php_cli_server.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2721,15 +2721,17 @@ static zend_result php_cli_server_do_event_for_each_fd_callback(void *_params, p
27212721
struct sockaddr *sa = pemalloc(server->socklen, 1);
27222722
client_sock = accept(server->server_sock, sa, &socklen);
27232723
if (!ZEND_VALID_SOCKET(client_sock)) {
2724-
int err = php_socket_errno();
2725-
if (err != SOCK_EAGAIN && php_cli_server_log_level >= PHP_CLI_SERVER_LOG_ERROR) {
2724+
pefree(sa, 1);
2725+
if (php_socket_errno() == SOCK_EAGAIN) {
2726+
return SUCCESS;
2727+
}
2728+
if (php_cli_server_log_level >= PHP_CLI_SERVER_LOG_ERROR) {
27262729
char *errstr = php_socket_strerror(php_socket_errno(), NULL, 0);
27272730
php_cli_server_logf(PHP_CLI_SERVER_LOG_ERROR,
27282731
"Failed to accept a client (reason: %s)", errstr);
27292732
efree(errstr);
27302733
}
2731-
pefree(sa, 1);
2732-
return FAILURE;
2734+
return FAILURE;
27332735
}
27342736
if (SUCCESS != php_set_sock_blocking(client_sock, 0)) {
27352737
pefree(sa, 1);

0 commit comments

Comments
 (0)