forked from openresty/openresty
-
Notifications
You must be signed in to change notification settings - Fork 2
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
a.hossein
committed
Jun 8, 2020
1 parent
4a0fa6a
commit cea1a52
Showing
33 changed files
with
2,676 additions
and
0 deletions.
There are no files selected for viewing
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,11 @@ | ||
--- nginx-1.17.8/auto/cc/conf 2015-10-30 22:47:50.000000000 +0800 | ||
+++ nginx-1.17.8-patched/auto/cc/conf 2015-11-02 12:23:05.385156987 +0800 | ||
@@ -136,7 +136,7 @@ fi | ||
CFLAGS="$CFLAGS $NGX_CC_OPT" | ||
NGX_TEST_LD_OPT="$NGX_LD_OPT" | ||
|
||
-if [ "$NGX_PLATFORM" != win32 ]; then | ||
+if [ 1 ]; then | ||
|
||
if test -n "$NGX_LD_OPT"; then | ||
ngx_feature=--with-ld-opt=\"$NGX_LD_OPT\" |
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,72 @@ | ||
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c | ||
index f8d5707d..6efe0047 100644 | ||
--- a/src/http/ngx_http_upstream.c | ||
+++ b/src/http/ngx_http_upstream.c | ||
@@ -1515,6 +1515,11 @@ ngx_http_upstream_connect(ngx_http_request_t *r, ngx_http_upstream_t *u) | ||
return; | ||
} | ||
|
||
+ if (rc >= NGX_HTTP_SPECIAL_RESPONSE) { | ||
+ ngx_http_upstream_finalize_request(r, u, rc); | ||
+ return; | ||
+ } | ||
+ | ||
u->state->peer = u->peer.name; | ||
|
||
if (rc == NGX_BUSY) { | ||
diff --git a/src/http/ngx_http_upstream.h b/src/http/ngx_http_upstream.h | ||
index 3e714e5b..dfbb25e0 100644 | ||
--- a/src/http/ngx_http_upstream.h | ||
+++ b/src/http/ngx_http_upstream.h | ||
@@ -427,4 +427,9 @@ extern ngx_conf_bitmask_t ngx_http_upstream_cache_method_mask[]; | ||
extern ngx_conf_bitmask_t ngx_http_upstream_ignore_headers_masks[]; | ||
|
||
|
||
+#ifndef HAVE_BALANCER_STATUS_CODE_PATCH | ||
+#define HAVE_BALANCER_STATUS_CODE_PATCH | ||
+#endif | ||
+ | ||
+ | ||
#endif /* _NGX_HTTP_UPSTREAM_H_INCLUDED_ */ | ||
diff --git a/src/stream/ngx_stream.h b/src/stream/ngx_stream.h | ||
index 09d24593..d8b4b584 100644 | ||
--- a/src/stream/ngx_stream.h | ||
+++ b/src/stream/ngx_stream.h | ||
@@ -27,6 +27,7 @@ typedef struct ngx_stream_session_s ngx_stream_session_t; | ||
|
||
|
||
#define NGX_STREAM_OK 200 | ||
+#define NGX_STREAM_SPECIAL_RESPONSE 300 | ||
#define NGX_STREAM_BAD_REQUEST 400 | ||
#define NGX_STREAM_FORBIDDEN 403 | ||
#define NGX_STREAM_INTERNAL_SERVER_ERROR 500 | ||
diff --git a/src/stream/ngx_stream_proxy_module.c b/src/stream/ngx_stream_proxy_module.c | ||
index 818d7329..329dcdc6 100644 | ||
--- a/src/stream/ngx_stream_proxy_module.c | ||
+++ b/src/stream/ngx_stream_proxy_module.c | ||
@@ -691,6 +691,11 @@ ngx_stream_proxy_connect(ngx_stream_session_t *s) | ||
return; | ||
} | ||
|
||
+ if (rc >= NGX_STREAM_SPECIAL_RESPONSE) { | ||
+ ngx_stream_proxy_finalize(s, rc); | ||
+ return; | ||
+ } | ||
+ | ||
u->state->peer = u->peer.name; | ||
|
||
if (rc == NGX_BUSY) { | ||
diff --git a/src/stream/ngx_stream_upstream.h b/src/stream/ngx_stream_upstream.h | ||
index 73947f46..21bc0ad7 100644 | ||
--- a/src/stream/ngx_stream_upstream.h | ||
+++ b/src/stream/ngx_stream_upstream.h | ||
@@ -151,4 +151,9 @@ ngx_stream_upstream_srv_conf_t *ngx_stream_upstream_add(ngx_conf_t *cf, | ||
extern ngx_module_t ngx_stream_upstream_module; | ||
|
||
|
||
+#ifndef HAVE_BALANCER_STATUS_CODE_PATCH | ||
+#define HAVE_BALANCER_STATUS_CODE_PATCH | ||
+#endif | ||
+ | ||
+ | ||
#endif /* _NGX_STREAM_UPSTREAM_H_INCLUDED_ */ |
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,13 @@ | ||
diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c | ||
index 64e5acd..f5374f6 100644 | ||
--- a/src/http/ngx_http_special_response.c | ||
+++ b/src/http/ngx_http_special_response.c | ||
@@ -26,7 +26,7 @@ static u_char ngx_http_error_full_tail[] = | ||
|
||
|
||
static u_char ngx_http_error_tail[] = | ||
-"<hr><center>nginx</center>" CRLF | ||
+"<hr><center>Arvan Cloud</center>" CRLF | ||
"</body>" CRLF | ||
"</html>" CRLF | ||
; |
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) { |
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,12 @@ | ||
diff --git a/src/os/unix/ngx_daemon.c b/src/os/unix/ngx_daemon.c | ||
index ab672110..f259af31 100644 | ||
--- a/src/os/unix/ngx_daemon.c | ||
+++ b/src/os/unix/ngx_daemon.c | ||
@@ -23,6 +23,8 @@ ngx_daemon(ngx_log_t *log) | ||
break; | ||
|
||
default: | ||
+ /* just to make it ASAN or Valgrind clean */ | ||
+ ngx_destroy_pool(ngx_cycle->pool); | ||
exit(0); | ||
} |
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,98 @@ | ||
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c | ||
index 57af8132..4853945f 100644 | ||
--- a/src/event/ngx_event.c | ||
+++ b/src/event/ngx_event.c | ||
@@ -196,6 +196,9 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle) | ||
ngx_uint_t flags; | ||
ngx_msec_t timer, delta; | ||
|
||
+ ngx_queue_t *q; | ||
+ ngx_event_t *ev; | ||
+ | ||
if (ngx_timer_resolution) { | ||
timer = NGX_TIMER_INFINITE; | ||
flags = 0; | ||
@@ -215,6 +218,13 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle) | ||
#endif | ||
} | ||
|
||
+ if (!ngx_queue_empty(&ngx_posted_delayed_events)) { | ||
+ ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, | ||
+ "posted delayed event queue not empty" | ||
+ " making poll timeout 0"); | ||
+ timer = 0; | ||
+ } | ||
+ | ||
if (ngx_use_accept_mutex) { | ||
if (ngx_accept_disabled > 0) { | ||
ngx_accept_disabled--; | ||
@@ -257,6 +267,35 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle) | ||
} | ||
|
||
ngx_event_process_posted(cycle, &ngx_posted_events); | ||
+ | ||
+ while (!ngx_queue_empty(&ngx_posted_delayed_events)) { | ||
+ q = ngx_queue_head(&ngx_posted_delayed_events); | ||
+ | ||
+ ev = ngx_queue_data(q, ngx_event_t, queue); | ||
+ if (ev->delayed) { | ||
+ /* start of newly inserted nodes */ | ||
+ for (/* void */; | ||
+ q != ngx_queue_sentinel(&ngx_posted_delayed_events); | ||
+ q = ngx_queue_next(q)) | ||
+ { | ||
+ ev = ngx_queue_data(q, ngx_event_t, queue); | ||
+ ev->delayed = 0; | ||
+ | ||
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, | ||
+ "skipping delayed posted event %p," | ||
+ " till next iteration", ev); | ||
+ } | ||
+ | ||
+ break; | ||
+ } | ||
+ | ||
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, | ||
+ "delayed posted event %p", ev); | ||
+ | ||
+ ngx_delete_posted_event(ev); | ||
+ | ||
+ ev->handler(ev); | ||
+ } | ||
} | ||
|
||
|
||
@@ -600,6 +639,7 @@ ngx_event_process_init(ngx_cycle_t *cycle) | ||
|
||
ngx_queue_init(&ngx_posted_accept_events); | ||
ngx_queue_init(&ngx_posted_events); | ||
+ ngx_queue_init(&ngx_posted_delayed_events); | ||
|
||
if (ngx_event_timer_init(cycle->log) == NGX_ERROR) { | ||
return NGX_ERROR; | ||
diff --git a/src/event/ngx_event_posted.c b/src/event/ngx_event_posted.c | ||
index d851f3d1..b6cea009 100644 | ||
--- a/src/event/ngx_event_posted.c | ||
+++ b/src/event/ngx_event_posted.c | ||
@@ -12,6 +12,7 @@ | ||
|
||
ngx_queue_t ngx_posted_accept_events; | ||
ngx_queue_t ngx_posted_events; | ||
+ngx_queue_t ngx_posted_delayed_events; | ||
|
||
|
||
void | ||
diff --git a/src/event/ngx_event_posted.h b/src/event/ngx_event_posted.h | ||
index 145d30fe..6c388553 100644 | ||
--- a/src/event/ngx_event_posted.h | ||
+++ b/src/event/ngx_event_posted.h | ||
@@ -43,6 +43,9 @@ void ngx_event_process_posted(ngx_cycle_t *cycle, ngx_queue_t *posted); | ||
|
||
extern ngx_queue_t ngx_posted_accept_events; | ||
extern ngx_queue_t ngx_posted_events; | ||
+extern ngx_queue_t ngx_posted_delayed_events; | ||
+ | ||
+#define HAVE_POSTED_DELAYED_EVENTS_PATCH | ||
|
||
|
||
#endif /* _NGX_EVENT_POSTED_H_INCLUDED_ */ |
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; " |
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,59 @@ | ||
diff -rup nginx-1.17.8/src/core/nginx.c nginx-1.17.8-patched/src/core/nginx.c | ||
--- nginx-1.17.8/src/core/nginx.c 2017-12-17 00:00:38.136470108 -0800 | ||
+++ nginx-1.17.8-patched/src/core/nginx.c 2017-12-16 23:59:51.680958322 -0800 | ||
@@ -186,6 +186,7 @@ static u_char *ngx_prefix; | ||
static u_char *ngx_conf_file; | ||
static u_char *ngx_conf_params; | ||
static char *ngx_signal; | ||
+ngx_pool_t *saved_init_cycle_pool = NULL; | ||
|
||
|
||
static char **ngx_os_environ; | ||
@@ -253,6 +254,8 @@ main(int argc, char *const *argv) | ||
return 1; | ||
} | ||
|
||
+ saved_init_cycle_pool = init_cycle.pool; | ||
+ | ||
if (ngx_save_argv(&init_cycle, argc, argv) != NGX_OK) { | ||
return 1; | ||
} | ||
diff -rup nginx-1.17.8/src/core/ngx_core.h nginx-1.17.8-patched/src/core/ngx_core.h | ||
--- nginx-1.17.8/src/core/ngx_core.h 2017-10-10 08:22:51.000000000 -0700 | ||
+++ nginx-1.17.8-patched/src/core/ngx_core.h 2017-12-16 23:59:51.679958370 -0800 | ||
@@ -108,4 +108,6 @@ void ngx_cpuinfo(void); | ||
#define NGX_DISABLE_SYMLINKS_NOTOWNER 2 | ||
#endif | ||
|
||
+extern ngx_pool_t *saved_init_cycle_pool; | ||
+ | ||
#endif /* _NGX_CORE_H_INCLUDED_ */ | ||
diff -rup nginx-1.17.8/src/core/ngx_cycle.c nginx-1.17.8-patched/src/core/ngx_cycle.c | ||
--- nginx-1.17.8/src/core/ngx_cycle.c 2017-10-10 08:22:51.000000000 -0700 | ||
+++ nginx-1.17.8-patched/src/core/ngx_cycle.c 2017-12-16 23:59:51.678958419 -0800 | ||
@@ -748,6 +748,10 @@ old_shm_zone_done: | ||
|
||
if (ngx_process == NGX_PROCESS_MASTER || ngx_is_init_cycle(old_cycle)) { | ||
|
||
+ if (ngx_is_init_cycle(old_cycle)) { | ||
+ saved_init_cycle_pool = NULL; | ||
+ } | ||
+ | ||
ngx_destroy_pool(old_cycle->pool); | ||
cycle->old_cycle = NULL; | ||
|
||
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 | ||
--- nginx-1.17.8/src/os/unix/ngx_process_cycle.c 2017-12-17 00:00:38.142469762 -0800 | ||
+++ nginx-1.17.8-patched/src/os/unix/ngx_process_cycle.c 2017-12-16 23:59:51.691957791 -0800 | ||
@@ -783,6 +783,11 @@ ngx_master_process_exit(ngx_cycle_t *cyc | ||
ngx_exit_cycle.files_n = ngx_cycle->files_n; | ||
ngx_cycle = &ngx_exit_cycle; | ||
|
||
+ if (saved_init_cycle_pool != NULL && saved_init_cycle_pool != cycle->pool) { | ||
+ ngx_destroy_pool(saved_init_cycle_pool); | ||
+ saved_init_cycle_pool = NULL; | ||
+ } | ||
+ | ||
ngx_destroy_pool(cycle->pool); | ||
|
||
exit(0); |
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,60 @@ | ||
diff --git a/src/core/ngx_cycle.h b/src/core/ngx_cycle.h | ||
index c51b7ff..4c335b9 100644 | ||
--- a/src/core/ngx_cycle.h | ||
+++ b/src/core/ngx_cycle.h | ||
@@ -22,9 +22,14 @@ | ||
#define NGX_DEBUG_POINTS_ABORT 2 | ||
|
||
|
||
+#define HAVE_INTERCEPT_ERROR_LOG_PATCH | ||
+ | ||
+ | ||
typedef struct ngx_shm_zone_s ngx_shm_zone_t; | ||
|
||
typedef ngx_int_t (*ngx_shm_zone_init_pt) (ngx_shm_zone_t *zone, void *data); | ||
+typedef ngx_int_t (*ngx_log_intercept_pt) (ngx_log_t *log, ngx_uint_t level, | ||
+ u_char *buf, size_t len); | ||
|
||
struct ngx_shm_zone_s { | ||
void *data; | ||
@@ -75,6 +80,10 @@ struct ngx_cycle_s { | ||
ngx_str_t prefix; | ||
ngx_str_t lock_file; | ||
ngx_str_t hostname; | ||
+ | ||
+ ngx_log_intercept_pt intercept_error_log_handler; | ||
+ void *intercept_error_log_data; | ||
+ unsigned entered_logger; /* :1 */ | ||
}; | ||
|
||
|
||
diff --git a/src/core/ngx_log.c b/src/core/ngx_log.c | ||
index 8e9408d..ed9b11b 100644 | ||
--- a/src/core/ngx_log.c | ||
+++ b/src/core/ngx_log.c | ||
@@ -112,6 +112,8 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err, | ||
ngx_uint_t wrote_stderr, debug_connection; | ||
u_char errstr[NGX_MAX_ERROR_STR]; | ||
|
||
+ ngx_log_intercept_pt log_intercept = NULL; | ||
+ | ||
last = errstr + NGX_MAX_ERROR_STR; | ||
|
||
p = ngx_cpymem(errstr, ngx_cached_err_log_time.data, | ||
@@ -153,6 +155,16 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err, | ||
p = last - NGX_LINEFEED_SIZE; | ||
} | ||
|
||
+ if (ngx_cycle) { | ||
+ log_intercept = ngx_cycle->intercept_error_log_handler; | ||
+ } | ||
+ | ||
+ if (log_intercept && !ngx_cycle->entered_logger) { | ||
+ ngx_cycle->entered_logger = 1; | ||
+ log_intercept(log, level, errstr, p - errstr); | ||
+ ngx_cycle->entered_logger = 0; | ||
+ } | ||
+ | ||
ngx_linefeed(p); | ||
|
||
wrote_stderr = 0; |
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,13 @@ | ||
--- nginx-1.17.8/src/core/ngx_log.h 2013-10-08 05:07:14.000000000 -0700 | ||
+++ nginx-1.17.8-patched/src/core/ngx_log.h 2013-12-05 20:35:35.996236720 -0800 | ||
@@ -64,7 +64,9 @@ struct ngx_log_s { | ||
}; | ||
|
||
|
||
-#define NGX_MAX_ERROR_STR 2048 | ||
+#ifndef NGX_MAX_ERROR_STR | ||
+#define NGX_MAX_ERROR_STR 4096 | ||
+#endif | ||
|
||
|
||
/*********************************/ |
Oops, something went wrong.