-
Notifications
You must be signed in to change notification settings - Fork 8.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
17 changed files
with
269 additions
and
13 deletions.
There are no files selected for viewing
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
19 changes: 19 additions & 0 deletions
19
images/nginx/rootfs/patches/nginx-1.17.8-cache_manager_exit.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# HG changeset patch | ||
# User Yichun Zhang <[email protected]> | ||
# Date 1383598130 28800 | ||
# Node ID f64218e1ac963337d84092536f588b8e0d99bbaa | ||
# Parent dea321e5c0216efccbb23e84bbce7cf3e28f130c | ||
Cache: gracefully exit the cache manager process. | ||
|
||
diff -r dea321e5c021 -r f64218e1ac96 src/os/unix/ngx_process_cycle.c | ||
--- a/src/os/unix/ngx_process_cycle.c Thu Oct 31 18:23:49 2013 +0400 | ||
+++ b/src/os/unix/ngx_process_cycle.c Mon Nov 04 12:48:50 2013 -0800 | ||
@@ -1335,7 +1335,7 @@ | ||
|
||
if (ngx_terminate || ngx_quit) { | ||
ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting"); | ||
- exit(0); | ||
+ ngx_worker_process_exit(cycle); | ||
} | ||
|
||
if (ngx_reopen) { |
20 changes: 20 additions & 0 deletions
20
images/nginx/rootfs/patches/nginx-1.17.8-hash_overflow.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# HG changeset patch | ||
# User Yichun Zhang <[email protected]> | ||
# Date 1412276417 25200 | ||
# Thu Oct 02 12:00:17 2014 -0700 | ||
# Node ID 4032b992f23b054c1a2cfb0be879330d2c6708e5 | ||
# Parent 1ff0f68d9376e3d184d65814a6372856bf65cfcd | ||
Hash: buffer overflow might happen when exceeding the pre-configured limits. | ||
|
||
diff -r 1ff0f68d9376 -r 4032b992f23b src/core/ngx_hash.c | ||
--- a/src/core/ngx_hash.c Tue Sep 30 15:50:28 2014 -0700 | ||
+++ b/src/core/ngx_hash.c Thu Oct 02 12:00:17 2014 -0700 | ||
@@ -312,6 +312,8 @@ ngx_hash_init(ngx_hash_init_t *hinit, ng | ||
continue; | ||
} | ||
|
||
+ size--; | ||
+ | ||
ngx_log_error(NGX_LOG_WARN, hinit->pool->log, 0, | ||
"could not build optimal %s, you should increase " | ||
"either %s_max_size: %i or %s_bucket_size: %i; " |
4 changes: 2 additions & 2 deletions
4
...s/nginx-1.17.4-larger_max_error_str.patch → ...s/nginx-1.17.8-larger_max_error_str.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes.
185 changes: 185 additions & 0 deletions
185
images/nginx/rootfs/patches/nginx-1.17.8-socket_cloexec.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,185 @@ | ||
diff --git a/auto/unix b/auto/unix | ||
index 10835f6c..b5b33bb3 100644 | ||
--- a/auto/unix | ||
+++ b/auto/unix | ||
@@ -990,3 +990,27 @@ ngx_feature_test='struct addrinfo *res; | ||
if (getaddrinfo("localhost", NULL, NULL, &res) != 0) return 1; | ||
freeaddrinfo(res)' | ||
. auto/feature | ||
+ | ||
+ngx_feature="SOCK_CLOEXEC support" | ||
+ngx_feature_name="NGX_HAVE_SOCKET_CLOEXEC" | ||
+ngx_feature_run=no | ||
+ngx_feature_incs="#include <sys/types.h> | ||
+ #include <sys/socket.h>" | ||
+ngx_feature_path= | ||
+ngx_feature_libs= | ||
+ngx_feature_test="int fd; | ||
+ fd = socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, 0);" | ||
+. auto/feature | ||
+ | ||
+ngx_feature="FD_CLOEXEC support" | ||
+ngx_feature_name="NGX_HAVE_FD_CLOEXEC" | ||
+ngx_feature_run=no | ||
+ngx_feature_incs="#include <sys/types.h> | ||
+ #include <sys/socket.h> | ||
+ #include <fcntl.h>" | ||
+ngx_feature_path= | ||
+ngx_feature_libs= | ||
+ngx_feature_test="int fd; | ||
+ fd = socket(AF_INET, SOCK_STREAM, 0); | ||
+ fcntl(fd, F_SETFD, FD_CLOEXEC);" | ||
+. auto/feature | ||
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c | ||
index cd55520c..438e0806 100644 | ||
--- a/src/core/ngx_resolver.c | ||
+++ b/src/core/ngx_resolver.c | ||
@@ -4466,8 +4466,14 @@ ngx_tcp_connect(ngx_resolver_connection_t *rec) | ||
ngx_event_t *rev, *wev; | ||
ngx_connection_t *c; | ||
|
||
+#if (NGX_HAVE_SOCKET_CLOEXEC) | ||
+ s = ngx_socket(rec->sockaddr->sa_family, SOCK_STREAM | SOCK_CLOEXEC, 0); | ||
+ | ||
+#else | ||
s = ngx_socket(rec->sockaddr->sa_family, SOCK_STREAM, 0); | ||
|
||
+#endif | ||
+ | ||
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, &rec->log, 0, "TCP socket %d", s); | ||
|
||
if (s == (ngx_socket_t) -1) { | ||
@@ -4494,6 +4500,15 @@ ngx_tcp_connect(ngx_resolver_connection_t *rec) | ||
goto failed; | ||
} | ||
|
||
+#if (NGX_HAVE_FD_CLOEXEC) | ||
+ if (ngx_cloexec(s) == -1) { | ||
+ ngx_log_error(NGX_LOG_ALERT, &rec->log, ngx_socket_errno, | ||
+ ngx_cloexec_n " failed"); | ||
+ | ||
+ goto failed; | ||
+ } | ||
+#endif | ||
+ | ||
rev = c->read; | ||
wev = c->write; | ||
|
||
diff --git a/src/event/ngx_event.h b/src/event/ngx_event.h | ||
index 19fec68..8c2f01a 100644 | ||
--- a/src/event/ngx_event.h | ||
+++ b/src/event/ngx_event.h | ||
@@ -73,6 +73,9 @@ struct ngx_event_s { | ||
/* to test on worker exit */ | ||
unsigned channel:1; | ||
unsigned resolver:1; | ||
+#if (HAVE_SOCKET_CLOEXEC_PATCH) | ||
+ unsigned skip_socket_leak_check:1; | ||
+#endif | ||
|
||
unsigned cancelable:1; | ||
|
||
diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c | ||
index 77563709..5827b9d0 100644 | ||
--- a/src/event/ngx_event_accept.c | ||
+++ b/src/event/ngx_event_accept.c | ||
@@ -62,7 +62,9 @@ ngx_event_accept(ngx_event_t *ev) | ||
|
||
#if (NGX_HAVE_ACCEPT4) | ||
if (use_accept4) { | ||
- s = accept4(lc->fd, &sa.sockaddr, &socklen, SOCK_NONBLOCK); | ||
+ s = accept4(lc->fd, &sa.sockaddr, &socklen, | ||
+ SOCK_NONBLOCK | SOCK_CLOEXEC); | ||
+ | ||
} else { | ||
s = accept(lc->fd, &sa.sockaddr, &socklen); | ||
} | ||
@@ -202,6 +204,16 @@ ngx_event_accept(ngx_event_t *ev) | ||
ngx_close_accepted_connection(c); | ||
return; | ||
} | ||
+ | ||
+#if (NGX_HAVE_FD_CLOEXEC) | ||
+ if (ngx_cloexec(s) == -1) { | ||
+ ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_socket_errno, | ||
+ ngx_cloexec_n " failed"); | ||
+ ngx_close_accepted_connection(c); | ||
+ return; | ||
+ } | ||
+#endif | ||
+ | ||
} | ||
} | ||
|
||
diff --git a/src/event/ngx_event_connect.c b/src/event/ngx_event_connect.c | ||
index c5bb8068..cf33b1d2 100644 | ||
--- a/src/event/ngx_event_connect.c | ||
+++ b/src/event/ngx_event_connect.c | ||
@@ -38,8 +38,15 @@ ngx_event_connect_peer(ngx_peer_connection_t *pc) | ||
|
||
type = (pc->type ? pc->type : SOCK_STREAM); | ||
|
||
+#if (NGX_HAVE_SOCKET_CLOEXEC) | ||
+ s = ngx_socket(pc->sockaddr->sa_family, type | SOCK_CLOEXEC, 0); | ||
+ | ||
+#else | ||
s = ngx_socket(pc->sockaddr->sa_family, type, 0); | ||
|
||
+#endif | ||
+ | ||
+ | ||
ngx_log_debug2(NGX_LOG_DEBUG_EVENT, pc->log, 0, "%s socket %d", | ||
(type == SOCK_STREAM) ? "stream" : "dgram", s); | ||
|
||
@@ -80,6 +87,15 @@ ngx_event_connect_peer(ngx_peer_connection_t *pc) | ||
goto failed; | ||
} | ||
|
||
+#if (NGX_HAVE_FD_CLOEXEC) | ||
+ if (ngx_cloexec(s) == -1) { | ||
+ ngx_log_error(NGX_LOG_ALERT, pc->log, ngx_socket_errno, | ||
+ ngx_cloexec_n " failed"); | ||
+ | ||
+ goto failed; | ||
+ } | ||
+#endif | ||
+ | ||
if (pc->local) { | ||
|
||
#if (NGX_HAVE_TRANSPARENT_PROXY) | ||
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c | ||
index c4376a5..48e8fa8 100644 | ||
--- a/src/os/unix/ngx_process_cycle.c | ||
+++ b/src/os/unix/ngx_process_cycle.c | ||
@@ -1032,6 +1032,9 @@ ngx_worker_process_exit(ngx_cycle_t *cycle) | ||
for (i = 0; i < cycle->connection_n; i++) { | ||
if (c[i].fd != -1 | ||
&& c[i].read | ||
+#if (HAVE_SOCKET_CLOEXEC_PATCH) | ||
+ && !c[i].read->skip_socket_leak_check | ||
+#endif | ||
&& !c[i].read->accept | ||
&& !c[i].read->channel | ||
&& !c[i].read->resolver) | ||
diff --git a/src/os/unix/ngx_socket.h b/src/os/unix/ngx_socket.h | ||
index fcc51533..d1eebf47 100644 | ||
--- a/src/os/unix/ngx_socket.h | ||
+++ b/src/os/unix/ngx_socket.h | ||
@@ -38,6 +38,17 @@ int ngx_blocking(ngx_socket_t s); | ||
|
||
#endif | ||
|
||
+#if (NGX_HAVE_FD_CLOEXEC) | ||
+ | ||
+#define ngx_cloexec(s) fcntl(s, F_SETFD, FD_CLOEXEC) | ||
+#define ngx_cloexec_n "fcntl(FD_CLOEXEC)" | ||
+ | ||
+/* at least FD_CLOEXEC is required to ensure connection fd is closed | ||
+ * after execve */ | ||
+#define HAVE_SOCKET_CLOEXEC_PATCH 1 | ||
+ | ||
+#endif | ||
+ | ||
int ngx_tcp_nopush(ngx_socket_t s); | ||
int ngx_tcp_push(ngx_socket_t s); | ||
|
File renamed without changes.
File renamed without changes.
23 changes: 23 additions & 0 deletions
23
images/nginx/rootfs/patches/nginx-1.17.8-upstream_pipelining.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
commit f9907b72a76a21ac5413187b83177a919475c75f | ||
Author: Yichun Zhang (agentzh) <[email protected]> | ||
Date: Wed Feb 10 16:05:08 2016 -0800 | ||
|
||
bugfix: upstream: keep sending request data after the first write attempt. | ||
|
||
See | ||
http://mailman.nginx.org/pipermail/nginx-devel/2012-March/002040.html | ||
for more details on the issue. | ||
|
||
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c | ||
index 69019417..92b7c97f 100644 | ||
--- a/src/http/ngx_http_upstream.c | ||
+++ b/src/http/ngx_http_upstream.c | ||
@@ -2239,7 +2239,7 @@ ngx_http_upstream_send_request_handler(ngx_http_request_t *r, | ||
|
||
#endif | ||
|
||
- if (u->header_sent && !u->conf->preserve_output) { | ||
+ if (u->request_body_sent && !u->conf->preserve_output) { | ||
u->write_event_handler = ngx_http_upstream_dummy_handler; | ||
|
||
(void) ngx_handle_write_event(c->write, 0); |
File renamed without changes.