aboutsummaryrefslogtreecommitdiff
path: root/src/core/ngx_connection.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2007-05-30 13:23:48 +0000
committerIgor Sysoev <igor@sysoev.ru>2007-05-30 13:23:48 +0000
commitd4aa572c8d959facaa23f73c4fda2acc707e8a19 (patch)
treee45e8f1f28211c0fa5a35f41f0717fd2c75c5628 /src/core/ngx_connection.c
parent9dd99aac66dab8b6f34dc5dc340478f70cdf3aca (diff)
downloadnginx-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.c14
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;