aboutsummaryrefslogtreecommitdiff
path: root/src/core/ngx_cycle.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2005-08-30 10:55:07 +0000
committerIgor Sysoev <igor@sysoev.ru>2005-08-30 10:55:07 +0000
commite5035397b01ec12f351a6a984f83091b821978cc (patch)
tree9e65f1b24c595346b666559264878cbb911bfcf7 /src/core/ngx_cycle.c
parente3c2cf87e537aba572b08afccabcb64976d43079 (diff)
downloadnginx-e5035397b01ec12f351a6a984f83091b821978cc.tar.gz
nginx-e5035397b01ec12f351a6a984f83091b821978cc.zip
nginx-0.1.43-RELEASE importrelease-0.1.43
*) Feature: the listen(2) backlog in the "listen" directive can be changed using the -HUP signal. *) Feature: the geo2nginx.pl script was added to contrib. *) Change: the FastCGI parameters with the empty values now are passed to a server. *) Bugfix: the segmentation fault occurred or the worker process may got caught in an endless loop if the proxied or FastCGI server sent the "Cache-Control" header line and the "expires" directive was used; in the proxied mode the the bug had appeared in 0.1.29.
Diffstat (limited to 'src/core/ngx_cycle.c')
-rw-r--r--src/core/ngx_cycle.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c
index b67223a69..2c7823557 100644
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -339,6 +339,10 @@ ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle)
nls[n].remain = 1;
ls[i].remain = 1;
+ if (ls[n].backlog != nls[i].backlog) {
+ nls[n].change_backlog = 1;
+ }
+
#if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
/*
@@ -405,12 +409,21 @@ ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle)
failed = 1;
}
-#if (NGX_HAVE_DEFERRED_ACCEPT)
-
if (!failed) {
ls = cycle->listening.elts;
for (i = 0; i < cycle->listening.nelts; i++) {
+ if (ls[i].change_backlog) {
+ if (listen(ls[i].fd, ls[i].backlog) == -1) {
+ ngx_log_error(NGX_LOG_ALERT, log, ngx_socket_errno,
+ "changing the listen() backlog to %d "
+ "for %V failed, ignored",
+ &ls[i].addr_text, ls[i].backlog);
+ }
+ }
+
+#if (NGX_HAVE_DEFERRED_ACCEPT)
+
#ifdef SO_ACCEPTFILTER
if (ls[i].delete_deferred) {
if (setsockopt(ls[i].fd, SOL_SOCKET, SO_ACCEPTFILTER,
@@ -476,9 +489,9 @@ ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle)
ls[i].deferred_accept = 1;
}
#endif
+#endif
}
}
-#endif
}
}