diff options
author | Igor Sysoev <igor@sysoev.ru> | 2007-05-30 13:23:48 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2007-05-30 13:23:48 +0000 |
commit | d4aa572c8d959facaa23f73c4fda2acc707e8a19 (patch) | |
tree | e45e8f1f28211c0fa5a35f41f0717fd2c75c5628 /src/core/ngx_connection.c | |
parent | 9dd99aac66dab8b6f34dc5dc340478f70cdf3aca (diff) | |
download | nginx-d4aa572c8d959facaa23f73c4fda2acc707e8a19.tar.gz nginx-d4aa572c8d959facaa23f73c4fda2acc707e8a19.zip |
do listen() just after bind() to exit early
Diffstat (limited to 'src/core/ngx_connection.c')
-rw-r--r-- | src/core/ngx_connection.c | 14 |
1 files changed, 14 insertions, 0 deletions
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; |