Skip to content

Commit cea1a52

Browse files
author
a.hossein
committed
update patches to 1.19.0
1 parent 4a0fa6a commit cea1a52

33 files changed

+2676
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
--- nginx-1.17.8/auto/cc/conf 2015-10-30 22:47:50.000000000 +0800
2+
+++ nginx-1.17.8-patched/auto/cc/conf 2015-11-02 12:23:05.385156987 +0800
3+
@@ -136,7 +136,7 @@ fi
4+
CFLAGS="$CFLAGS $NGX_CC_OPT"
5+
NGX_TEST_LD_OPT="$NGX_LD_OPT"
6+
7+
-if [ "$NGX_PLATFORM" != win32 ]; then
8+
+if [ 1 ]; then
9+
10+
if test -n "$NGX_LD_OPT"; then
11+
ngx_feature=--with-ld-opt=\"$NGX_LD_OPT\"
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
2+
index f8d5707d..6efe0047 100644
3+
--- a/src/http/ngx_http_upstream.c
4+
+++ b/src/http/ngx_http_upstream.c
5+
@@ -1515,6 +1515,11 @@ ngx_http_upstream_connect(ngx_http_request_t *r, ngx_http_upstream_t *u)
6+
return;
7+
}
8+
9+
+ if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
10+
+ ngx_http_upstream_finalize_request(r, u, rc);
11+
+ return;
12+
+ }
13+
+
14+
u->state->peer = u->peer.name;
15+
16+
if (rc == NGX_BUSY) {
17+
diff --git a/src/http/ngx_http_upstream.h b/src/http/ngx_http_upstream.h
18+
index 3e714e5b..dfbb25e0 100644
19+
--- a/src/http/ngx_http_upstream.h
20+
+++ b/src/http/ngx_http_upstream.h
21+
@@ -427,4 +427,9 @@ extern ngx_conf_bitmask_t ngx_http_upstream_cache_method_mask[];
22+
extern ngx_conf_bitmask_t ngx_http_upstream_ignore_headers_masks[];
23+
24+
25+
+#ifndef HAVE_BALANCER_STATUS_CODE_PATCH
26+
+#define HAVE_BALANCER_STATUS_CODE_PATCH
27+
+#endif
28+
+
29+
+
30+
#endif /* _NGX_HTTP_UPSTREAM_H_INCLUDED_ */
31+
diff --git a/src/stream/ngx_stream.h b/src/stream/ngx_stream.h
32+
index 09d24593..d8b4b584 100644
33+
--- a/src/stream/ngx_stream.h
34+
+++ b/src/stream/ngx_stream.h
35+
@@ -27,6 +27,7 @@ typedef struct ngx_stream_session_s ngx_stream_session_t;
36+
37+
38+
#define NGX_STREAM_OK 200
39+
+#define NGX_STREAM_SPECIAL_RESPONSE 300
40+
#define NGX_STREAM_BAD_REQUEST 400
41+
#define NGX_STREAM_FORBIDDEN 403
42+
#define NGX_STREAM_INTERNAL_SERVER_ERROR 500
43+
diff --git a/src/stream/ngx_stream_proxy_module.c b/src/stream/ngx_stream_proxy_module.c
44+
index 818d7329..329dcdc6 100644
45+
--- a/src/stream/ngx_stream_proxy_module.c
46+
+++ b/src/stream/ngx_stream_proxy_module.c
47+
@@ -691,6 +691,11 @@ ngx_stream_proxy_connect(ngx_stream_session_t *s)
48+
return;
49+
}
50+
51+
+ if (rc >= NGX_STREAM_SPECIAL_RESPONSE) {
52+
+ ngx_stream_proxy_finalize(s, rc);
53+
+ return;
54+
+ }
55+
+
56+
u->state->peer = u->peer.name;
57+
58+
if (rc == NGX_BUSY) {
59+
diff --git a/src/stream/ngx_stream_upstream.h b/src/stream/ngx_stream_upstream.h
60+
index 73947f46..21bc0ad7 100644
61+
--- a/src/stream/ngx_stream_upstream.h
62+
+++ b/src/stream/ngx_stream_upstream.h
63+
@@ -151,4 +151,9 @@ ngx_stream_upstream_srv_conf_t *ngx_stream_upstream_add(ngx_conf_t *cf,
64+
extern ngx_module_t ngx_stream_upstream_module;
65+
66+
67+
+#ifndef HAVE_BALANCER_STATUS_CODE_PATCH
68+
+#define HAVE_BALANCER_STATUS_CODE_PATCH
69+
+#endif
70+
+
71+
+
72+
#endif /* _NGX_STREAM_UPSTREAM_H_INCLUDED_ */
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c
2+
index 64e5acd..f5374f6 100644
3+
--- a/src/http/ngx_http_special_response.c
4+
+++ b/src/http/ngx_http_special_response.c
5+
@@ -26,7 +26,7 @@ static u_char ngx_http_error_full_tail[] =
6+
7+
8+
static u_char ngx_http_error_tail[] =
9+
-"<hr><center>nginx</center>" CRLF
10+
+"<hr><center>Arvan Cloud</center>" CRLF
11+
"</body>" CRLF
12+
"</html>" CRLF
13+
;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# HG changeset patch
2+
# User Yichun Zhang <agentzh@gmail.com>
3+
# Date 1383598130 28800
4+
# Node ID f64218e1ac963337d84092536f588b8e0d99bbaa
5+
# Parent dea321e5c0216efccbb23e84bbce7cf3e28f130c
6+
Cache: gracefully exit the cache manager process.
7+
8+
diff -r dea321e5c021 -r f64218e1ac96 src/os/unix/ngx_process_cycle.c
9+
--- a/src/os/unix/ngx_process_cycle.c Thu Oct 31 18:23:49 2013 +0400
10+
+++ b/src/os/unix/ngx_process_cycle.c Mon Nov 04 12:48:50 2013 -0800
11+
@@ -1335,7 +1335,7 @@
12+
13+
if (ngx_terminate || ngx_quit) {
14+
ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "exiting");
15+
- exit(0);
16+
+ ngx_worker_process_exit(cycle);
17+
}
18+
19+
if (ngx_reopen) {
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
diff --git a/src/os/unix/ngx_daemon.c b/src/os/unix/ngx_daemon.c
2+
index ab672110..f259af31 100644
3+
--- a/src/os/unix/ngx_daemon.c
4+
+++ b/src/os/unix/ngx_daemon.c
5+
@@ -23,6 +23,8 @@ ngx_daemon(ngx_log_t *log)
6+
break;
7+
8+
default:
9+
+ /* just to make it ASAN or Valgrind clean */
10+
+ ngx_destroy_pool(ngx_cycle->pool);
11+
exit(0);
12+
}
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
2+
index 57af8132..4853945f 100644
3+
--- a/src/event/ngx_event.c
4+
+++ b/src/event/ngx_event.c
5+
@@ -196,6 +196,9 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle)
6+
ngx_uint_t flags;
7+
ngx_msec_t timer, delta;
8+
9+
+ ngx_queue_t *q;
10+
+ ngx_event_t *ev;
11+
+
12+
if (ngx_timer_resolution) {
13+
timer = NGX_TIMER_INFINITE;
14+
flags = 0;
15+
@@ -215,6 +218,13 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle)
16+
#endif
17+
}
18+
19+
+ if (!ngx_queue_empty(&ngx_posted_delayed_events)) {
20+
+ ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
21+
+ "posted delayed event queue not empty"
22+
+ " making poll timeout 0");
23+
+ timer = 0;
24+
+ }
25+
+
26+
if (ngx_use_accept_mutex) {
27+
if (ngx_accept_disabled > 0) {
28+
ngx_accept_disabled--;
29+
@@ -257,6 +267,35 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle)
30+
}
31+
32+
ngx_event_process_posted(cycle, &ngx_posted_events);
33+
+
34+
+ while (!ngx_queue_empty(&ngx_posted_delayed_events)) {
35+
+ q = ngx_queue_head(&ngx_posted_delayed_events);
36+
+
37+
+ ev = ngx_queue_data(q, ngx_event_t, queue);
38+
+ if (ev->delayed) {
39+
+ /* start of newly inserted nodes */
40+
+ for (/* void */;
41+
+ q != ngx_queue_sentinel(&ngx_posted_delayed_events);
42+
+ q = ngx_queue_next(q))
43+
+ {
44+
+ ev = ngx_queue_data(q, ngx_event_t, queue);
45+
+ ev->delayed = 0;
46+
+
47+
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
48+
+ "skipping delayed posted event %p,"
49+
+ " till next iteration", ev);
50+
+ }
51+
+
52+
+ break;
53+
+ }
54+
+
55+
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
56+
+ "delayed posted event %p", ev);
57+
+
58+
+ ngx_delete_posted_event(ev);
59+
+
60+
+ ev->handler(ev);
61+
+ }
62+
}
63+
64+
65+
@@ -600,6 +639,7 @@ ngx_event_process_init(ngx_cycle_t *cycle)
66+
67+
ngx_queue_init(&ngx_posted_accept_events);
68+
ngx_queue_init(&ngx_posted_events);
69+
+ ngx_queue_init(&ngx_posted_delayed_events);
70+
71+
if (ngx_event_timer_init(cycle->log) == NGX_ERROR) {
72+
return NGX_ERROR;
73+
diff --git a/src/event/ngx_event_posted.c b/src/event/ngx_event_posted.c
74+
index d851f3d1..b6cea009 100644
75+
--- a/src/event/ngx_event_posted.c
76+
+++ b/src/event/ngx_event_posted.c
77+
@@ -12,6 +12,7 @@
78+
79+
ngx_queue_t ngx_posted_accept_events;
80+
ngx_queue_t ngx_posted_events;
81+
+ngx_queue_t ngx_posted_delayed_events;
82+
83+
84+
void
85+
diff --git a/src/event/ngx_event_posted.h b/src/event/ngx_event_posted.h
86+
index 145d30fe..6c388553 100644
87+
--- a/src/event/ngx_event_posted.h
88+
+++ b/src/event/ngx_event_posted.h
89+
@@ -43,6 +43,9 @@ void ngx_event_process_posted(ngx_cycle_t *cycle, ngx_queue_t *posted);
90+
91+
extern ngx_queue_t ngx_posted_accept_events;
92+
extern ngx_queue_t ngx_posted_events;
93+
+extern ngx_queue_t ngx_posted_delayed_events;
94+
+
95+
+#define HAVE_POSTED_DELAYED_EVENTS_PATCH
96+
97+
98+
#endif /* _NGX_EVENT_POSTED_H_INCLUDED_ */
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# HG changeset patch
2+
# User Yichun Zhang <agentzh@gmail.com>
3+
# Date 1412276417 25200
4+
# Thu Oct 02 12:00:17 2014 -0700
5+
# Node ID 4032b992f23b054c1a2cfb0be879330d2c6708e5
6+
# Parent 1ff0f68d9376e3d184d65814a6372856bf65cfcd
7+
Hash: buffer overflow might happen when exceeding the pre-configured limits.
8+
9+
diff -r 1ff0f68d9376 -r 4032b992f23b src/core/ngx_hash.c
10+
--- a/src/core/ngx_hash.c Tue Sep 30 15:50:28 2014 -0700
11+
+++ b/src/core/ngx_hash.c Thu Oct 02 12:00:17 2014 -0700
12+
@@ -312,6 +312,8 @@ ngx_hash_init(ngx_hash_init_t *hinit, ng
13+
continue;
14+
}
15+
16+
+ size--;
17+
+
18+
ngx_log_error(NGX_LOG_WARN, hinit->pool->log, 0,
19+
"could not build optimal %s, you should increase "
20+
"either %s_max_size: %i or %s_bucket_size: %i; "
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
diff -rup nginx-1.17.8/src/core/nginx.c nginx-1.17.8-patched/src/core/nginx.c
2+
--- nginx-1.17.8/src/core/nginx.c 2017-12-17 00:00:38.136470108 -0800
3+
+++ nginx-1.17.8-patched/src/core/nginx.c 2017-12-16 23:59:51.680958322 -0800
4+
@@ -186,6 +186,7 @@ static u_char *ngx_prefix;
5+
static u_char *ngx_conf_file;
6+
static u_char *ngx_conf_params;
7+
static char *ngx_signal;
8+
+ngx_pool_t *saved_init_cycle_pool = NULL;
9+
10+
11+
static char **ngx_os_environ;
12+
@@ -253,6 +254,8 @@ main(int argc, char *const *argv)
13+
return 1;
14+
}
15+
16+
+ saved_init_cycle_pool = init_cycle.pool;
17+
+
18+
if (ngx_save_argv(&init_cycle, argc, argv) != NGX_OK) {
19+
return 1;
20+
}
21+
diff -rup nginx-1.17.8/src/core/ngx_core.h nginx-1.17.8-patched/src/core/ngx_core.h
22+
--- nginx-1.17.8/src/core/ngx_core.h 2017-10-10 08:22:51.000000000 -0700
23+
+++ nginx-1.17.8-patched/src/core/ngx_core.h 2017-12-16 23:59:51.679958370 -0800
24+
@@ -108,4 +108,6 @@ void ngx_cpuinfo(void);
25+
#define NGX_DISABLE_SYMLINKS_NOTOWNER 2
26+
#endif
27+
28+
+extern ngx_pool_t *saved_init_cycle_pool;
29+
+
30+
#endif /* _NGX_CORE_H_INCLUDED_ */
31+
diff -rup nginx-1.17.8/src/core/ngx_cycle.c nginx-1.17.8-patched/src/core/ngx_cycle.c
32+
--- nginx-1.17.8/src/core/ngx_cycle.c 2017-10-10 08:22:51.000000000 -0700
33+
+++ nginx-1.17.8-patched/src/core/ngx_cycle.c 2017-12-16 23:59:51.678958419 -0800
34+
@@ -748,6 +748,10 @@ old_shm_zone_done:
35+
36+
if (ngx_process == NGX_PROCESS_MASTER || ngx_is_init_cycle(old_cycle)) {
37+
38+
+ if (ngx_is_init_cycle(old_cycle)) {
39+
+ saved_init_cycle_pool = NULL;
40+
+ }
41+
+
42+
ngx_destroy_pool(old_cycle->pool);
43+
cycle->old_cycle = NULL;
44+
45+
diff -rup nginx-1.17.8/src/os/unix/ngx_process_cycle.c nginx-1.17.8-patched/src/os/unix/ngx_process_cycle.c
46+
--- nginx-1.17.8/src/os/unix/ngx_process_cycle.c 2017-12-17 00:00:38.142469762 -0800
47+
+++ nginx-1.17.8-patched/src/os/unix/ngx_process_cycle.c 2017-12-16 23:59:51.691957791 -0800
48+
@@ -783,6 +783,11 @@ ngx_master_process_exit(ngx_cycle_t *cyc
49+
ngx_exit_cycle.files_n = ngx_cycle->files_n;
50+
ngx_cycle = &ngx_exit_cycle;
51+
52+
+ if (saved_init_cycle_pool != NULL && saved_init_cycle_pool != cycle->pool) {
53+
+ ngx_destroy_pool(saved_init_cycle_pool);
54+
+ saved_init_cycle_pool = NULL;
55+
+ }
56+
+
57+
ngx_destroy_pool(cycle->pool);
58+
59+
exit(0);
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
diff --git a/src/core/ngx_cycle.h b/src/core/ngx_cycle.h
2+
index c51b7ff..4c335b9 100644
3+
--- a/src/core/ngx_cycle.h
4+
+++ b/src/core/ngx_cycle.h
5+
@@ -22,9 +22,14 @@
6+
#define NGX_DEBUG_POINTS_ABORT 2
7+
8+
9+
+#define HAVE_INTERCEPT_ERROR_LOG_PATCH
10+
+
11+
+
12+
typedef struct ngx_shm_zone_s ngx_shm_zone_t;
13+
14+
typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *data);
15+
+typedef ngx_int_t (*ngx_log_intercept_pt) (ngx_log_t *log, ngx_uint_t level,
16+
+ u_char *buf, size_t len);
17+
18+
struct ngx_shm_zone_s {
19+
void *data;
20+
@@ -75,6 +80,10 @@ struct ngx_cycle_s {
21+
ngx_str_t prefix;
22+
ngx_str_t lock_file;
23+
ngx_str_t hostname;
24+
+
25+
+ ngx_log_intercept_pt intercept_error_log_handler;
26+
+ void *intercept_error_log_data;
27+
+ unsigned entered_logger; /* :1 */
28+
};
29+
30+
31+
diff --git a/src/core/ngx_log.c b/src/core/ngx_log.c
32+
index 8e9408d..ed9b11b 100644
33+
--- a/src/core/ngx_log.c
34+
+++ b/src/core/ngx_log.c
35+
@@ -112,6 +112,8 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
36+
ngx_uint_t wrote_stderr, debug_connection;
37+
u_char errstr[NGX_MAX_ERROR_STR];
38+
39+
+ ngx_log_intercept_pt log_intercept = NULL;
40+
+
41+
last = errstr + NGX_MAX_ERROR_STR;
42+
43+
p = ngx_cpymem(errstr, ngx_cached_err_log_time.data,
44+
@@ -153,6 +155,16 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
45+
p = last - NGX_LINEFEED_SIZE;
46+
}
47+
48+
+ if (ngx_cycle) {
49+
+ log_intercept = ngx_cycle->intercept_error_log_handler;
50+
+ }
51+
+
52+
+ if (log_intercept && !ngx_cycle->entered_logger) {
53+
+ ngx_cycle->entered_logger = 1;
54+
+ log_intercept(log, level, errstr, p - errstr);
55+
+ ngx_cycle->entered_logger = 0;
56+
+ }
57+
+
58+
ngx_linefeed(p);
59+
60+
wrote_stderr = 0;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
--- nginx-1.17.8/src/core/ngx_log.h 2013-10-08 05:07:14.000000000 -0700
2+
+++ nginx-1.17.8-patched/src/core/ngx_log.h 2013-12-05 20:35:35.996236720 -0800
3+
@@ -64,7 +64,9 @@ struct ngx_log_s {
4+
};
5+
6+
7+
-#define NGX_MAX_ERROR_STR 2048
8+
+#ifndef NGX_MAX_ERROR_STR
9+
+#define NGX_MAX_ERROR_STR 4096
10+
+#endif
11+
12+
13+
/*********************************/

0 commit comments

Comments
 (0)