nginx-0.3.35-RELEASE import
*) Bugfix: the accept-filter and the TCP_DEFER_ACCEPT option were set
for first "listen" directive only; the bug had appeared in 0.3.31.
*) Bugfix: in the "proxy_pass" directive without the URI part in a
subrequest.
diff --git a/src/core/nginx.h b/src/core/nginx.h
index ebd959d..46d0a3d 100644
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -8,7 +8,7 @@
#define _NGINX_H_INCLUDED_
-#define NGINX_VER "nginx/0.3.34"
+#define NGINX_VER "nginx/0.3.35"
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c
index abc006f..8dbabc2 100644
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -404,74 +404,75 @@
#ifdef SO_ACCEPTFILTER
- if (ls->delete_deferred) {
- if (setsockopt(ls->fd, SOL_SOCKET, SO_ACCEPTFILTER, NULL, 0) == -1)
+ if (ls[i].delete_deferred) {
+ if (setsockopt(ls[i].fd, SOL_SOCKET, SO_ACCEPTFILTER, NULL, 0)
+ == -1)
{
ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
"setsockopt(SO_ACCEPTFILTER, NULL) "
"for %V failed, ignored",
- &ls->addr_text);
+ &ls[i].addr_text);
- if (ls->accept_filter) {
+ if (ls[i].accept_filter) {
ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
"could not change the accept filter "
"to \"%s\" for %V, ignored",
- ls->accept_filter, &ls->addr_text);
+ ls[i].accept_filter, &ls[i].addr_text);
}
continue;
}
- ls->deferred_accept = 0;
+ ls[i].deferred_accept = 0;
}
- if (ls->add_deferred) {
+ if (ls[i].add_deferred) {
ngx_memzero(&af, sizeof(struct accept_filter_arg));
(void) ngx_cpystrn((u_char *) af.af_name,
- (u_char *) ls->accept_filter, 16);
+ (u_char *) ls[i].accept_filter, 16);
- if (setsockopt(ls->fd, SOL_SOCKET, SO_ACCEPTFILTER,
+ if (setsockopt(ls[i].fd, SOL_SOCKET, SO_ACCEPTFILTER,
&af, sizeof(struct accept_filter_arg))
== -1)
{
ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
"setsockopt(SO_ACCEPTFILTER, \"%s\") "
" for %V failed, ignored",
- ls->accept_filter, &ls->addr_text);
+ ls[i].accept_filter, &ls[i].addr_text);
continue;
}
- ls->deferred_accept = 1;
+ ls[i].deferred_accept = 1;
}
#endif
#ifdef TCP_DEFER_ACCEPT
- if (ls->add_deferred || ls->delete_deferred) {
+ if (ls[i].add_deferred || ls[i].delete_deferred) {
- if (ls->add_deferred) {
- timeout = (int) (ls->post_accept_timeout / 1000);
+ if (ls[i].add_deferred) {
+ timeout = (int) (ls[i].post_accept_timeout / 1000);
} else {
timeout = 0;
}
- if (setsockopt(ls->fd, IPPROTO_TCP, TCP_DEFER_ACCEPT,
+ if (setsockopt(ls[i].fd, IPPROTO_TCP, TCP_DEFER_ACCEPT,
&timeout, sizeof(int))
== -1)
{
ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
"setsockopt(TCP_DEFER_ACCEPT, %d) for %V failed, "
"ignored",
- timeout, &ls->addr_text);
+ timeout, &ls[i].addr_text);
continue;
}
}
- if (ls->add_deferred) {
- ls->deferred_accept = 1;
+ if (ls[i].add_deferred) {
+ ls[i].deferred_accept = 1;
}
#endif
diff --git a/src/http/modules/ngx_http_proxy_module.c b/src/http/modules/ngx_http_proxy_module.c
index e8d3107..f8dfdc4 100644
--- a/src/http/modules/ngx_http_proxy_module.c
+++ b/src/http/modules/ngx_http_proxy_module.c
@@ -487,7 +487,8 @@
escape = 0;
- loc_len = r->valid_location ? u->conf->location.len : 0;
+ loc_len = (r->valid_location && u->conf->uri.len) ? u->conf->location.len:
+ 0;
if (u->conf->uri.len == 0 && r->valid_unparsed_uri && r == r->main) {
unparsed_uri = 1;
diff --git a/src/os/unix/ngx_readv_chain.c b/src/os/unix/ngx_readv_chain.c
index 2e621d8..f2dd82c 100644
--- a/src/os/unix/ngx_readv_chain.c
+++ b/src/os/unix/ngx_readv_chain.c
@@ -118,9 +118,11 @@
* even if kqueue reported about available data
*/
+#if 0
ngx_log_error(NGX_LOG_ALERT, c->log, 0,
"readv() returned 0 while kevent() reported "
"%d available bytes", rev->available);
+#endif
rev->eof = 1;
rev->available = 0;
diff --git a/src/os/unix/ngx_recv.c b/src/os/unix/ngx_recv.c
index f38730e..db9a834 100644
--- a/src/os/unix/ngx_recv.c
+++ b/src/os/unix/ngx_recv.c
@@ -77,9 +77,11 @@
* even if kqueue reported about available data
*/
+#if 0
ngx_log_error(NGX_LOG_ALERT, c->log, 0,
"recv() returned 0 while kevent() reported "
"%d available bytes", rev->available);
+#endif
rev->eof = 1;
rev->available = 0;