Mercurial > hg > nginx-vendor-current
diff src/core/ngx_connection.c @ 306:55328d69b335 NGINX_0_5_23
nginx 0.5.23
*) Feature: the ngx_http_ssl_module supports Server Name Indication TLS
extension.
*) Feature: the "fastcgi_catch_stderr" directive.
Thanks to Nick S. Grechukh, OWOX project.
*) Bugfix: a segmentation fault occurred in master process if two
virtual servers should bind() to the overlapping ports.
*) Bugfix: if nginx was built with ngx_http_perl_module and perl
supported threads, then during second reconfiguration the error
messages "panic: MUTEX_LOCK" and "perl_parse() failed" were issued.
*) Bugfix: in the HTTPS protocol in the "proxy_pass" directive.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 04 Jun 2007 00:00:00 +0400 |
parents | 71ff1e2b484a |
children | 9fc4ab6673f9 |
line wrap: on
line diff
--- a/src/core/ngx_connection.c +++ b/src/core/ngx_connection.c @@ -270,10 +270,11 @@ ngx_open_listening_sockets(ngx_cycle_t * "setsockopt(SO_REUSEADDR) %V failed", &ls[i].addr_text); - if (ngx_close_socket(s) == -1) + 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; } @@ -286,10 +287,11 @@ ngx_open_listening_sockets(ngx_cycle_t * ngx_nonblocking_n " %V failed", &ls[i].addr_text); - if (ngx_close_socket(s) == -1) + 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; } @@ -308,10 +310,11 @@ ngx_open_listening_sockets(ngx_cycle_t * ngx_log_error(NGX_LOG_EMERG, log, err, "bind() to %V failed", &ls[i].addr_text); - if (ngx_close_socket(s) == -1) + 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); + } if (err != NGX_EADDRINUSE) { return NGX_ERROR; @@ -322,6 +325,20 @@ ngx_open_listening_sockets(ngx_cycle_t * 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; @@ -402,10 +419,12 @@ ngx_configure_listening_socket(ngx_cycle #endif if (ls[i].listen) { + + /* change backlog via listen() */ + if (listen(ls[i].fd, ls[i].backlog) == -1) { ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_socket_errno, - "changing the listen() backlog to %d " - "for %V failed, ignored", + "listen() to %V, backlog %d failed, ignored", &ls[i].addr_text, ls[i].backlog); } }