diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c index 2f1fbea3a..362a70edc 100644 --- a/src/core/ngx_connection.c +++ b/src/core/ngx_connection.c @@ -325,6 +325,20 @@ ngx_open_listening_sockets(ngx_cycle_t *cycle) continue; } + if (listen(s, ls[i].backlog) == -1) { + ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, + "listen() to %V, backlog %d failed", + &ls[i].addr_text, ls[i].backlog); + + if (ngx_close_socket(s) == -1) { + ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno, + ngx_close_socket_n " %V failed", + &ls[i].addr_text); + } + + return NGX_ERROR; + } + ls[i].listen = 1; ls[i].fd = s;