Compare commits

..

119 Commits

Author SHA1 Message Date
37bbfd4378 updated the tests to reflect recent changes. 2012-07-04 13:53:59 -07:00
4118c23f95 upgraded ngx_lua to 0.5.5 and lua-resty-redis to 0.10. 2012-07-04 13:51:43 -07:00
2d7a4ad019 upgraded ngx_lua to 0.5.4. 2012-06-28 16:08:04 -07:00
28e127dd92 upgraded ngx_srcache to 0.14. 2012-06-27 20:52:22 -07:00
21a9b100a1 upgraded ngx_echo to 0.40 and ngx_lua to 0.5.3. 2012-06-25 11:12:01 +08:00
78e850f1b6 upgraded ngx_echo to 0.40rc1 and ngx_lua to 0.5.3rc1. 2012-06-24 22:56:27 +08:00
3373388062 bumped version to 1.2.1.3rc1. 2012-06-24 20:44:16 +08:00
1921477c18 applied nginx-1.2.1-location_if_inherits_proxy.patch to the nginx core. see http://mailman.nginx.org/pipermail/nginx-devel/2012-June/002374.html for details. 2012-06-24 20:43:10 +08:00
8e363e3493 we no longer bundle ngx_http_upstream_keepalive_module because it is already part of the nginx 1.2.1 core. released ngx_openresty devel version 1.2.1.1. 2012-06-22 23:07:17 +08:00
c74b535bb2 upgraded the (optional) no-pool patch to the latest version. 2012-06-22 15:33:35 +08:00
e800242da6 upgraded ngx_echo to 0.39 and ngx_lua to 0.5.2. 2012-06-22 14:56:25 +08:00
07a2a8d1c3 upgraded ngx_postgres to 1.0rc1. 2012-06-21 23:11:44 +08:00
2a871e5740 upgraded the nginx core to 1.2.1. bumped the version of ngx_openresty to 1.2.1.1rc1. 2012-06-17 17:24:48 +08:00
139b2911ea upgraded ngx_lua to 0.5.1; bumped version number of ngx_openresty to 1.0.15.13rc1. 2012-06-17 15:23:11 +08:00
1de4bb9338 bumped version number to 1.0.15.11. 2012-06-16 11:31:39 +08:00
baefa9126e upgraded ngx_lua to v0.5.0rc32; bumped version number of ngx_openresty to 1.0.15.11rc1. 2012-06-15 21:57:37 +08:00
2ad1408ba9 updated nginx-1.0.15-poll_del_event_at_exit.patch. thanks Maxim Dounin. 2012-06-15 11:41:44 +08:00
82a58c989f releng work for the 1.0.15.10 release. 2012-06-13 18:41:27 +08:00
3d4784c731 removed vim backup files from the source code distribution. thanks Xiaoyu Chen. 2012-06-11 10:54:02 +08:00
a8a9c9577a Revert "upgraded ngx_lua to 0.5.0rc31."
This reverts commit 950eafe167.

We should prepare for a stable version 1.0.15.10 first :)
2012-06-11 10:48:12 +08:00
950eafe167 upgraded ngx_lua to 0.5.0rc31. 2012-06-08 17:55:48 +08:00
d93314a122 bumped version to 1.0.15.9. 2012-06-07 20:43:20 +08:00
585a62afa6 upgraded ngx_rds_json to 0.12rc10. 2012-06-07 20:35:49 +08:00
03451f5037 upgraded ngx_lua to 0.5.0rc30. 2012-06-07 20:34:09 +08:00
bfe8fda504 bugfix: the no-pool patch might leak memory. now we have updated the no-pool patch to the latest version that is a thorough rewrite. 2012-06-07 19:42:07 +08:00
914c4c5ac4 applied poll_del_event_at_exit.patch: http://mailman.nginx.org/pipermail/nginx-devel/2012-June/002328.html 2012-06-07 17:50:33 +08:00
938d3731c8 applied the resolver_debug_log_overflow.patch: http://mailman.nginx.org/pipermail/nginx-devel/2012-June/002281.html 2012-06-01 18:21:55 +08:00
99e1bd7079 bumped version to 1.0.15.7 and also updated the test suite to reflect recent changes. 2012-05-29 12:03:28 +08:00
ba199714bc upgraded lua-resty-redis to 0.09 and ngx_rds_json to 0.12rc9. 2012-05-28 11:24:44 +08:00
281c06b2ed upgraded ngx_lua to 0.5.0rc29. 2012-05-28 11:16:45 +08:00
921603b036 fixed the filter_finalize_hang patch for a regression in the image filter. 2012-05-22 20:52:18 +08:00
140c431a59 removed patches that have already been included in the official nginx core. 2012-05-21 13:58:45 +08:00
0a0f70f4e8 applied the add_core_vars_polluting patch to fix a bug in the nginx core: http://mailman.nginx.org/pipermail/nginx-devel/2012-May/002231.html 2012-05-17 21:48:35 +08:00
21f8910725 bumped version number to 1.0.15.5 and updated the test suite to reflect recent changes. 2012-05-16 17:58:16 +08:00
1b11b4840f upgraded ngx_lua to 0.5.0rc28. 2012-05-16 17:22:00 +08:00
668c00fdb8 upgraded lua-resty-string to 0.06. 2012-05-14 15:09:50 +08:00
3f8ad8af58 added some tests for the new option --with-luajit-xcflags. 2012-05-14 13:48:48 +08:00
eecc5010eb updated the tests for the new option --with-luajit-xcflags. 2012-05-14 13:37:53 +08:00
2ee1f58571 updated tests to reflect recent changes. 2012-05-14 13:36:27 +08:00
4145db0b35 feature: added --with-luajit-xcflags option to ./configure. 2012-05-14 13:36:06 +08:00
88c1439437 bugfix: ./util/fix-tests could not distingish redis-nginx-module and redis2-nginx-module. 2012-05-14 13:35:04 +08:00
e8990b7d03 upgraded LuaJIT to 2.0.0beta10. 2012-05-13 21:34:16 +08:00
41d48ab573 upgraded ngx_rds_csv to 0.05rc2. 2012-05-13 21:05:08 +08:00
ba7a3d6c44 releng for 1.0.15.3. 2012-05-13 11:55:52 +08:00
8c5f23d79a upgraded lua-redis-parser to 0.09 and lua-rds-parser to 0.05. 2012-05-13 10:46:38 +08:00
a3cd675f1e upgraded lua-redis-parser to 0.09rc8. 2012-05-12 23:23:38 +08:00
a56bd55dac bumped version number to 1.0.15.3rc3. 2012-05-12 15:05:06 +08:00
7c0c2cb944 now we bundle Sergey A. Osokin's ngx_http_redis2 module into ngx_openresty. 2012-05-12 15:04:43 +08:00
9b1da949a3 updated tests to reflect recent changes in version numbers. 2012-05-12 15:03:17 +08:00
b76f452233 upgraded ngx_lua to 0.5.0rc27 and ngx_srcache to 0.13rc8. 2012-05-12 14:49:31 +08:00
94f1718e8d applied the filter_finalize_hang patch to the nginx core. see http://mailman.nginx.org/pipermail/nginx-devel/2012-May/002190.html for details. 2012-05-11 21:21:10 +08:00
8294e9b37a upgraded lua-resty-memcached to 0.07 and lua-resty-upload to 0.03. 2012-05-11 19:03:47 +08:00
558cbf12fc upgraded ngx_lua to 0.5.0rc26 and ngx_srcache to 0.13rc7. 2012-05-11 18:58:50 +08:00
8439b517f3 upgraded ngx_set_misc to 0.22rc8. 2012-05-10 15:31:10 +08:00
2762f39fc4 added the patch for a bug in ngx_http_named_location in the nginx core. 2012-05-02 22:11:27 +08:00
74d66c1027 upgraded ngx_drizzle to 0.1.2rc7 and ngx_lua to 0.5.0rc25. 2012-04-29 10:30:17 +08:00
de5e5e25de bugfix: now we also add <openresty_prefix>/lualib/?/init.lua to the default LUA_PATH. thanks bigplum for reporting this issue. 2012-04-18 15:29:10 +08:00
479fa188f0 upgraded ngx_lua to 0.5.0rc24. 2012-04-18 13:54:29 +08:00
7231e95996 upgraded ngx_set_misc to 0.22rc7. 2012-04-17 17:07:04 +08:00
8b66f41ea3 upgraded ngx_set_misc to 0.22rc6, ngx_rds_json to 0.12rc8, and ngx_lua to 0.5.0rc23. 2012-04-17 10:17:23 +08:00
deeea162c7 fixed patches for nginx 1.0.15. 2012-04-17 09:51:34 +08:00
06c8b65a8c upgraded the nginx core to 1.0.15. 2012-04-17 09:48:49 +08:00
74c48651b9 upgraded ngx_lua to 0.5.0rc22 and lua-resty-mysql to 0.07. also upgraded the nginx core to 1.0.14. 2012-04-05 16:00:32 +08:00
ce803e8a94 bumped version number to 1.0.11.28. 2012-03-25 15:47:30 +08:00
843fd34df6 use the best compress level for gzip. 2012-03-22 16:09:44 +08:00
39cea1cbb3 upgraded ngx_lua to 0.5.0rc21. 2012-03-22 15:38:11 +08:00
b4f3bd982f improved the upstream_pipelining patch a bit. 2012-03-21 21:44:15 +08:00
fcb85fb288 now we apply the upstream_pipelining patch to the nginx core by default. 2012-03-21 21:29:32 +08:00
9a756394cc added nginx-1.0.11-upstream_pipelining.patch 2012-03-21 21:27:01 +08:00
922f49f734 upgraded ngx_lua to 0.5.0rc20. 2012-03-21 21:12:19 +08:00
99c37ea419 upgraded ngx_echo to 0.38rc2. 2012-03-21 20:52:27 +08:00
767863f552 upgraded ngx_srcache to 0.13rc6. 2012-03-16 11:41:46 +08:00
45eb5fd21d added null_character_fixes patch to nginx 1.1.15. 2012-03-16 11:27:48 +08:00
926f75812b renamed the null character fixes patch. 2012-03-16 10:45:09 +08:00
0fed5de57c bumped version to 1.0.11.25. 2012-03-16 10:39:14 +08:00
deff21617c security: applied the null-character-fixes patch from the mainstream. The bug did result in a disclosure of previously freed memory if upstream server returned specially crafted response, potentially exposing sensitive information. 2012-03-16 10:37:53 +08:00
2d3383ee54 upgraded ngx_srcache to 0.13rc5. 2012-03-15 17:39:45 +08:00
f2f8a02aa9 upgraded ngx_lua to 0.5.0rc19. 2012-03-15 17:32:22 +08:00
d10a7ece5c upgraded ngx_srcache to 0.13rc4. 2012-03-15 15:53:47 +08:00
b01704d715 upgraded ngx_lua to 0.5.0rc18. 2012-03-12 21:31:12 +08:00
fa6683d2d0 upgraded lua-resty-redis to 0.08. 2012-03-11 18:50:52 +08:00
746320740a bugfix: the hotfix patch #4 for lua 5.1.4 has been removed from the official lua.org site. now we mirror it in my agentzh.org site. thanks damajor (Xav) for reporting this issue in github issue #10. 2012-03-11 17:41:07 +08:00
627f55d5d0 upgraded ngx_lua to 0.5.0rc17. 2012-03-06 22:47:48 +08:00
4579111c27 upgraded lua-resty-string to 0.05. 2012-03-05 23:09:20 +08:00
c9d5094560 upgraded lua-resty-redis to 0.07. 2012-03-05 20:35:17 +08:00
de51f31cda upgraded lua-redis-parser to 0.09rc7. 2012-03-01 15:50:25 +08:00
a4a3c09c76 upgraded ngx_redis2 to 0.08rc4. 2012-03-01 15:01:18 +08:00
ec23d93c0d no longer specify -DLUAJIT_USE_VALGRIND when --with-debug is specified. also upgraded lua-resty-* to their latest versions. 2012-02-29 15:16:10 +08:00
f459d71013 raised the default NGX_HTTP_MAX_SUBREQUESTS to 200, in sync with the official repository. 2012-02-29 11:30:45 +08:00
367a5d8c5f bundle new components lua-resty-mysql, lua-resty-upload, and lua-resty-string, which are enabled by default. also added options --without-lua_resty_mysql, --without-lua_resty_upload, and --without-lua_resty_string to ./configure for disabling them. 2012-02-28 22:34:40 +08:00
dfe629a607 updated tests to reflect recent changes. 2012-02-28 22:16:37 +08:00
d41cb7132c bundle new component lua-resty-redis which is enabled by default. also added option --without-lua_resty_redis to ./configure for disabling it. 2012-02-28 22:15:29 +08:00
7c210171d1 bundle new component lua-resty-memcached which is enabled by default. also added option --without-lua_resty_memcached to ./configure for disabling it. also upgraded ngx_lua to 0.5.0rc16. 2012-02-28 22:05:01 +08:00
51c12f72d6 now we apply the official hotfix #1 patch for luajit 2.0.0 beta9. 2012-02-24 14:49:55 +08:00
e95dc58c6e upgraded ngx_lua to 0.5.0rc15. 2012-02-23 16:33:47 +08:00
bb0af04df3 upgraded ngx_lua to 0.5.0rc14; also bumped version to 1.0.11.15. 2012-02-22 23:34:22 +08:00
c528989ead now we enable -DLUAJIT_USE_VALGRIND -DLUA_USE_APICHECK -DLUA_USE_ASSERT flags for luajit when --with-debug is specified. 2012-02-22 23:33:56 +08:00
71a3060051 updated tests for new versions of the components. 2012-02-21 11:43:17 +08:00
3ba6ac3224 apply the max_subrequests patch to allow the NGX_HTTP_MAX_SUBREQUESTS macro to be overridden from the outside and adjusted the default value from 50 to 100 because 50 is a little too conservative. 2012-02-20 16:04:30 +08:00
cc460be049 added patches for nginx 1.1.15. 2012-02-20 15:52:22 +08:00
134e901166 upgraded ngx_lua to 0.5.0rc13. 2012-02-19 22:03:56 +08:00
fda2e1e693 checked in the patches for nginx 1.0.12. 2012-02-17 23:15:10 +08:00
e9a14f843d upgraded ngx_lua to v0.5.0rc10. 2012-02-15 22:49:02 +08:00
475d430fd6 upgraded ngx_xss to 0.03rc9, ngx_rds_csv to 0.05rc1, ngx_iconv to 0.10rc7, ngx_redis2 to 0.08rc3, and ngx_lua to 0.5.0rc9. 2012-02-15 17:45:13 +08:00
ac6b83aff8 upgraded ngx_lua to v0.5.0rc7. 2012-02-14 18:57:40 +08:00
c93802bfed updated test suite to reflect recent changes. 2012-02-13 20:53:57 +08:00
e67456cc26 upgraded ngx_lua to 0.5.0rc6. 2012-02-13 20:47:28 +08:00
966222feef upgraded ngx_coolkit to 0.2rc1. 2012-02-08 17:11:33 +08:00
67d50a58bf added ngx_coolkit to the bundle. 2012-02-07 20:17:20 +08:00
3b79af7b99 upgraded ngx_lua to v0.5.0rc5 and bumped version number to 1.0.11.7. 2012-02-07 20:04:07 +08:00
60d348d651 upgraded ngx_lua to 0.5.0rc4. 2012-02-07 15:32:10 +08:00
2d2fabc6cd upgraded ngx_lua to 0.5.0rc3. 2012-02-06 12:40:11 +08:00
f6b914d594 upgraded ngx_redis2 to 0.09rc6. 2012-02-03 12:39:22 +08:00
5ee253a0e6 upgraded ngx_postgres to 0.9. 2012-02-02 12:41:20 +08:00
fc78d0290f upgraded ngx_lua to 0.5.0rc1. 2012-02-01 23:16:09 +08:00
9670d80bc1 upgraded the nginx core to 1.0.11. 2012-02-01 13:16:45 +08:00
91fc8d50ef upgraded ngx_lua to 0.4.1; also bumped the version number to 1.0.10.48. 2012-02-01 11:47:52 +08:00
d27c62e35f bumped version number to 1.0.10.47. 2012-01-29 22:45:02 +08:00
cc574137a0 upgraded ngx_lua to 0.4.1rc4. 2012-01-29 22:41:01 +08:00
92 changed files with 4126 additions and 1189 deletions

View File

@ -0,0 +1,14 @@
--- nginx-1.0.11/src/http/ngx_http_request.h 2011-08-29 18:39:23.000000000 +0800
+++ nginx-1.0.11-patched/src/http/ngx_http_request.h 2012-02-20 15:50:43.540762756 +0800
@@ -9,7 +9,10 @@
#define NGX_HTTP_MAX_URI_CHANGES 10
-#define NGX_HTTP_MAX_SUBREQUESTS 50
+
+#ifndef NGX_HTTP_MAX_SUBREQUESTS
+#define NGX_HTTP_MAX_SUBREQUESTS 200
+#endif
/* must be 2^n */
#define NGX_HTTP_LC_HEADER_LEN 32

View File

@ -0,0 +1,113 @@
--- src/http/modules/ngx_http_fastcgi_module.c
+++ src/http/modules/ngx_http_fastcgi_module.c
@@ -1501,10 +1501,10 @@ ngx_http_fastcgi_process_header(ngx_http
h->lowcase_key = h->key.data + h->key.len + 1
+ h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start,
- h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start,
- h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
}
h->hash = r->header_hash;
--- src/http/modules/ngx_http_proxy_module.c
+++ src/http/modules/ngx_http_proxy_module.c
@@ -1381,8 +1381,10 @@ ngx_http_proxy_process_header(ngx_http_r
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/modules/ngx_http_scgi_module.c
+++ src/http/modules/ngx_http_scgi_module.c
@@ -941,8 +941,10 @@ ngx_http_scgi_process_header(ngx_http_re
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/modules/ngx_http_uwsgi_module.c
+++ src/http/modules/ngx_http_uwsgi_module.c
@@ -985,8 +985,10 @@ ngx_http_uwsgi_process_header(ngx_http_r
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/ngx_http_parse.c
+++ src/http/ngx_http_parse.c
@@ -874,6 +874,10 @@ ngx_http_parse_header_line(ngx_http_requ
break;
}
+ if (ch == '\0') {
+ return NGX_HTTP_PARSE_INVALID_HEADER;
+ }
+
r->invalid_header = 1;
break;
@@ -936,6 +940,10 @@ ngx_http_parse_header_line(ngx_http_requ
break;
}
+ if (ch == '\0') {
+ return NGX_HTTP_PARSE_INVALID_HEADER;
+ }
+
r->invalid_header = 1;
break;
@@ -954,6 +962,8 @@ ngx_http_parse_header_line(ngx_http_requ
r->header_start = p;
r->header_end = p;
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
default:
r->header_start = p;
state = sw_value;
@@ -975,6 +985,8 @@ ngx_http_parse_header_line(ngx_http_requ
case LF:
r->header_end = p;
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
}
break;
@@ -988,6 +1000,8 @@ ngx_http_parse_header_line(ngx_http_requ
break;
case LF:
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
default:
state = sw_value;
break;

View File

@ -0,0 +1,32 @@
diff -ur nginx-1.0.11/src/http/ngx_http_upstream.c nginx-1.0.11-patched/src/http/ngx_http_upstream.c
--- nginx-1.0.11/src/http/ngx_http_upstream.c 2011-12-14 02:34:34.000000000 +0800
+++ nginx-1.0.11-patched/src/http/ngx_http_upstream.c 2012-03-21 21:20:17.333111806 +0800
@@ -1385,6 +1385,8 @@
/* rc == NGX_OK */
+ u->request_all_sent = 1;
+
if (c->tcp_nopush == NGX_TCP_NOPUSH_SET) {
if (ngx_tcp_push(c->fd) == NGX_ERROR) {
ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno,
@@ -1451,7 +1453,7 @@
#endif
- if (u->header_sent) {
+ if (u->request_all_sent) {
u->write_event_handler = ngx_http_upstream_dummy_handler;
(void) ngx_handle_write_event(c->write, 0);
diff -ur nginx-1.0.11/src/http/ngx_http_upstream.h nginx-1.0.11-patched/src/http/ngx_http_upstream.h
--- nginx-1.0.11/src/http/ngx_http_upstream.h 2011-11-01 22:18:10.000000000 +0800
+++ nginx-1.0.11-patched/src/http/ngx_http_upstream.h 2012-03-21 21:18:21.041237173 +0800
@@ -313,6 +313,7 @@
unsigned buffering:1;
unsigned request_sent:1;
+ unsigned request_all_sent:1;
unsigned header_sent:1;
};

View File

@ -1,6 +1,6 @@
diff -ur nginx-1.1.12/src/http/ngx_http_request_body.c nginx-1.1.12-patched/src/http/ngx_http_request_body.c diff -ur nginx-1.0.12/src/http/ngx_http_request_body.c nginx-1.0.12-patched/src/http/ngx_http_request_body.c
--- nginx-1.1.12/src/http/ngx_http_request_body.c 2011-09-30 22:36:19.000000000 +0800 --- nginx-1.0.12/src/http/ngx_http_request_body.c 2011-09-30 22:36:19.000000000 +0800
+++ nginx-1.1.12-patched/src/http/ngx_http_request_body.c 2011-10-21 21:54:08.460350482 +0800 +++ nginx-1.0.12-patched/src/http/ngx_http_request_body.c 2011-10-21 21:54:08.460350482 +0800
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
r->main->count++; r->main->count++;
@ -77,10 +77,10 @@ diff -ur nginx-1.1.12/src/http/ngx_http_request_body.c nginx-1.1.12-patched/src/
} }
} }
Only in nginx-1.1.12-patched/src/http: ngx_http_request_body.c~ Only in nginx-1.0.12-patched/src/http: ngx_http_request_body.c~
diff -ur nginx-1.1.12/src/http/ngx_http_request.c nginx-1.1.12-patched/src/http/ngx_http_request.c diff -ur nginx-1.0.12/src/http/ngx_http_request.c nginx-1.0.12-patched/src/http/ngx_http_request.c
--- nginx-1.1.12/src/http/ngx_http_request.c 2011-09-30 22:36:19.000000000 +0800 --- nginx-1.0.12/src/http/ngx_http_request.c 2011-09-30 22:36:19.000000000 +0800
+++ nginx-1.1.12-patched/src/http/ngx_http_request.c 2011-10-21 19:06:38.404350692 +0800 +++ nginx-1.0.12-patched/src/http/ngx_http_request.c 2011-10-21 19:06:38.404350692 +0800
@@ -286,6 +286,8 @@ @@ -286,6 +286,8 @@
r->pipeline = hc->pipeline; r->pipeline = hc->pipeline;
@ -99,10 +99,10 @@ diff -ur nginx-1.1.12/src/http/ngx_http_request.c nginx-1.1.12-patched/src/http/
hc->request = r; hc->request = r;
} }
Only in nginx-1.1.12-patched/src/http: ngx_http_request.c~ Only in nginx-1.0.12-patched/src/http: ngx_http_request.c~
diff -ur nginx-1.1.12/src/http/ngx_http_request.h nginx-1.1.12-patched/src/http/ngx_http_request.h diff -ur nginx-1.0.12/src/http/ngx_http_request.h nginx-1.0.12-patched/src/http/ngx_http_request.h
--- nginx-1.1.12/src/http/ngx_http_request.h 2011-08-29 18:39:23.000000000 +0800 --- nginx-1.0.12/src/http/ngx_http_request.h 2011-08-29 18:39:23.000000000 +0800
+++ nginx-1.1.12-patched/src/http/ngx_http_request.h 2011-10-21 17:26:13.203807584 +0800 +++ nginx-1.0.12-patched/src/http/ngx_http_request.h 2011-10-21 17:26:13.203807584 +0800
@@ -366,6 +366,9 @@ @@ -366,6 +366,9 @@
ngx_pool_t *pool; ngx_pool_t *pool;
ngx_buf_t *header_in; ngx_buf_t *header_in;
@ -113,5 +113,5 @@ diff -ur nginx-1.1.12/src/http/ngx_http_request.h nginx-1.1.12-patched/src/http/
ngx_http_headers_in_t headers_in; ngx_http_headers_in_t headers_in;
ngx_http_headers_out_t headers_out; ngx_http_headers_out_t headers_out;
Only in nginx-1.1.12-patched/src/http: ngx_http_request.h~ Only in nginx-1.0.12-patched/src/http: ngx_http_request.h~
Only in nginx-1.1.12-patched/src/http: tags Only in nginx-1.0.12-patched/src/http: tags

View File

@ -1,5 +1,5 @@
--- nginx-1.1.12/src/event/modules/ngx_epoll_module.c 2011-09-30 22:12:53.000000000 +0800 --- nginx-1.0.12/src/event/modules/ngx_epoll_module.c 2011-09-30 22:12:53.000000000 +0800
+++ nginx-1.1.12-patched/src/event/modules/ngx_epoll_module.c 2011-11-30 11:08:46.775817019 +0800 +++ nginx-1.0.12-patched/src/event/modules/ngx_epoll_module.c 2011-11-30 11:08:46.775817019 +0800
@@ -682,6 +682,17 @@ @@ -682,6 +682,17 @@
wev = c->write; wev = c->write;

View File

@ -1,5 +1,5 @@
--- nginx-1.1.13/src/http/modules/ngx_http_log_module.c 2011-11-01 21:24:50.000000000 +0800 --- nginx-1.0.12/src/http/modules/ngx_http_log_module.c 2011-11-01 21:24:50.000000000 +0800
+++ nginx-1.1.13-patched/src/http/modules/ngx_http_log_module.c 2011-11-10 16:17:29.599039534 +0800 +++ nginx-1.0.12-patched/src/http/modules/ngx_http_log_module.c 2011-11-10 16:17:29.599039534 +0800
@@ -61,6 +61,8 @@ @@ -61,6 +61,8 @@
time_t open_file_cache_valid; time_t open_file_cache_valid;
ngx_uint_t open_file_cache_min_uses; ngx_uint_t open_file_cache_min_uses;

View File

@ -0,0 +1,14 @@
--- nginx-1.0.12/src/http/ngx_http_request.h 2011-08-29 18:39:23.000000000 +0800
+++ nginx-1.0.12-patched/src/http/ngx_http_request.h 2012-02-20 15:50:43.540762756 +0800
@@ -9,7 +9,10 @@
#define NGX_HTTP_MAX_URI_CHANGES 10
-#define NGX_HTTP_MAX_SUBREQUESTS 50
+
+#ifndef NGX_HTTP_MAX_SUBREQUESTS
+#define NGX_HTTP_MAX_SUBREQUESTS 200
+#endif
/* must be 2^n */
#define NGX_HTTP_LC_HEADER_LEN 32

View File

@ -1,5 +1,5 @@
--- nginx-1.1.13/src/http/ngx_http_core_module.c 2011-09-27 19:14:02.000000000 +0800 --- nginx-1.0.12/src/http/ngx_http_core_module.c 2011-09-27 19:14:02.000000000 +0800
+++ nginx-1.1.13-patched/src/http/ngx_http_core_module.c 2011-10-13 15:02:24.414550532 +0800 +++ nginx-1.0.12-patched/src/http/ngx_http_core_module.c 2011-10-13 15:02:24.414550532 +0800
@@ -2542,6 +2542,9 @@ @@ -2542,6 +2542,9 @@
r->content_handler = NULL; r->content_handler = NULL;
r->loc_conf = (*clcfp)->loc_conf; r->loc_conf = (*clcfp)->loc_conf;

View File

@ -0,0 +1,24 @@
diff -ur nginx-1.0.12/auto/cc/gcc nginx-1.0.12-patched/auto/cc/gcc
--- nginx-1.0.12/auto/cc/gcc 2011-06-27 19:53:00.205737804 +0800
+++ nginx-1.0.12-patched/auto/cc/gcc 2011-06-27 19:53:13.837741087 +0800
@@ -169,7 +169,7 @@
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"
diff -ur nginx-1.0.12/auto/cc/icc nginx-1.0.12-patched/auto/cc/icc
--- nginx-1.0.12/auto/cc/icc 2011-06-27 19:52:56.370157068 +0800
+++ nginx-1.0.12-patched/auto/cc/icc 2011-06-27 19:53:19.508916811 +0800
@@ -139,7 +139,7 @@
esac
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"

View File

@ -1,5 +1,5 @@
--- nginx-1.1.12/src/http/ngx_http_core_module.c 2010-12-14 18:38:42.000000000 +0800 --- nginx-1.0.12/src/http/ngx_http_core_module.c 2010-12-14 18:38:42.000000000 +0800
+++ nginx-1.1.12-patched/src/http/ngx_http_core_module.c 2011-01-30 19:24:34.956354518 +0800 +++ nginx-1.0.12-patched/src/http/ngx_http_core_module.c 2011-01-30 19:24:34.956354518 +0800
@@ -57,6 +57,8 @@ @@ -57,6 +57,8 @@
void *conf); void *conf);
static char *ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd, static char *ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd,

View File

@ -1,18 +1,18 @@
diff -ur nginx-1.1.12/src/core/nginx.h nginx-1.1.12-patched/src/core/nginx.h diff -ur nginx-1.0.12/src/core/nginx.h nginx-1.0.12-patched/src/core/nginx.h
--- nginx-1.1.12/src/core/nginx.h 2011-08-29 17:30:22.000000000 +0800 --- nginx-1.0.12/src/core/nginx.h 2011-08-29 17:30:22.000000000 +0800
+++ nginx-1.1.12-patched/src/core/nginx.h 2011-09-13 12:11:03.135622101 +0800 +++ nginx-1.0.12-patched/src/core/nginx.h 2011-09-13 12:11:03.135622101 +0800
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
#define nginx_version 1001012 #define nginx_version 1000012
#define NGINX_VERSION "1.1.12" #define NGINX_VERSION "1.0.12"
-#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown" -#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown (no pool)" +#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown (no pool)"
#define NGINX_VAR "NGINX" #define NGINX_VAR "NGINX"
diff -ur nginx-1.1.12/src/core/ngx_array.c nginx-1.1.12-patched/src/core/ngx_array.c diff -ur nginx-1.0.12/src/core/ngx_array.c nginx-1.0.12-patched/src/core/ngx_array.c
--- nginx-1.1.12/src/core/ngx_array.c 2008-06-17 23:00:30.000000000 +0800 --- nginx-1.0.12/src/core/ngx_array.c 2008-06-17 23:00:30.000000000 +0800
+++ nginx-1.1.12-patched/src/core/ngx_array.c 2011-09-14 12:02:56.263128538 +0800 +++ nginx-1.0.12-patched/src/core/ngx_array.c 2011-09-14 12:02:56.263128538 +0800
@@ -39,13 +39,7 @@ @@ -39,13 +39,7 @@
p = a->pool; p = a->pool;
@ -121,9 +121,9 @@ diff -ur nginx-1.1.12/src/core/ngx_array.c nginx-1.1.12-patched/src/core/ngx_arr
} }
elt = (u_char *) a->elts + a->size * a->nelts; elt = (u_char *) a->elts + a->size * a->nelts;
diff -ur nginx-1.1.12/src/core/ngx_palloc.c nginx-1.1.12-patched/src/core/ngx_palloc.c diff -ur nginx-1.0.12/src/core/ngx_palloc.c nginx-1.0.12-patched/src/core/ngx_palloc.c
--- nginx-1.1.12/src/core/ngx_palloc.c 2009-12-17 20:25:46.000000000 +0800 --- nginx-1.0.12/src/core/ngx_palloc.c 2009-12-17 20:25:46.000000000 +0800
+++ nginx-1.1.12-patched/src/core/ngx_palloc.c 2011-09-14 12:03:41.663126519 +0800 +++ nginx-1.0.12-patched/src/core/ngx_palloc.c 2011-09-14 12:03:41.663126519 +0800
@@ -8,24 +8,31 @@ @@ -8,24 +8,31 @@
#include <ngx_core.h> #include <ngx_core.h>
@ -468,9 +468,9 @@ diff -ur nginx-1.1.12/src/core/ngx_palloc.c nginx-1.1.12-patched/src/core/ngx_pa
} }
return NGX_DECLINED; return NGX_DECLINED;
diff -ur nginx-1.1.12/src/core/ngx_palloc.h nginx-1.1.12-patched/src/core/ngx_palloc.h diff -ur nginx-1.0.12/src/core/ngx_palloc.h nginx-1.0.12-patched/src/core/ngx_palloc.h
--- nginx-1.1.12/src/core/ngx_palloc.h 2009-12-17 20:25:46.000000000 +0800 --- nginx-1.0.12/src/core/ngx_palloc.h 2009-12-17 20:25:46.000000000 +0800
+++ nginx-1.1.12-patched/src/core/ngx_palloc.h 2011-09-13 12:11:03.155622101 +0800 +++ nginx-1.0.12-patched/src/core/ngx_palloc.h 2011-09-13 12:11:03.155622101 +0800
@@ -38,6 +38,7 @@ @@ -38,6 +38,7 @@

View File

@ -5,8 +5,8 @@
# Parent 610e909bb9e29766188aa86fae3abe0bd3432940 # Parent 610e909bb9e29766188aa86fae3abe0bd3432940
Core: fix body if it's preread and there are extra data. Core: fix body if it's preread and there are extra data.
--- nginx-1.1.12/src/http/ngx_http_request_body.c 2011-07-05 12:11:21.619264633 +0800 --- nginx-1.0.12/src/http/ngx_http_request_body.c 2011-07-05 12:11:21.619264633 +0800
+++ nginx-1.1.12-patched/src/http/ngx_http_request_body.c 2011-07-05 12:14:30.694321554 +0800 +++ nginx-1.0.12-patched/src/http/ngx_http_request_body.c 2011-07-05 12:14:30.694321554 +0800
@@ -141,6 +141,7 @@ @@ -141,6 +141,7 @@
/* the whole request body was pre-read */ /* the whole request body was pre-read */

View File

@ -0,0 +1,26 @@
diff -ur lz-nginx-1.0.12/nginx-1.0.12/src/core/nginx.h lz-nginx-1.0.12-patched/nginx-1.0.12/src/core/nginx.h
--- lz-nginx-1.0.12/nginx-1.0.12/src/core/nginx.h 2010-02-12 17:31:01.000000000 +0800
+++ lz-nginx-1.0.12-patched/nginx-1.0.12/src/core/nginx.h 2010-03-30 10:52:13.240702627 +0800
@@ -10,7 +10,7 @@
#define nginx_version 1000012
#define NGINX_VERSION "1.0.12"
-#define NGINX_VER "nginx/" NGINX_VERSION
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
Only in lz-nginx-1.0.12-patched/nginx-1.0.12/src/core: nginx.h.orig
Only in lz-nginx-1.0.12-patched/nginx-1.0.12/src/core: nginx.h.rej
diff -ur lz-nginx-1.0.12/nginx-1.0.12/src/http/ngx_http_header_filter_module.c lz-nginx-1.0.12-patched/nginx-1.0.12/src/http/ngx_http_header_filter_module.c
--- lz-nginx-1.0.12/nginx-1.0.12/src/http/ngx_http_header_filter_module.c 2010-03-03 23:14:04.000000000 +0800
+++ lz-nginx-1.0.12-patched/nginx-1.0.12/src/http/ngx_http_header_filter_module.c 2010-03-30 10:52:53.670909405 +0800
@@ -45,7 +45,7 @@
};
-static char ngx_http_server_string[] = "Server: nginx" CRLF;
+static char ngx_http_server_string[] = "Server: ngx_openresty" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

View File

@ -1,5 +1,5 @@
--- nginx-1.1.13/src/http/ngx_http_variables.c 2011-05-30 20:36:17.000000000 +0800 --- nginx-1.0.12/src/http/ngx_http_variables.c 2011-05-30 20:36:17.000000000 +0800
+++ nginx-1.1.13-patched/src/http/ngx_http_variables.c 2011-11-08 22:21:55.229247198 +0800 +++ nginx-1.0.12-patched/src/http/ngx_http_variables.c 2011-11-08 22:21:55.229247198 +0800
@@ -648,7 +648,17 @@ @@ -648,7 +648,17 @@
a = (ngx_array_t *) ((char *) r + data); a = (ngx_array_t *) ((char *) r + data);

View File

@ -1,6 +1,6 @@
diff -ur nginx-1.1.13/src/http/ngx_http_request_body.c nginx-1.1.13-patched/src/http/ngx_http_request_body.c diff -ur nginx-1.0.14/src/http/ngx_http_request_body.c nginx-1.0.14-patched/src/http/ngx_http_request_body.c
--- nginx-1.1.13/src/http/ngx_http_request_body.c 2011-09-30 22:36:19.000000000 +0800 --- nginx-1.0.14/src/http/ngx_http_request_body.c 2011-09-30 22:36:19.000000000 +0800
+++ nginx-1.1.13-patched/src/http/ngx_http_request_body.c 2011-10-21 21:54:08.460350482 +0800 +++ nginx-1.0.14-patched/src/http/ngx_http_request_body.c 2011-10-21 21:54:08.460350482 +0800
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
r->main->count++; r->main->count++;
@ -77,10 +77,9 @@ diff -ur nginx-1.1.13/src/http/ngx_http_request_body.c nginx-1.1.13-patched/src/
} }
} }
Only in nginx-1.1.13-patched/src/http: ngx_http_request_body.c~ diff -ur nginx-1.0.14/src/http/ngx_http_request.c nginx-1.0.14-patched/src/http/ngx_http_request.c
diff -ur nginx-1.1.13/src/http/ngx_http_request.c nginx-1.1.13-patched/src/http/ngx_http_request.c --- nginx-1.0.14/src/http/ngx_http_request.c 2011-09-30 22:36:19.000000000 +0800
--- nginx-1.1.13/src/http/ngx_http_request.c 2011-09-30 22:36:19.000000000 +0800 +++ nginx-1.0.14-patched/src/http/ngx_http_request.c 2011-10-21 19:06:38.404350692 +0800
+++ nginx-1.1.13-patched/src/http/ngx_http_request.c 2011-10-21 19:06:38.404350692 +0800
@@ -286,6 +286,8 @@ @@ -286,6 +286,8 @@
r->pipeline = hc->pipeline; r->pipeline = hc->pipeline;
@ -99,10 +98,9 @@ diff -ur nginx-1.1.13/src/http/ngx_http_request.c nginx-1.1.13-patched/src/http/
hc->request = r; hc->request = r;
} }
Only in nginx-1.1.13-patched/src/http: ngx_http_request.c~ diff -ur nginx-1.0.14/src/http/ngx_http_request.h nginx-1.0.14-patched/src/http/ngx_http_request.h
diff -ur nginx-1.1.13/src/http/ngx_http_request.h nginx-1.1.13-patched/src/http/ngx_http_request.h --- nginx-1.0.14/src/http/ngx_http_request.h 2011-08-29 18:39:23.000000000 +0800
--- nginx-1.1.13/src/http/ngx_http_request.h 2011-08-29 18:39:23.000000000 +0800 +++ nginx-1.0.14-patched/src/http/ngx_http_request.h 2011-10-21 17:26:13.203807584 +0800
+++ nginx-1.1.13-patched/src/http/ngx_http_request.h 2011-10-21 17:26:13.203807584 +0800
@@ -366,6 +366,9 @@ @@ -366,6 +366,9 @@
ngx_pool_t *pool; ngx_pool_t *pool;
ngx_buf_t *header_in; ngx_buf_t *header_in;
@ -113,5 +111,3 @@ diff -ur nginx-1.1.13/src/http/ngx_http_request.h nginx-1.1.13-patched/src/http/
ngx_http_headers_in_t headers_in; ngx_http_headers_in_t headers_in;
ngx_http_headers_out_t headers_out; ngx_http_headers_out_t headers_out;
Only in nginx-1.1.13-patched/src/http: ngx_http_request.h~
Only in nginx-1.1.13-patched/src/http: tags

View File

@ -1,5 +1,5 @@
--- nginx-1.1.13/src/event/modules/ngx_epoll_module.c 2011-09-30 22:12:53.000000000 +0800 --- nginx-1.0.14/src/event/modules/ngx_epoll_module.c 2011-09-30 22:12:53.000000000 +0800
+++ nginx-1.1.13-patched/src/event/modules/ngx_epoll_module.c 2011-11-30 11:08:46.775817019 +0800 +++ nginx-1.0.14-patched/src/event/modules/ngx_epoll_module.c 2011-11-30 11:08:46.775817019 +0800
@@ -682,6 +682,17 @@ @@ -682,6 +682,17 @@
wev = c->write; wev = c->write;

View File

@ -1,5 +1,5 @@
--- nginx-1.1.12/src/http/modules/ngx_http_log_module.c 2011-11-01 21:24:50.000000000 +0800 --- nginx-1.0.14/src/http/modules/ngx_http_log_module.c 2011-11-01 21:24:50.000000000 +0800
+++ nginx-1.1.12-patched/src/http/modules/ngx_http_log_module.c 2011-11-10 16:17:29.599039534 +0800 +++ nginx-1.0.14-patched/src/http/modules/ngx_http_log_module.c 2011-11-10 16:17:29.599039534 +0800
@@ -61,6 +61,8 @@ @@ -61,6 +61,8 @@
time_t open_file_cache_valid; time_t open_file_cache_valid;
ngx_uint_t open_file_cache_min_uses; ngx_uint_t open_file_cache_min_uses;

View File

@ -0,0 +1,14 @@
--- nginx-1.0.14/src/http/ngx_http_request.h 2011-08-29 18:39:23.000000000 +0800
+++ nginx-1.0.14-patched/src/http/ngx_http_request.h 2012-02-20 15:50:43.540762756 +0800
@@ -9,7 +9,10 @@
#define NGX_HTTP_MAX_URI_CHANGES 10
-#define NGX_HTTP_MAX_SUBREQUESTS 50
+
+#ifndef NGX_HTTP_MAX_SUBREQUESTS
+#define NGX_HTTP_MAX_SUBREQUESTS 200
+#endif
/* must be 2^n */
#define NGX_HTTP_LC_HEADER_LEN 32

View File

@ -1,5 +1,5 @@
--- nginx-1.1.12/src/http/ngx_http_core_module.c 2011-09-27 19:14:02.000000000 +0800 --- nginx-1.0.14/src/http/ngx_http_core_module.c 2011-09-27 19:14:02.000000000 +0800
+++ nginx-1.1.12-patched/src/http/ngx_http_core_module.c 2011-10-13 15:02:24.414550532 +0800 +++ nginx-1.0.14-patched/src/http/ngx_http_core_module.c 2011-10-13 15:02:24.414550532 +0800
@@ -2542,6 +2542,9 @@ @@ -2542,6 +2542,9 @@
r->content_handler = NULL; r->content_handler = NULL;
r->loc_conf = (*clcfp)->loc_conf; r->loc_conf = (*clcfp)->loc_conf;

View File

@ -0,0 +1,24 @@
diff -ur nginx-1.0.14/auto/cc/gcc nginx-1.0.14-patched/auto/cc/gcc
--- nginx-1.0.14/auto/cc/gcc 2011-06-27 19:53:00.205737804 +0800
+++ nginx-1.0.14-patched/auto/cc/gcc 2011-06-27 19:53:13.837741087 +0800
@@ -169,7 +169,7 @@
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"
diff -ur nginx-1.0.14/auto/cc/icc nginx-1.0.14-patched/auto/cc/icc
--- nginx-1.0.14/auto/cc/icc 2011-06-27 19:52:56.370157068 +0800
+++ nginx-1.0.14-patched/auto/cc/icc 2011-06-27 19:53:19.508916811 +0800
@@ -139,7 +139,7 @@
esac
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"

View File

@ -1,5 +1,5 @@
--- nginx-1.1.13/src/http/ngx_http_core_module.c 2010-12-14 18:38:42.000000000 +0800 --- nginx-1.0.14/src/http/ngx_http_core_module.c 2010-12-14 18:38:42.000000000 +0800
+++ nginx-1.1.13-patched/src/http/ngx_http_core_module.c 2011-01-30 19:24:34.956354518 +0800 +++ nginx-1.0.14-patched/src/http/ngx_http_core_module.c 2011-01-30 19:24:34.956354518 +0800
@@ -57,6 +57,8 @@ @@ -57,6 +57,8 @@
void *conf); void *conf);
static char *ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd, static char *ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd,

View File

@ -1,18 +1,18 @@
diff -ur nginx-1.1.13/src/core/nginx.h nginx-1.1.13-patched/src/core/nginx.h diff -ur nginx-1.0.14/src/core/nginx.h nginx-1.0.14-patched/src/core/nginx.h
--- nginx-1.1.13/src/core/nginx.h 2011-08-29 17:30:22.000000000 +0800 --- nginx-1.0.14/src/core/nginx.h 2011-08-29 17:30:22.000000000 +0800
+++ nginx-1.1.13-patched/src/core/nginx.h 2011-09-13 12:11:03.135622101 +0800 +++ nginx-1.0.14-patched/src/core/nginx.h 2011-09-13 12:11:03.135622101 +0800
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
#define nginx_version 1001013 #define nginx_version 1000014
#define NGINX_VERSION "1.1.13" #define NGINX_VERSION "1.0.14"
-#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown" -#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown (no pool)" +#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown (no pool)"
#define NGINX_VAR "NGINX" #define NGINX_VAR "NGINX"
diff -ur nginx-1.1.13/src/core/ngx_array.c nginx-1.1.13-patched/src/core/ngx_array.c diff -ur nginx-1.0.14/src/core/ngx_array.c nginx-1.0.14-patched/src/core/ngx_array.c
--- nginx-1.1.13/src/core/ngx_array.c 2008-06-17 23:00:30.000000000 +0800 --- nginx-1.0.14/src/core/ngx_array.c 2008-06-17 23:00:30.000000000 +0800
+++ nginx-1.1.13-patched/src/core/ngx_array.c 2011-09-14 12:02:56.263128538 +0800 +++ nginx-1.0.14-patched/src/core/ngx_array.c 2011-09-14 12:02:56.263128538 +0800
@@ -39,13 +39,7 @@ @@ -39,13 +39,7 @@
p = a->pool; p = a->pool;
@ -121,9 +121,9 @@ diff -ur nginx-1.1.13/src/core/ngx_array.c nginx-1.1.13-patched/src/core/ngx_arr
} }
elt = (u_char *) a->elts + a->size * a->nelts; elt = (u_char *) a->elts + a->size * a->nelts;
diff -ur nginx-1.1.13/src/core/ngx_palloc.c nginx-1.1.13-patched/src/core/ngx_palloc.c diff -ur nginx-1.0.14/src/core/ngx_palloc.c nginx-1.0.14-patched/src/core/ngx_palloc.c
--- nginx-1.1.13/src/core/ngx_palloc.c 2009-12-17 20:25:46.000000000 +0800 --- nginx-1.0.14/src/core/ngx_palloc.c 2009-12-17 20:25:46.000000000 +0800
+++ nginx-1.1.13-patched/src/core/ngx_palloc.c 2011-09-14 12:03:41.663126519 +0800 +++ nginx-1.0.14-patched/src/core/ngx_palloc.c 2011-09-14 12:03:41.663126519 +0800
@@ -8,24 +8,31 @@ @@ -8,24 +8,31 @@
#include <ngx_core.h> #include <ngx_core.h>
@ -468,9 +468,9 @@ diff -ur nginx-1.1.13/src/core/ngx_palloc.c nginx-1.1.13-patched/src/core/ngx_pa
} }
return NGX_DECLINED; return NGX_DECLINED;
diff -ur nginx-1.1.13/src/core/ngx_palloc.h nginx-1.1.13-patched/src/core/ngx_palloc.h diff -ur nginx-1.0.14/src/core/ngx_palloc.h nginx-1.0.14-patched/src/core/ngx_palloc.h
--- nginx-1.1.13/src/core/ngx_palloc.h 2009-12-17 20:25:46.000000000 +0800 --- nginx-1.0.14/src/core/ngx_palloc.h 2009-12-17 20:25:46.000000000 +0800
+++ nginx-1.1.13-patched/src/core/ngx_palloc.h 2011-09-13 12:11:03.155622101 +0800 +++ nginx-1.0.14-patched/src/core/ngx_palloc.h 2011-09-13 12:11:03.155622101 +0800
@@ -38,6 +38,7 @@ @@ -38,6 +38,7 @@

View File

@ -0,0 +1,113 @@
--- src/http/modules/ngx_http_fastcgi_module.c
+++ src/http/modules/ngx_http_fastcgi_module.c
@@ -1501,10 +1501,10 @@ ngx_http_fastcgi_process_header(ngx_http
h->lowcase_key = h->key.data + h->key.len + 1
+ h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start,
- h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start,
- h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
}
h->hash = r->header_hash;
--- src/http/modules/ngx_http_proxy_module.c
+++ src/http/modules/ngx_http_proxy_module.c
@@ -1381,8 +1381,10 @@ ngx_http_proxy_process_header(ngx_http_r
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/modules/ngx_http_scgi_module.c
+++ src/http/modules/ngx_http_scgi_module.c
@@ -941,8 +941,10 @@ ngx_http_scgi_process_header(ngx_http_re
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/modules/ngx_http_uwsgi_module.c
+++ src/http/modules/ngx_http_uwsgi_module.c
@@ -985,8 +985,10 @@ ngx_http_uwsgi_process_header(ngx_http_r
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/ngx_http_parse.c
+++ src/http/ngx_http_parse.c
@@ -874,6 +874,10 @@ ngx_http_parse_header_line(ngx_http_requ
break;
}
+ if (ch == '\0') {
+ return NGX_HTTP_PARSE_INVALID_HEADER;
+ }
+
r->invalid_header = 1;
break;
@@ -936,6 +940,10 @@ ngx_http_parse_header_line(ngx_http_requ
break;
}
+ if (ch == '\0') {
+ return NGX_HTTP_PARSE_INVALID_HEADER;
+ }
+
r->invalid_header = 1;
break;
@@ -954,6 +962,8 @@ ngx_http_parse_header_line(ngx_http_requ
r->header_start = p;
r->header_end = p;
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
default:
r->header_start = p;
state = sw_value;
@@ -975,6 +985,8 @@ ngx_http_parse_header_line(ngx_http_requ
case LF:
r->header_end = p;
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
}
break;
@@ -988,6 +1000,8 @@ ngx_http_parse_header_line(ngx_http_requ
break;
case LF:
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
default:
state = sw_value;
break;

View File

@ -5,8 +5,8 @@
# Parent 610e909bb9e29766188aa86fae3abe0bd3432940 # Parent 610e909bb9e29766188aa86fae3abe0bd3432940
Core: fix body if it's preread and there are extra data. Core: fix body if it's preread and there are extra data.
--- nginx-1.1.13/src/http/ngx_http_request_body.c 2011-07-05 12:11:21.619264633 +0800 --- nginx-1.0.14/src/http/ngx_http_request_body.c 2011-07-05 12:11:21.619264633 +0800
+++ nginx-1.1.13-patched/src/http/ngx_http_request_body.c 2011-07-05 12:14:30.694321554 +0800 +++ nginx-1.0.14-patched/src/http/ngx_http_request_body.c 2011-07-05 12:14:30.694321554 +0800
@@ -141,6 +141,7 @@ @@ -141,6 +141,7 @@
/* the whole request body was pre-read */ /* the whole request body was pre-read */

View File

@ -0,0 +1,26 @@
diff -ur lz-nginx-1.0.14/nginx-1.0.14/src/core/nginx.h lz-nginx-1.0.14-patched/nginx-1.0.14/src/core/nginx.h
--- lz-nginx-1.0.14/nginx-1.0.14/src/core/nginx.h 2010-02-12 17:31:01.000000000 +0800
+++ lz-nginx-1.0.14-patched/nginx-1.0.14/src/core/nginx.h 2010-03-30 10:52:13.240702627 +0800
@@ -10,7 +10,7 @@
#define nginx_version 1000014
#define NGINX_VERSION "1.0.14"
-#define NGINX_VER "nginx/" NGINX_VERSION
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
Only in lz-nginx-1.0.14-patched/nginx-1.0.14/src/core: nginx.h.orig
Only in lz-nginx-1.0.14-patched/nginx-1.0.14/src/core: nginx.h.rej
diff -ur lz-nginx-1.0.14/nginx-1.0.14/src/http/ngx_http_header_filter_module.c lz-nginx-1.0.14-patched/nginx-1.0.14/src/http/ngx_http_header_filter_module.c
--- lz-nginx-1.0.14/nginx-1.0.14/src/http/ngx_http_header_filter_module.c 2010-03-03 23:14:04.000000000 +0800
+++ lz-nginx-1.0.14-patched/nginx-1.0.14/src/http/ngx_http_header_filter_module.c 2010-03-30 10:52:53.670909405 +0800
@@ -45,7 +45,7 @@
};
-static char ngx_http_server_string[] = "Server: nginx" CRLF;
+static char ngx_http_server_string[] = "Server: ngx_openresty" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

View File

@ -0,0 +1,32 @@
diff -ur nginx-1.0.14/src/http/ngx_http_upstream.c nginx-1.0.14-patched/src/http/ngx_http_upstream.c
--- nginx-1.0.14/src/http/ngx_http_upstream.c 2011-12-14 02:34:34.000000000 +0800
+++ nginx-1.0.14-patched/src/http/ngx_http_upstream.c 2012-03-21 21:20:17.333111806 +0800
@@ -1385,6 +1385,8 @@
/* rc == NGX_OK */
+ u->request_all_sent = 1;
+
if (c->tcp_nopush == NGX_TCP_NOPUSH_SET) {
if (ngx_tcp_push(c->fd) == NGX_ERROR) {
ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno,
@@ -1451,7 +1453,7 @@
#endif
- if (u->header_sent) {
+ if (u->request_all_sent) {
u->write_event_handler = ngx_http_upstream_dummy_handler;
(void) ngx_handle_write_event(c->write, 0);
diff -ur nginx-1.0.14/src/http/ngx_http_upstream.h nginx-1.0.14-patched/src/http/ngx_http_upstream.h
--- nginx-1.0.14/src/http/ngx_http_upstream.h 2011-11-01 22:18:10.000000000 +0800
+++ nginx-1.0.14-patched/src/http/ngx_http_upstream.h 2012-03-21 21:18:21.041237173 +0800
@@ -313,6 +313,7 @@
unsigned buffering:1;
unsigned request_sent:1;
+ unsigned request_all_sent:1;
unsigned header_sent:1;
};

View File

@ -1,5 +1,5 @@
--- nginx-1.1.12/src/http/ngx_http_variables.c 2011-05-30 20:36:17.000000000 +0800 --- nginx-1.0.14/src/http/ngx_http_variables.c 2011-05-30 20:36:17.000000000 +0800
+++ nginx-1.1.12-patched/src/http/ngx_http_variables.c 2011-11-08 22:21:55.229247198 +0800 +++ nginx-1.0.14-patched/src/http/ngx_http_variables.c 2011-11-08 22:21:55.229247198 +0800
@@ -648,7 +648,17 @@ @@ -648,7 +648,17 @@
a = (ngx_array_t *) ((char *) r + data); a = (ngx_array_t *) ((char *) r + data);

View File

@ -0,0 +1,26 @@
--- nginx-1.0.15/src/http/ngx_http_variables.c 2012-03-05 20:36:51.000000000 +0800
+++ nginx-1.0.15-patched/src/http/ngx_http_variables.c 2012-05-17 16:21:42.120968722 +0800
@@ -1898,6 +1898,7 @@
{
ngx_int_t rc;
ngx_http_variable_t *v;
+ ngx_http_variable_t *value;
ngx_http_core_main_conf_t *cmcf;
cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module);
@@ -1918,7 +1919,14 @@
}
for (v = ngx_http_core_variables; v->name.len; v++) {
- rc = ngx_hash_add_key(cmcf->variables_keys, &v->name, v,
+ value = ngx_palloc(cf->pool, sizeof(ngx_http_variable_t));
+ if (value == NULL) {
+ return NGX_ERROR;
+ }
+
+ *value = *v;
+
+ rc = ngx_hash_add_key(cmcf->variables_keys, &value->name, value,
NGX_HASH_READONLY_KEY);
if (rc == NGX_OK) {

View File

@ -0,0 +1,113 @@
diff -ur nginx-1.0.15/src/http/ngx_http_request_body.c nginx-1.0.15-patched/src/http/ngx_http_request_body.c
--- nginx-1.0.15/src/http/ngx_http_request_body.c 2011-09-30 22:36:19.000000000 +0800
+++ nginx-1.0.15-patched/src/http/ngx_http_request_body.c 2011-10-21 21:54:08.460350482 +0800
@@ -38,7 +38,7 @@
r->main->count++;
- if (r->request_body || r->discard_body) {
+ if (r->request_body || r->discard_body || r->content_length_n == 0) {
post_handler(r);
return NGX_OK;
}
@@ -440,7 +440,7 @@
ssize_t size;
ngx_event_t *rev;
- if (r != r->main || r->discard_body) {
+ if (r != r->main || r->discard_body || r->content_length_n == 0) {
return NGX_OK;
}
@@ -456,20 +456,22 @@
ngx_del_timer(rev);
}
- if (r->headers_in.content_length_n <= 0 || r->request_body) {
+ r->content_length_n = r->headers_in.content_length_n;
+
+ if (r->content_length_n <= 0 || r->request_body) {
return NGX_OK;
}
size = r->header_in->last - r->header_in->pos;
if (size) {
- if (r->headers_in.content_length_n > size) {
+ if (r->content_length_n > size) {
r->header_in->pos += size;
- r->headers_in.content_length_n -= size;
+ r->content_length_n -= size;
} else {
- r->header_in->pos += (size_t) r->headers_in.content_length_n;
- r->headers_in.content_length_n = 0;
+ r->header_in->pos += (size_t) r->content_length_n;
+ r->content_length_n = 0;
return NGX_OK;
}
}
@@ -568,7 +570,7 @@
"http read discarded body");
for ( ;; ) {
- if (r->headers_in.content_length_n == 0) {
+ if (r->content_length_n == 0) {
r->read_event_handler = ngx_http_block_reading;
return NGX_OK;
}
@@ -577,9 +579,9 @@
return NGX_AGAIN;
}
- size = (r->headers_in.content_length_n > NGX_HTTP_DISCARD_BUFFER_SIZE) ?
+ size = (r->content_length_n > NGX_HTTP_DISCARD_BUFFER_SIZE) ?
NGX_HTTP_DISCARD_BUFFER_SIZE:
- (size_t) r->headers_in.content_length_n;
+ (size_t) r->content_length_n;
n = r->connection->recv(r->connection, buffer, size);
@@ -596,7 +598,7 @@
return NGX_OK;
}
- r->headers_in.content_length_n -= n;
+ r->content_length_n -= n;
}
}
diff -ur nginx-1.0.15/src/http/ngx_http_request.c nginx-1.0.15-patched/src/http/ngx_http_request.c
--- nginx-1.0.15/src/http/ngx_http_request.c 2011-09-30 22:36:19.000000000 +0800
+++ nginx-1.0.15-patched/src/http/ngx_http_request.c 2011-10-21 19:06:38.404350692 +0800
@@ -286,6 +286,8 @@
r->pipeline = hc->pipeline;
+ r->content_length_n = -1;
+
if (hc->nbusy) {
r->header_in = hc->busy[0];
}
@@ -297,6 +299,8 @@
return;
}
+ r->content_length_n = -1;
+
hc->request = r;
}
diff -ur nginx-1.0.15/src/http/ngx_http_request.h nginx-1.0.15-patched/src/http/ngx_http_request.h
--- nginx-1.0.15/src/http/ngx_http_request.h 2011-08-29 18:39:23.000000000 +0800
+++ nginx-1.0.15-patched/src/http/ngx_http_request.h 2011-10-21 17:26:13.203807584 +0800
@@ -366,6 +366,9 @@
ngx_pool_t *pool;
ngx_buf_t *header_in;
+ off_t content_length_n;
+ /* for discarding request body */
+
ngx_http_headers_in_t headers_in;
ngx_http_headers_out_t headers_out;

View File

@ -0,0 +1,10 @@
--- nginx-1.0.15/src/http/ngx_http_request.c 2012-03-05 20:49:32.000000000 +0800
+++ nginx-1.0.15-patched/src/http/ngx_http_request.c 2012-05-22 20:46:57.000000000 +0800
@@ -1900,7 +1900,6 @@
if (rc == NGX_OK && r->filter_finalize) {
c->error = 1;
- return;
}
if (rc == NGX_DECLINED) {

View File

@ -0,0 +1,115 @@
--- nginx-1.0.15/src/http/modules/ngx_http_log_module.c 2011-11-01 21:24:50.000000000 +0800
+++ nginx-1.0.15-patched/src/http/modules/ngx_http_log_module.c 2011-11-10 16:17:29.599039534 +0800
@@ -61,6 +61,8 @@
time_t open_file_cache_valid;
ngx_uint_t open_file_cache_min_uses;
+ ngx_flag_t escape_non_ascii;
+
ngx_uint_t off; /* unsigned off:1 */
} ngx_http_log_loc_conf_t;
@@ -104,7 +106,8 @@
uintptr_t data);
static u_char *ngx_http_log_variable(ngx_http_request_t *r, u_char *buf,
ngx_http_log_op_t *op);
-static uintptr_t ngx_http_log_escape(u_char *dst, u_char *src, size_t size);
+static uintptr_t ngx_http_log_escape(ngx_http_log_loc_conf_t *lcf, u_char *dst,
+ u_char *src, size_t size);
static void *ngx_http_log_create_main_conf(ngx_conf_t *cf);
@@ -146,6 +149,13 @@
0,
NULL },
+ { ngx_string("log_escape_non_ascii"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
+ ngx_conf_set_flag_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_log_loc_conf_t, escape_non_ascii),
+ NULL },
+
ngx_null_command
};
@@ -637,6 +647,7 @@
ngx_http_log_variable_getlen(ngx_http_request_t *r, uintptr_t data)
{
uintptr_t len;
+ ngx_http_log_loc_conf_t *lcf;
ngx_http_variable_value_t *value;
value = ngx_http_get_indexed_variable(r, data);
@@ -645,7 +656,9 @@
return 1;
}
- len = ngx_http_log_escape(NULL, value->data, value->len);
+ lcf = ngx_http_get_module_loc_conf(r, ngx_http_log_module);
+
+ len = ngx_http_log_escape(lcf, NULL, value->data, value->len);
value->escape = len ? 1 : 0;
@@ -656,6 +669,7 @@
static u_char *
ngx_http_log_variable(ngx_http_request_t *r, u_char *buf, ngx_http_log_op_t *op)
{
+ ngx_http_log_loc_conf_t *lcf;
ngx_http_variable_value_t *value;
value = ngx_http_get_indexed_variable(r, op->data);
@@ -669,16 +683,18 @@
return ngx_cpymem(buf, value->data, value->len);
} else {
- return (u_char *) ngx_http_log_escape(buf, value->data, value->len);
+ lcf = ngx_http_get_module_loc_conf(r, ngx_http_log_module);
+ return (u_char *) ngx_http_log_escape(lcf, buf, value->data, value->len);
}
}
static uintptr_t
-ngx_http_log_escape(u_char *dst, u_char *src, size_t size)
+ngx_http_log_escape(ngx_http_log_loc_conf_t *lcf, u_char *dst, u_char *src,
+ size_t size)
{
- ngx_uint_t n;
- static u_char hex[] = "0123456789ABCDEF";
+ ngx_uint_t n;
+ static u_char hex[] = "0123456789ABCDEF";
static uint32_t escape[] = {
0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
@@ -698,6 +714,12 @@
0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
};
+ if (lcf->escape_non_ascii) {
+ ngx_memset(&escape[4], 0xff, sizeof(uint32_t) * 4);
+
+ } else {
+ ngx_memzero(&escape[4], sizeof(uint32_t) * 4);
+ }
if (dst == NULL) {
@@ -781,6 +803,7 @@
}
conf->open_file_cache = NGX_CONF_UNSET_PTR;
+ conf->escape_non_ascii = NGX_CONF_UNSET;
return conf;
}
@@ -796,6 +819,8 @@
ngx_http_log_fmt_t *fmt;
ngx_http_log_main_conf_t *lmcf;
+ ngx_conf_merge_value(conf->escape_non_ascii, prev->escape_non_ascii, 1);
+
if (conf->open_file_cache == NGX_CONF_UNSET_PTR) {
conf->open_file_cache = prev->open_file_cache;

View File

@ -0,0 +1,14 @@
--- nginx-1.0.15/src/http/ngx_http_request.h 2011-08-29 18:39:23.000000000 +0800
+++ nginx-1.0.15-patched/src/http/ngx_http_request.h 2012-02-20 15:50:43.540762756 +0800
@@ -9,7 +9,10 @@
#define NGX_HTTP_MAX_URI_CHANGES 10
-#define NGX_HTTP_MAX_SUBREQUESTS 50
+
+#ifndef NGX_HTTP_MAX_SUBREQUESTS
+#define NGX_HTTP_MAX_SUBREQUESTS 200
+#endif
/* must be 2^n */
#define NGX_HTTP_LC_HEADER_LEN 32

View File

@ -0,0 +1,12 @@
--- nginx-1.0.15/src/http/ngx_http_core_module.c 2011-09-27 19:14:02.000000000 +0800
+++ nginx-1.0.15-patched/src/http/ngx_http_core_module.c 2011-10-13 15:02:24.414550532 +0800
@@ -2542,6 +2542,9 @@
r->content_handler = NULL;
r->loc_conf = (*clcfp)->loc_conf;
+ /* clear the modules contexts */
+ ngx_memzero(r->ctx, sizeof(void *) * ngx_http_max_module);
+
ngx_http_update_location_config(r);
cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module);

View File

@ -0,0 +1,24 @@
diff -ur nginx-1.0.15/auto/cc/gcc nginx-1.0.15-patched/auto/cc/gcc
--- nginx-1.0.15/auto/cc/gcc 2011-06-27 19:53:00.205737804 +0800
+++ nginx-1.0.15-patched/auto/cc/gcc 2011-06-27 19:53:13.837741087 +0800
@@ -169,7 +169,7 @@
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"
diff -ur nginx-1.0.15/auto/cc/icc nginx-1.0.15-patched/auto/cc/icc
--- nginx-1.0.15/auto/cc/icc 2011-06-27 19:52:56.370157068 +0800
+++ nginx-1.0.15-patched/auto/cc/icc 2011-06-27 19:53:19.508916811 +0800
@@ -139,7 +139,7 @@
esac
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"

View File

@ -1,5 +1,5 @@
--- nginx-1.1.5/src/http/ngx_http_core_module.c 2010-12-14 18:38:42.000000000 +0800 --- nginx-1.0.15/src/http/ngx_http_core_module.c 2010-12-14 18:38:42.000000000 +0800
+++ nginx-1.1.5-patched/src/http/ngx_http_core_module.c 2011-01-30 19:24:34.956354518 +0800 +++ nginx-1.0.15-patched/src/http/ngx_http_core_module.c 2011-01-30 19:24:34.956354518 +0800
@@ -57,6 +57,8 @@ @@ -57,6 +57,8 @@
void *conf); void *conf);
static char *ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd, static char *ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd,

View File

@ -1,26 +1,28 @@
diff -ur nginx-1.1.5/src/core/nginx.h nginx-1.1.5-patched/src/core/nginx.h diff -ur nginx-1.0.15/src/core/nginx.h nginx-1.0.15-patched/src/core/nginx.h
--- nginx-1.1.5/src/core/nginx.h 2011-08-29 17:30:22.000000000 +0800 --- nginx-1.0.15/src/core/nginx.h 2011-08-29 17:30:22.000000000 +0800
+++ nginx-1.1.5-patched/src/core/nginx.h 2011-09-13 12:11:03.135622101 +0800 +++ nginx-1.0.15-patched/src/core/nginx.h 2011-09-13 12:11:03.135622101 +0800
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
#define nginx_version 1001005 #define nginx_version 1000015
#define NGINX_VERSION "1.1.5" #define NGINX_VERSION "1.0.15"
-#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown" -#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown (no pool)" +#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown (no pool)"
#define NGINX_VAR "NGINX" #define NGINX_VAR "NGINX"
diff -ur nginx-1.1.5/src/core/ngx_array.c nginx-1.1.5-patched/src/core/ngx_array.c diff -urx '*~' -x '*.swp' nginx-1.0.15/src/core/ngx_array.c nginx-1.0.15-patched/src/core/ngx_array.c
--- nginx-1.1.5/src/core/ngx_array.c 2008-06-17 23:00:30.000000000 +0800 --- nginx-1.0.15/src/core/ngx_array.c 2012-02-06 04:02:59.000000000 +0800
+++ nginx-1.1.5-patched/src/core/ngx_array.c 2011-09-14 12:02:56.263128538 +0800 +++ nginx-1.0.15-patched/src/core/ngx_array.c 2012-06-04 20:11:32.494144287 +0800
@@ -39,13 +39,7 @@ @@ -40,13 +40,11 @@
p = a->pool; p = a->pool;
- if ((u_char *) a->elts + a->size * a->nalloc == p->d.last) { - if ((u_char *) a->elts + a->size * a->nalloc == p->d.last) {
- p->d.last -= a->size * a->nalloc; - p->d.last -= a->size * a->nalloc;
- } + if (a->elts) {
- + ngx_pfree(p, a->elts);
}
- if ((u_char *) a + sizeof(ngx_array_t) == p->d.last) { - if ((u_char *) a + sizeof(ngx_array_t) == p->d.last) {
- p->d.last = (u_char *) a; - p->d.last = (u_char *) a;
- } - }
@ -28,7 +30,7 @@ diff -ur nginx-1.1.5/src/core/ngx_array.c nginx-1.1.5-patched/src/core/ngx_array
} }
@@ -64,29 +58,17 @@ @@ -65,29 +63,19 @@
p = a->pool; p = a->pool;
@ -62,13 +64,15 @@ diff -ur nginx-1.1.5/src/core/ngx_array.c nginx-1.1.5-patched/src/core/ngx_array
} }
+ +
+ ngx_memcpy(new, a->elts, size); + ngx_memcpy(new, a->elts, size);
+
+ ngx_pfree(p, a->elts);
+
+ a->elts = new; + a->elts = new;
+ a->nalloc *= 2; + a->nalloc *= 2;
+
} }
elt = (u_char *) a->elts + a->size * a->nelts; elt = (u_char *) a->elts + a->size * a->nelts;
@@ -100,43 +82,25 @@ @@ -101,43 +89,28 @@
ngx_array_push_n(ngx_array_t *a, ngx_uint_t n) ngx_array_push_n(ngx_array_t *a, ngx_uint_t n)
{ {
void *elt, *new; void *elt, *new;
@ -116,28 +120,30 @@ diff -ur nginx-1.1.5/src/core/ngx_array.c nginx-1.1.5-patched/src/core/ngx_array
} }
+ +
+ ngx_memcpy(new, a->elts, a->nelts * a->size); + ngx_memcpy(new, a->elts, a->nelts * a->size);
+
+ ngx_pfree(p, a->elts);
+
+ a->elts = new; + a->elts = new;
+ a->nalloc = nalloc; + a->nalloc = nalloc;
} }
elt = (u_char *) a->elts + a->size * a->nelts; elt = (u_char *) a->elts + a->size * a->nelts;
diff -ur nginx-1.1.5/src/core/ngx_palloc.c nginx-1.1.5-patched/src/core/ngx_palloc.c diff -urx '*~' -x '*.swp' nginx-1.0.15/src/core/ngx_palloc.c nginx-1.0.15-patched/src/core/ngx_palloc.c
--- nginx-1.1.5/src/core/ngx_palloc.c 2009-12-17 20:25:46.000000000 +0800 --- nginx-1.0.15/src/core/ngx_palloc.c 2012-02-06 04:02:59.000000000 +0800
+++ nginx-1.1.5-patched/src/core/ngx_palloc.c 2011-09-14 12:03:41.663126519 +0800 +++ nginx-1.0.15-patched/src/core/ngx_palloc.c 2012-06-04 20:02:26.667925891 +0800
@@ -8,24 +8,31 @@ @@ -9,32 +9,23 @@
#include <ngx_core.h> #include <ngx_core.h>
-static void *ngx_palloc_block(ngx_pool_t *pool, size_t size); -static void *ngx_palloc_block(ngx_pool_t *pool, size_t size);
static void *ngx_palloc_large(ngx_pool_t *pool, size_t size); -static void *ngx_palloc_large(ngx_pool_t *pool, size_t size);
-
-
ngx_pool_t * ngx_pool_t *
ngx_create_pool(size_t size, ngx_log_t *log) ngx_create_pool(size_t size, ngx_log_t *log)
{ {
- ngx_pool_t *p; - ngx_pool_t *p;
+ ngx_pool_t *p; + ngx_pool_t *p;
+ ngx_pool_data_t *d;
- p = ngx_memalign(NGX_POOL_ALIGNMENT, size, log); - p = ngx_memalign(NGX_POOL_ALIGNMENT, size, log);
+ size = sizeof(ngx_pool_t); + size = sizeof(ngx_pool_t);
@ -150,126 +156,107 @@ diff -ur nginx-1.1.5/src/core/ngx_palloc.c nginx-1.1.5-patched/src/core/ngx_pall
- p->d.end = (u_char *) p + size; - p->d.end = (u_char *) p + size;
- p->d.next = NULL; - p->d.next = NULL;
- p->d.failed = 0; - p->d.failed = 0;
+ d = ngx_alloc(sizeof(ngx_pool_data_t), log); + ngx_memzero(p, size);
+
+ if (d == NULL) {
+ return NULL;
+ }
+
+ d->next = d;
+ d->prev = d;
+ d->alloc = NULL;
+ p->d = d;
size = size - sizeof(ngx_pool_t); size = size - sizeof(ngx_pool_t);
p->max = (size < NGX_MAX_ALLOC_FROM_POOL) ? size : NGX_MAX_ALLOC_FROM_POOL; p->max = (size < NGX_MAX_ALLOC_FROM_POOL) ? size : NGX_MAX_ALLOC_FROM_POOL;
@@ -43,7 +50,7 @@
p->current = p;
- p->chain = NULL;
- p->large = NULL;
- p->cleanup = NULL;
p->log = log;
return p;
@@ -44,8 +35,7 @@
void void
ngx_destroy_pool(ngx_pool_t *pool) ngx_destroy_pool(ngx_pool_t *pool)
{ {
- ngx_pool_t *p, *n; - ngx_pool_t *p, *n;
- ngx_pool_large_t *l;
+ ngx_pool_data_t *d, *n; + ngx_pool_data_t *d, *n;
ngx_pool_large_t *l;
ngx_pool_cleanup_t *c; ngx_pool_cleanup_t *c;
@@ -55,7 +62,7 @@ for (c = pool->cleanup; c; c = c->next) {
@@ -56,13 +46,9 @@
} }
} }
- for (l = pool->large; l; l = l->next) { - for (l = pool->large; l; l = l->next) {
+ for (l = pool->large; l ; l = l->next) { -
- ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0, "free: %p", l->alloc);
-
- if (l->alloc) {
- ngx_free(l->alloc);
- }
+ if (pool->d == NULL) {
+ ngx_free(pool);
+ return;
}
ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0, "free: %p", l->alloc); #if (NGX_DEBUG)
@@ -72,9 +58,9 @@
@@ -71,34 +78,45 @@ * so we cannot use this log while free()ing the pool
* so we can not use this log while the free()ing the pool
*/ */
- for (p = pool, n = pool->d.next; /* void */; p = n, n = n->d.next) { - for (p = pool, n = pool->d.next; /* void */; p = n, n = n->d.next) {
+ for (d = pool->d, n = d->next; ; d = n, n = n->next) { + for (d = pool->d, n = d->next; ; d = n, n = n->next) {
ngx_log_debug2(NGX_LOG_DEBUG_ALLOC, pool->log, 0, ngx_log_debug2(NGX_LOG_DEBUG_ALLOC, pool->log, 0,
- "free: %p, unused: %uz", p, p->d.end - p->d.last); - "free: %p, unused: %uz", p, p->d.end - p->d.last);
+ "free: %p", d); + "free: %p, unused: %d", d, 0);
- if (n == NULL) { if (n == NULL) {
+ if (n == pool->d) {
break; break;
} @@ -83,172 +69,82 @@
}
#endif #endif
+ if (pool->d->next == pool->d) {
+ ngx_free(pool->d);
+ } else {
+ for (d = pool->d, n = d->next; ; d = n, n = n->next) {
+ if (d->alloc) {
+ ngx_free(d->alloc);
+ }
+ ngx_free(d);
- for (p = pool, n = pool->d.next; /* void */; p = n, n = n->d.next) { - for (p = pool, n = pool->d.next; /* void */; p = n, n = n->d.next) {
- ngx_free(p); - ngx_free(p);
- + for (d = pool->d, n = d->next; ; d = n, n = n->next) {
- if (n == NULL) { + ngx_free(d->alloc);
- break; + ngx_free(d);
+ if (n == pool->d) {
+ break; if (n == NULL) {
+ } break;
} }
} }
+ -}
+ pool->d = NULL;
-void
-ngx_reset_pool(ngx_pool_t *pool)
-{
- ngx_pool_t *p;
- ngx_pool_large_t *l;
-
- for (l = pool->large; l; l = l->next) {
- if (l->alloc) {
- ngx_free(l->alloc);
- }
- }
-
- pool->large = NULL;
-
- for (p = pool; p; p = p->d.next) {
- p->d.last = (u_char *) p + sizeof(ngx_pool_t);
- }
+ ngx_free(pool); + ngx_free(pool);
} }
void -void *
ngx_reset_pool(ngx_pool_t *pool)
{
- ngx_pool_t *p;
- ngx_pool_large_t *l;
+ ngx_pool_data_t *p, *tmp;
+ ngx_pool_large_t *l;
+
+ for (l = pool->large; l ; l = l->next) {
+
+ ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0, "free: %p", l->alloc);
- for (l = pool->large; l; l = l->next) {
if (l->alloc) {
ngx_free(l->alloc);
}
@@ -106,109 +124,65 @@
pool->large = NULL;
- for (p = pool; p; p = p->d.next) {
- p->d.last = (u_char *) p + sizeof(ngx_pool_t);
+ p = pool->d->next;
+ while (p != pool->d) {
+ tmp = p;
+ ngx_free(p->alloc);
+ p->prev->next = p->next;
+ p->next->prev = p->prev;
+ p = p->next;
+ ngx_free(tmp);
}
-}
+ ngx_free(pool->d->alloc);
+ pool->d->alloc = NULL;
+
+}
void *
-ngx_palloc(ngx_pool_t *pool, size_t size) -ngx_palloc(ngx_pool_t *pool, size_t size)
+ngx_malloc(ngx_pool_t *pool, size_t size) +void
+ngx_reset_pool(ngx_pool_t *pool)
{ {
- u_char *m; - u_char *m;
- ngx_pool_t *p; - ngx_pool_t *p;
- -
- if (size <= pool->max) { - if (size <= pool->max) {
+ ngx_pool_data_t *new; + ngx_pool_data_t *d, *n;
+ void *m; + ngx_pool_data_t *saved = NULL;
- p = pool->current; - p = pool->current;
- -
@ -280,37 +267,29 @@ diff -ur nginx-1.1.5/src/core/ngx_palloc.c nginx-1.1.5-patched/src/core/ngx_pall
- p->d.last = m + size; - p->d.last = m + size;
- -
- return m; - return m;
- } + if (pool->d) {
- + for (d = pool->d, n = d->next; ; d = n, n = n->next) {
+ if (d->alloc == pool->log) {
+ saved = d;
+ continue;
}
- p = p->d.next; - p = p->d.next;
- -
- } while (p); - } while (p);
+ m = ngx_alloc(size, pool->log);
+ if (m == NULL) {
+ return NULL;
+ }
- return ngx_palloc_block(pool, size);
+ new = ngx_alloc(sizeof(ngx_pool_data_t), pool->log);
+ if (new == NULL){
+ ngx_free(m);
+ return NULL;
}
- return ngx_palloc_large(pool, size);
+ new->alloc = m;
+ new->next = pool->d;
+ new->prev = pool->d->prev;
+ pool->d->prev->next = new;
+ pool->d->prev = new;
+ return m;
}
- -
void * - return ngx_palloc_block(pool, size);
- }
-
- return ngx_palloc_large(pool, size);
-}
-
+ ngx_free(d->alloc);
+ ngx_free(d);
-void *
-ngx_pnalloc(ngx_pool_t *pool, size_t size) -ngx_pnalloc(ngx_pool_t *pool, size_t size)
+ngx_palloc(ngx_pool_t *pool, size_t size) -{
{
- u_char *m; - u_char *m;
- ngx_pool_t *p; - ngx_pool_t *p;
- -
@ -325,37 +304,42 @@ diff -ur nginx-1.1.5/src/core/ngx_palloc.c nginx-1.1.5-patched/src/core/ngx_pall
- p->d.last = m + size; - p->d.last = m + size;
- -
- return m; - return m;
- } + if (n == NULL) {
- + break;
}
+ }
- p = p->d.next; - p = p->d.next;
- -
- } while (p); - } while (p);
- -
- return ngx_palloc_block(pool, size); - return ngx_palloc_block(pool, size);
+ if (size <= 1024) { + pool->d = saved;
+ return ngx_malloc(pool, size);
} }
-
return ngx_palloc_large(pool, size); - return ngx_palloc_large(pool, size);
} }
-static void * -static void *
-ngx_palloc_block(ngx_pool_t *pool, size_t size) -ngx_palloc_block(ngx_pool_t *pool, size_t size)
+void * +void *
+ngx_pnalloc(ngx_pool_t *pool, size_t size) +ngx_malloc(ngx_pool_t *pool, size_t size)
{ {
- u_char *m; - u_char *m;
- size_t psize; - size_t psize;
- ngx_pool_t *p, *new, *current; - ngx_pool_t *p, *new, *current;
- + ngx_pool_data_t *new;
+ void *m;
- psize = (size_t) (pool->d.end - (u_char *) pool); - psize = (size_t) (pool->d.end - (u_char *) pool);
- -
- m = ngx_memalign(NGX_POOL_ALIGNMENT, psize, pool->log); - m = ngx_memalign(NGX_POOL_ALIGNMENT, psize, pool->log);
- if (m == NULL) { + m = ngx_alloc(size, pool->log);
- return NULL; if (m == NULL) {
- } return NULL;
- }
- new = (ngx_pool_t *) m; - new = (ngx_pool_t *) m;
- -
- new->d.end = m + psize; - new->d.end = m + psize;
@ -372,31 +356,37 @@ diff -ur nginx-1.1.5/src/core/ngx_palloc.c nginx-1.1.5-patched/src/core/ngx_pall
- if (p->d.failed++ > 4) { - if (p->d.failed++ > 4) {
- current = p->d.next; - current = p->d.next;
- } - }
+ if (size <= 1024) { + new = ngx_alloc(sizeof(ngx_pool_data_t), pool->log);
+ return ngx_malloc(pool, size); + if (new == NULL){
+ ngx_free(m);
+ return NULL;
} }
- p->d.next = new; - p->d.next = new;
- -
- pool->current = current ? current : new; - pool->current = current ? current : new;
- -
- return m; + new->alloc = m;
+ return ngx_palloc_large(pool, size); + new->next = pool->d;
+ pool->d = new;
return m;
} }
@@ -216,7 +190,6 @@ -static void *
ngx_palloc_large(ngx_pool_t *pool, size_t size) -ngx_palloc_large(ngx_pool_t *pool, size_t size)
+void *
+ngx_palloc(ngx_pool_t *pool, size_t size)
{ {
void *p; - void *p;
- ngx_uint_t n; - ngx_uint_t n;
ngx_pool_large_t *large; - ngx_pool_large_t *large;
-
p = ngx_alloc(size, pool->log); - p = ngx_alloc(size, pool->log);
@@ -224,20 +197,7 @@ - if (p == NULL) {
return NULL; - return NULL;
} - }
-
- n = 0; - n = 0;
- -
- for (large = pool->large; large; large = large->next) { - for (large = pool->large; large; large = large->next) {
@ -411,11 +401,26 @@ diff -ur nginx-1.1.5/src/core/ngx_palloc.c nginx-1.1.5-patched/src/core/ngx_pall
- } - }
- -
- large = ngx_palloc(pool, sizeof(ngx_pool_large_t)); - large = ngx_palloc(pool, sizeof(ngx_pool_large_t));
+ large = ngx_malloc(pool, sizeof(ngx_pool_large_t)); - if (large == NULL) {
if (large == NULL) { - ngx_free(p);
ngx_free(p); - return NULL;
return NULL; - }
@@ -262,7 +222,7 @@ + return ngx_malloc(pool, size);
+}
- large->alloc = p;
- large->next = pool->large;
- pool->large = large;
- return p;
+void *
+ngx_pnalloc(ngx_pool_t *pool, size_t size)
+{
+ return ngx_malloc(pool, size);
}
@@ -263,7 +159,7 @@
return NULL; return NULL;
} }
@ -424,62 +429,55 @@ diff -ur nginx-1.1.5/src/core/ngx_palloc.c nginx-1.1.5-patched/src/core/ngx_pall
if (large == NULL) { if (large == NULL) {
ngx_free(p); ngx_free(p);
return NULL; return NULL;
@@ -279,17 +239,41 @@ @@ -278,16 +174,27 @@
ngx_int_t ngx_int_t
ngx_pfree(ngx_pool_t *pool, void *p) -ngx_pfree(ngx_pool_t *pool, void *p)
+ngx_pfree(ngx_pool_t *pool, void *data)
{ {
- ngx_pool_large_t *l; - ngx_pool_large_t *l;
+ ngx_pool_large_t *l; + ngx_pool_data_t *p, *d;
+ ngx_pool_large_t *ll;
+ ngx_pool_data_t *d, *n;
- for (l = pool->large; l; l = l->next) { - for (l = pool->large; l; l = l->next) {
+ for (l = pool->large, ll = l; l; ll = l, l = l->next) { - if (p == l->alloc) {
if (p == l->alloc) { - ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0,
ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0, - "free: %p", l->alloc);
"free: %p", l->alloc); - ngx_free(l->alloc);
ngx_free(l->alloc); - l->alloc = NULL;
l->alloc = NULL; + p = NULL;
+ if (l == pool->large) { + for (d = pool->d; d; p = d, d = d->next) {
+ pool->large = NULL; + if (data == d->alloc) {
+ }
+ +
+ ll->next = l->next;
+ p = l;
+ break;
+ }
+ }
+ for (d = pool->d, n = d->next; ; d = n, n = d->next) {
+ if (p == d->alloc) {
+ ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0, "free: %p", d->alloc); + ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0, "free: %p", d->alloc);
+ if (d->alloc) { +
+ ngx_free(d->alloc); + ngx_free(d->alloc);
+ }
+ d->alloc = NULL; + d->alloc = NULL;
+ d->prev->next = d->next; +
+ d->next->prev = d->prev; + if (p) {
+ p->next = d->next;
+
+ } else {
+ pool->d = d->next;
+ }
+
+ ngx_free(d); + ngx_free(d);
return NGX_OK; return NGX_OK;
} }
+ if (d->next == pool->d) { diff -urx '*~' -x '*.swp' nginx-1.0.15/src/core/ngx_palloc.h nginx-1.0.15-patched/src/core/ngx_palloc.h
+ break; --- nginx-1.0.15/src/core/ngx_palloc.h 2012-02-06 04:02:59.000000000 +0800
+ } +++ nginx-1.0.15-patched/src/core/ngx_palloc.h 2012-06-04 19:39:32.803578356 +0800
} @@ -39,6 +39,8 @@
return NGX_DECLINED;
diff -ur nginx-1.1.5/src/core/ngx_palloc.h nginx-1.1.5-patched/src/core/ngx_palloc.h
--- nginx-1.1.5/src/core/ngx_palloc.h 2009-12-17 20:25:46.000000000 +0800
+++ nginx-1.1.5-patched/src/core/ngx_palloc.h 2011-09-13 12:11:03.155622101 +0800
@@ -38,6 +38,7 @@
typedef struct ngx_pool_large_s ngx_pool_large_t; typedef struct ngx_pool_large_s ngx_pool_large_t;
+typedef struct ngx_pool_data_s ngx_pool_data_t; +typedef struct ngx_pool_data_s ngx_pool_data_t;
+
struct ngx_pool_large_s { struct ngx_pool_large_s {
ngx_pool_large_t *next; ngx_pool_large_t *next;
@@ -45,16 +46,15 @@ @@ -46,16 +48,14 @@
}; };
@ -489,10 +487,9 @@ diff -ur nginx-1.1.5/src/core/ngx_palloc.h nginx-1.1.5-patched/src/core/ngx_pall
- ngx_pool_t *next; - ngx_pool_t *next;
- ngx_uint_t failed; - ngx_uint_t failed;
-} ngx_pool_data_t; -} ngx_pool_data_t;
+struct ngx_pool_data_s{ +struct ngx_pool_data_s {
+ ngx_pool_data_t *next; + ngx_pool_data_t *next;
+ ngx_pool_data_t *prev; + void *alloc;
+ void *alloc;
+}; +};

View File

@ -0,0 +1,113 @@
--- src/http/modules/ngx_http_fastcgi_module.c
+++ src/http/modules/ngx_http_fastcgi_module.c
@@ -1501,10 +1501,10 @@ ngx_http_fastcgi_process_header(ngx_http
h->lowcase_key = h->key.data + h->key.len + 1
+ h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start,
- h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start,
- h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
}
h->hash = r->header_hash;
--- src/http/modules/ngx_http_proxy_module.c
+++ src/http/modules/ngx_http_proxy_module.c
@@ -1381,8 +1381,10 @@ ngx_http_proxy_process_header(ngx_http_r
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/modules/ngx_http_scgi_module.c
+++ src/http/modules/ngx_http_scgi_module.c
@@ -941,8 +941,10 @@ ngx_http_scgi_process_header(ngx_http_re
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/modules/ngx_http_uwsgi_module.c
+++ src/http/modules/ngx_http_uwsgi_module.c
@@ -985,8 +985,10 @@ ngx_http_uwsgi_process_header(ngx_http_r
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/ngx_http_parse.c
+++ src/http/ngx_http_parse.c
@@ -874,6 +874,10 @@ ngx_http_parse_header_line(ngx_http_requ
break;
}
+ if (ch == '\0') {
+ return NGX_HTTP_PARSE_INVALID_HEADER;
+ }
+
r->invalid_header = 1;
break;
@@ -936,6 +940,10 @@ ngx_http_parse_header_line(ngx_http_requ
break;
}
+ if (ch == '\0') {
+ return NGX_HTTP_PARSE_INVALID_HEADER;
+ }
+
r->invalid_header = 1;
break;
@@ -954,6 +962,8 @@ ngx_http_parse_header_line(ngx_http_requ
r->header_start = p;
r->header_end = p;
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
default:
r->header_start = p;
state = sw_value;
@@ -975,6 +985,8 @@ ngx_http_parse_header_line(ngx_http_requ
case LF:
r->header_end = p;
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
}
break;
@@ -988,6 +1000,8 @@ ngx_http_parse_header_line(ngx_http_requ
break;
case LF:
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
default:
state = sw_value;
break;

View File

@ -0,0 +1,20 @@
--- nginx-1.0.15/src/os/unix/ngx_process_cycle.c 2012-02-06 04:02:59.000000000 +0800
+++ nginx-1.0.15-patched/src/os/unix/ngx_process_cycle.c 2012-06-15 11:39:11.234286287 +0800
@@ -707,6 +707,8 @@
ngx_exit_log.file = &ngx_exit_log_file;
ngx_exit_cycle.log = &ngx_exit_log;
+ ngx_exit_cycle.files = ngx_cycle->files;
+ ngx_exit_cycle.files_n = ngx_cycle->files_n;
ngx_cycle = &ngx_exit_cycle;
ngx_destroy_pool(cycle->pool);
@@ -1063,6 +1065,8 @@
ngx_exit_log.file = &ngx_exit_log_file;
ngx_exit_cycle.log = &ngx_exit_log;
+ ngx_exit_cycle.files = ngx_cycle->files;
+ ngx_exit_cycle.files_n = ngx_cycle->files_n;
ngx_cycle = &ngx_exit_cycle;
ngx_destroy_pool(cycle->pool);

View File

@ -5,8 +5,8 @@
# Parent 610e909bb9e29766188aa86fae3abe0bd3432940 # Parent 610e909bb9e29766188aa86fae3abe0bd3432940
Core: fix body if it's preread and there are extra data. Core: fix body if it's preread and there are extra data.
--- nginx-1.1.5/src/http/ngx_http_request_body.c 2011-07-05 12:11:21.619264633 +0800 --- nginx-1.0.15/src/http/ngx_http_request_body.c 2011-07-05 12:11:21.619264633 +0800
+++ nginx-1.1.5-patched/src/http/ngx_http_request_body.c 2011-07-05 12:14:30.694321554 +0800 +++ nginx-1.0.15-patched/src/http/ngx_http_request_body.c 2011-07-05 12:14:30.694321554 +0800
@@ -141,6 +141,7 @@ @@ -141,6 +141,7 @@
/* the whole request body was pre-read */ /* the whole request body was pre-read */

View File

@ -0,0 +1,11 @@
--- nginx-1.0.15/src/http/ngx_http_core_module.c 2012-03-05 21:03:39.000000000 +0800
+++ nginx-1.0.15-patched/src/http/ngx_http_core_module.c 2012-05-02 21:57:40.624937882 +0800
@@ -2567,6 +2567,8 @@
r->phase_handler = cmcf->phase_engine.location_rewrite_index;
+ r->write_event_handler = ngx_http_core_run_phases;
+
ngx_http_core_run_phases(r);
return NGX_DONE;

View File

@ -0,0 +1,11 @@
--- nginx-1.0.15/src/core/ngx_resolver.c 2012-03-05 21:17:56.000000000 +0800
+++ nginx-1.0.15-patched/src/core/ngx_resolver.c 2012-06-01 17:55:55.861130605 +0800
@@ -987,7 +987,7 @@
nan = (query->nan_hi << 8) + query->nan_lo;
ngx_log_debug6(NGX_LOG_DEBUG_CORE, r->log, 0,
- "resolver DNS response %ui fl:%04Xui %ui/%ui/%ui/%ui",
+ "resolver DNS response %ui fl:%04Xui %ui/%ui/%ud/%ud",
ident, flags, nqs, nan,
(query->nns_hi << 8) + query->nns_lo,
(query->nar_hi << 8) + query->nar_lo);

View File

@ -0,0 +1,26 @@
diff -ur lz-nginx-1.0.15/nginx-1.0.15/src/core/nginx.h lz-nginx-1.0.15-patched/nginx-1.0.15/src/core/nginx.h
--- lz-nginx-1.0.15/nginx-1.0.15/src/core/nginx.h 2010-02-12 17:31:01.000000000 +0800
+++ lz-nginx-1.0.15-patched/nginx-1.0.15/src/core/nginx.h 2010-03-30 10:52:13.240702627 +0800
@@ -10,7 +10,7 @@
#define nginx_version 1000015
#define NGINX_VERSION "1.0.15"
-#define NGINX_VER "nginx/" NGINX_VERSION
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
Only in lz-nginx-1.0.15-patched/nginx-1.0.15/src/core: nginx.h.orig
Only in lz-nginx-1.0.15-patched/nginx-1.0.15/src/core: nginx.h.rej
diff -ur lz-nginx-1.0.15/nginx-1.0.15/src/http/ngx_http_header_filter_module.c lz-nginx-1.0.15-patched/nginx-1.0.15/src/http/ngx_http_header_filter_module.c
--- lz-nginx-1.0.15/nginx-1.0.15/src/http/ngx_http_header_filter_module.c 2010-03-03 23:14:04.000000000 +0800
+++ lz-nginx-1.0.15-patched/nginx-1.0.15/src/http/ngx_http_header_filter_module.c 2010-03-30 10:52:53.670909405 +0800
@@ -45,7 +45,7 @@
};
-static char ngx_http_server_string[] = "Server: nginx" CRLF;
+static char ngx_http_server_string[] = "Server: ngx_openresty" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

View File

@ -0,0 +1,32 @@
diff -ur nginx-1.0.15/src/http/ngx_http_upstream.c nginx-1.0.15-patched/src/http/ngx_http_upstream.c
--- nginx-1.0.15/src/http/ngx_http_upstream.c 2011-12-14 02:34:34.000000000 +0800
+++ nginx-1.0.15-patched/src/http/ngx_http_upstream.c 2012-03-21 21:20:17.333111806 +0800
@@ -1385,6 +1385,8 @@
/* rc == NGX_OK */
+ u->request_all_sent = 1;
+
if (c->tcp_nopush == NGX_TCP_NOPUSH_SET) {
if (ngx_tcp_push(c->fd) == NGX_ERROR) {
ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno,
@@ -1451,7 +1453,7 @@
#endif
- if (u->header_sent) {
+ if (u->request_all_sent) {
u->write_event_handler = ngx_http_upstream_dummy_handler;
(void) ngx_handle_write_event(c->write, 0);
diff -ur nginx-1.0.15/src/http/ngx_http_upstream.h nginx-1.0.15-patched/src/http/ngx_http_upstream.h
--- nginx-1.0.15/src/http/ngx_http_upstream.h 2011-11-01 22:18:10.000000000 +0800
+++ nginx-1.0.15-patched/src/http/ngx_http_upstream.h 2012-03-21 21:18:21.041237173 +0800
@@ -313,6 +313,7 @@
unsigned buffering:1;
unsigned request_sent:1;
+ unsigned request_all_sent:1;
unsigned header_sent:1;
};

View File

@ -0,0 +1,73 @@
--- nginx-1.0.15/src/http/ngx_http_variables.c 2011-05-30 20:36:17.000000000 +0800
+++ nginx-1.0.15-patched/src/http/ngx_http_variables.c 2011-11-08 22:21:55.229247198 +0800
@@ -648,7 +648,17 @@
a = (ngx_array_t *) ((char *) r + data);
- n = a->nelts;
+ h = a->elts;
+ n = 0;
+
+ for (i = 0; i < a->nelts; i++) {
+
+ if (h[i]->hash == 0) {
+ continue;
+ }
+
+ n++;
+ }
if (n == 0) {
v->not_found = 1;
@@ -659,9 +669,7 @@
v->no_cacheable = 0;
v->not_found = 0;
- h = a->elts;
-
- if (n == 1) {
+ if (n == 1 && a->nelts == 1) {
v->len = (*h)->value.len;
v->data = (*h)->value.data;
@@ -670,7 +678,12 @@
len = - (ssize_t) (sizeof("; ") - 1);
- for (i = 0; i < n; i++) {
+ for (i = 0; i < a->nelts; i++) {
+
+ if (h[i]->hash == 0) {
+ continue;
+ }
+
len += h[i]->value.len + sizeof("; ") - 1;
}
@@ -683,9 +696,14 @@
v->data = p;
for (i = 0; /* void */ ; i++) {
+
+ if (h[i]->hash == 0) {
+ continue;
+ }
+
p = ngx_copy(p, h[i]->value.data, h[i]->value.len);
- if (i == n - 1) {
+ if (--n == 0) {
break;
}
@@ -738,6 +756,10 @@
i = 0;
}
+ if (header[i].hash == 0) {
+ continue;
+ }
+
for (n = 0; n + prefix < var->len && n < header[i].key.len; n++) {
ch = header[i].key.data[n];

View File

@ -1,24 +0,0 @@
diff -ur nginx-1.1.12/auto/cc/gcc nginx-1.1.12-patched/auto/cc/gcc
--- nginx-1.1.12/auto/cc/gcc 2011-06-27 19:53:00.205737804 +0800
+++ nginx-1.1.12-patched/auto/cc/gcc 2011-06-27 19:53:13.837741087 +0800
@@ -169,7 +169,7 @@
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"
diff -ur nginx-1.1.12/auto/cc/icc nginx-1.1.12-patched/auto/cc/icc
--- nginx-1.1.12/auto/cc/icc 2011-06-27 19:52:56.370157068 +0800
+++ nginx-1.1.12-patched/auto/cc/icc 2011-06-27 19:53:19.508916811 +0800
@@ -139,7 +139,7 @@
esac
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"

View File

@ -1,26 +0,0 @@
diff -ur lz-nginx-1.1.12/nginx-1.1.12/src/core/nginx.h lz-nginx-1.1.12-patched/nginx-1.1.12/src/core/nginx.h
--- lz-nginx-1.1.12/nginx-1.1.12/src/core/nginx.h 2010-02-12 17:31:01.000000000 +0800
+++ lz-nginx-1.1.12-patched/nginx-1.1.12/src/core/nginx.h 2010-03-30 10:52:13.240702627 +0800
@@ -10,7 +10,7 @@
#define nginx_version 1001012
#define NGINX_VERSION "1.1.12"
-#define NGINX_VER "nginx/" NGINX_VERSION
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
Only in lz-nginx-1.1.12-patched/nginx-1.1.12/src/core: nginx.h.orig
Only in lz-nginx-1.1.12-patched/nginx-1.1.12/src/core: nginx.h.rej
diff -ur lz-nginx-1.1.12/nginx-1.1.12/src/http/ngx_http_header_filter_module.c lz-nginx-1.1.12-patched/nginx-1.1.12/src/http/ngx_http_header_filter_module.c
--- lz-nginx-1.1.12/nginx-1.1.12/src/http/ngx_http_header_filter_module.c 2010-03-03 23:14:04.000000000 +0800
+++ lz-nginx-1.1.12-patched/nginx-1.1.12/src/http/ngx_http_header_filter_module.c 2010-03-30 10:52:53.670909405 +0800
@@ -45,7 +45,7 @@
};
-static char ngx_http_server_string[] = "Server: nginx" CRLF;
+static char ngx_http_server_string[] = "Server: ngx_openresty" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

View File

@ -1,24 +0,0 @@
diff -ur nginx-1.1.13/auto/cc/gcc nginx-1.1.13-patched/auto/cc/gcc
--- nginx-1.1.13/auto/cc/gcc 2011-06-27 19:53:00.205737804 +0800
+++ nginx-1.1.13-patched/auto/cc/gcc 2011-06-27 19:53:13.837741087 +0800
@@ -169,7 +169,7 @@
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"
diff -ur nginx-1.1.13/auto/cc/icc nginx-1.1.13-patched/auto/cc/icc
--- nginx-1.1.13/auto/cc/icc 2011-06-27 19:52:56.370157068 +0800
+++ nginx-1.1.13-patched/auto/cc/icc 2011-06-27 19:53:19.508916811 +0800
@@ -139,7 +139,7 @@
esac
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"

View File

@ -1,26 +0,0 @@
diff -ur lz-nginx-1.1.13/nginx-1.1.13/src/core/nginx.h lz-nginx-1.1.13-patched/nginx-1.1.13/src/core/nginx.h
--- lz-nginx-1.1.13/nginx-1.1.13/src/core/nginx.h 2010-02-12 17:31:01.000000000 +0800
+++ lz-nginx-1.1.13-patched/nginx-1.1.13/src/core/nginx.h 2010-03-30 10:52:13.240702627 +0800
@@ -10,7 +10,7 @@
#define nginx_version 1001013
#define NGINX_VERSION "1.1.13"
-#define NGINX_VER "nginx/" NGINX_VERSION
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
Only in lz-nginx-1.1.13-patched/nginx-1.1.13/src/core: nginx.h.orig
Only in lz-nginx-1.1.13-patched/nginx-1.1.13/src/core: nginx.h.rej
diff -ur lz-nginx-1.1.13/nginx-1.1.13/src/http/ngx_http_header_filter_module.c lz-nginx-1.1.13-patched/nginx-1.1.13/src/http/ngx_http_header_filter_module.c
--- lz-nginx-1.1.13/nginx-1.1.13/src/http/ngx_http_header_filter_module.c 2010-03-03 23:14:04.000000000 +0800
+++ lz-nginx-1.1.13-patched/nginx-1.1.13/src/http/ngx_http_header_filter_module.c 2010-03-30 10:52:53.670909405 +0800
@@ -45,7 +45,7 @@
};
-static char ngx_http_server_string[] = "Server: nginx" CRLF;
+static char ngx_http_server_string[] = "Server: ngx_openresty" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

View File

@ -0,0 +1,117 @@
diff -ur nginx-1.1.15/src/http/ngx_http_request_body.c nginx-1.1.15-patched/src/http/ngx_http_request_body.c
--- nginx-1.1.15/src/http/ngx_http_request_body.c 2011-09-30 22:36:19.000000000 +0800
+++ nginx-1.1.15-patched/src/http/ngx_http_request_body.c 2011-10-21 21:54:08.460350482 +0800
@@ -38,7 +38,7 @@
r->main->count++;
- if (r->request_body || r->discard_body) {
+ if (r->request_body || r->discard_body || r->content_length_n == 0) {
post_handler(r);
return NGX_OK;
}
@@ -440,7 +440,7 @@
ssize_t size;
ngx_event_t *rev;
- if (r != r->main || r->discard_body) {
+ if (r != r->main || r->discard_body || r->content_length_n == 0) {
return NGX_OK;
}
@@ -456,20 +456,22 @@
ngx_del_timer(rev);
}
- if (r->headers_in.content_length_n <= 0 || r->request_body) {
+ r->content_length_n = r->headers_in.content_length_n;
+
+ if (r->content_length_n <= 0 || r->request_body) {
return NGX_OK;
}
size = r->header_in->last - r->header_in->pos;
if (size) {
- if (r->headers_in.content_length_n > size) {
+ if (r->content_length_n > size) {
r->header_in->pos += size;
- r->headers_in.content_length_n -= size;
+ r->content_length_n -= size;
} else {
- r->header_in->pos += (size_t) r->headers_in.content_length_n;
- r->headers_in.content_length_n = 0;
+ r->header_in->pos += (size_t) r->content_length_n;
+ r->content_length_n = 0;
return NGX_OK;
}
}
@@ -568,7 +570,7 @@
"http read discarded body");
for ( ;; ) {
- if (r->headers_in.content_length_n == 0) {
+ if (r->content_length_n == 0) {
r->read_event_handler = ngx_http_block_reading;
return NGX_OK;
}
@@ -577,9 +579,9 @@
return NGX_AGAIN;
}
- size = (r->headers_in.content_length_n > NGX_HTTP_DISCARD_BUFFER_SIZE) ?
+ size = (r->content_length_n > NGX_HTTP_DISCARD_BUFFER_SIZE) ?
NGX_HTTP_DISCARD_BUFFER_SIZE:
- (size_t) r->headers_in.content_length_n;
+ (size_t) r->content_length_n;
n = r->connection->recv(r->connection, buffer, size);
@@ -596,7 +598,7 @@
return NGX_OK;
}
- r->headers_in.content_length_n -= n;
+ r->content_length_n -= n;
}
}
Only in nginx-1.1.15-patched/src/http: ngx_http_request_body.c~
diff -ur nginx-1.1.15/src/http/ngx_http_request.c nginx-1.1.15-patched/src/http/ngx_http_request.c
--- nginx-1.1.15/src/http/ngx_http_request.c 2011-09-30 22:36:19.000000000 +0800
+++ nginx-1.1.15-patched/src/http/ngx_http_request.c 2011-10-21 19:06:38.404350692 +0800
@@ -286,6 +286,8 @@
r->pipeline = hc->pipeline;
+ r->content_length_n = -1;
+
if (hc->nbusy) {
r->header_in = hc->busy[0];
}
@@ -297,6 +299,8 @@
return;
}
+ r->content_length_n = -1;
+
hc->request = r;
}
Only in nginx-1.1.15-patched/src/http: ngx_http_request.c~
diff -ur nginx-1.1.15/src/http/ngx_http_request.h nginx-1.1.15-patched/src/http/ngx_http_request.h
--- nginx-1.1.15/src/http/ngx_http_request.h 2011-08-29 18:39:23.000000000 +0800
+++ nginx-1.1.15-patched/src/http/ngx_http_request.h 2011-10-21 17:26:13.203807584 +0800
@@ -366,6 +366,9 @@
ngx_pool_t *pool;
ngx_buf_t *header_in;
+ off_t content_length_n;
+ /* for discarding request body */
+
ngx_http_headers_in_t headers_in;
ngx_http_headers_out_t headers_out;
Only in nginx-1.1.15-patched/src/http: ngx_http_request.h~
Only in nginx-1.1.15-patched/src/http: tags

View File

@ -0,0 +1,115 @@
--- nginx-1.1.15/src/http/modules/ngx_http_log_module.c 2011-11-01 21:24:50.000000000 +0800
+++ nginx-1.1.15-patched/src/http/modules/ngx_http_log_module.c 2011-11-10 16:17:29.599039534 +0800
@@ -61,6 +61,8 @@
time_t open_file_cache_valid;
ngx_uint_t open_file_cache_min_uses;
+ ngx_flag_t escape_non_ascii;
+
ngx_uint_t off; /* unsigned off:1 */
} ngx_http_log_loc_conf_t;
@@ -104,7 +106,8 @@
uintptr_t data);
static u_char *ngx_http_log_variable(ngx_http_request_t *r, u_char *buf,
ngx_http_log_op_t *op);
-static uintptr_t ngx_http_log_escape(u_char *dst, u_char *src, size_t size);
+static uintptr_t ngx_http_log_escape(ngx_http_log_loc_conf_t *lcf, u_char *dst,
+ u_char *src, size_t size);
static void *ngx_http_log_create_main_conf(ngx_conf_t *cf);
@@ -146,6 +149,13 @@
0,
NULL },
+ { ngx_string("log_escape_non_ascii"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
+ ngx_conf_set_flag_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_log_loc_conf_t, escape_non_ascii),
+ NULL },
+
ngx_null_command
};
@@ -637,6 +647,7 @@
ngx_http_log_variable_getlen(ngx_http_request_t *r, uintptr_t data)
{
uintptr_t len;
+ ngx_http_log_loc_conf_t *lcf;
ngx_http_variable_value_t *value;
value = ngx_http_get_indexed_variable(r, data);
@@ -645,7 +656,9 @@
return 1;
}
- len = ngx_http_log_escape(NULL, value->data, value->len);
+ lcf = ngx_http_get_module_loc_conf(r, ngx_http_log_module);
+
+ len = ngx_http_log_escape(lcf, NULL, value->data, value->len);
value->escape = len ? 1 : 0;
@@ -656,6 +669,7 @@
static u_char *
ngx_http_log_variable(ngx_http_request_t *r, u_char *buf, ngx_http_log_op_t *op)
{
+ ngx_http_log_loc_conf_t *lcf;
ngx_http_variable_value_t *value;
value = ngx_http_get_indexed_variable(r, op->data);
@@ -669,16 +683,18 @@
return ngx_cpymem(buf, value->data, value->len);
} else {
- return (u_char *) ngx_http_log_escape(buf, value->data, value->len);
+ lcf = ngx_http_get_module_loc_conf(r, ngx_http_log_module);
+ return (u_char *) ngx_http_log_escape(lcf, buf, value->data, value->len);
}
}
static uintptr_t
-ngx_http_log_escape(u_char *dst, u_char *src, size_t size)
+ngx_http_log_escape(ngx_http_log_loc_conf_t *lcf, u_char *dst, u_char *src,
+ size_t size)
{
- ngx_uint_t n;
- static u_char hex[] = "0123456789ABCDEF";
+ ngx_uint_t n;
+ static u_char hex[] = "0123456789ABCDEF";
static uint32_t escape[] = {
0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
@@ -698,6 +714,12 @@
0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
};
+ if (lcf->escape_non_ascii) {
+ ngx_memset(&escape[4], 0xff, sizeof(uint32_t) * 4);
+
+ } else {
+ ngx_memzero(&escape[4], sizeof(uint32_t) * 4);
+ }
if (dst == NULL) {
@@ -781,6 +803,7 @@
}
conf->open_file_cache = NGX_CONF_UNSET_PTR;
+ conf->escape_non_ascii = NGX_CONF_UNSET;
return conf;
}
@@ -796,6 +819,8 @@
ngx_http_log_fmt_t *fmt;
ngx_http_log_main_conf_t *lmcf;
+ ngx_conf_merge_value(conf->escape_non_ascii, prev->escape_non_ascii, 1);
+
if (conf->open_file_cache == NGX_CONF_UNSET_PTR) {
conf->open_file_cache = prev->open_file_cache;

View File

@ -0,0 +1,12 @@
--- nginx-1.1.15/src/http/ngx_http_core_module.c 2011-09-27 19:14:02.000000000 +0800
+++ nginx-1.1.15-patched/src/http/ngx_http_core_module.c 2011-10-13 15:02:24.414550532 +0800
@@ -2542,6 +2542,9 @@
r->content_handler = NULL;
r->loc_conf = (*clcfp)->loc_conf;
+ /* clear the modules contexts */
+ ngx_memzero(r->ctx, sizeof(void *) * ngx_http_max_module);
+
ngx_http_update_location_config(r);
cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module);

View File

@ -0,0 +1,24 @@
diff -ur nginx-1.1.15/auto/cc/gcc nginx-1.1.15-patched/auto/cc/gcc
--- nginx-1.1.15/auto/cc/gcc 2011-06-27 19:53:00.205737804 +0800
+++ nginx-1.1.15-patched/auto/cc/gcc 2011-06-27 19:53:13.837741087 +0800
@@ -169,7 +169,7 @@
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"
diff -ur nginx-1.1.15/auto/cc/icc nginx-1.1.15-patched/auto/cc/icc
--- nginx-1.1.15/auto/cc/icc 2011-06-27 19:52:56.370157068 +0800
+++ nginx-1.1.15-patched/auto/cc/icc 2011-06-27 19:53:19.508916811 +0800
@@ -139,7 +139,7 @@
esac
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"

View File

@ -0,0 +1,90 @@
--- nginx-1.1.15/src/http/ngx_http_core_module.c 2010-12-14 18:38:42.000000000 +0800
+++ nginx-1.1.15-patched/src/http/ngx_http_core_module.c 2011-01-30 19:24:34.956354518 +0800
@@ -57,6 +57,8 @@
void *conf);
static char *ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd,
void *conf);
+static char *ngx_http_core_no_error_pages(ngx_conf_t *cf, ngx_command_t *cmd,
+ void *conf);
static char *ngx_http_core_try_files(ngx_conf_t *cf, ngx_command_t *cmd,
void *conf);
static char *ngx_http_core_open_file_cache(ngx_conf_t *cf, ngx_command_t *cmd,
@@ -614,6 +616,14 @@
0,
NULL },
+ { ngx_string("no_error_pages"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
+ |NGX_CONF_NOARGS,
+ ngx_http_core_no_error_pages,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ 0,
+ NULL },
+
{ ngx_string("try_files"),
NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_2MORE,
ngx_http_core_try_files,
@@ -3052,7 +3062,6 @@
* clcf->types = NULL;
* clcf->default_type = { 0, NULL };
* clcf->error_log = NULL;
- * clcf->error_pages = NULL;
* clcf->try_files = NULL;
* clcf->client_body_path = NULL;
* clcf->regex = NULL;
@@ -3062,6 +3071,7 @@
* clcf->gzip_proxied = 0;
*/
+ clcf->error_pages = NGX_CONF_UNSET_PTR;
clcf->client_max_body_size = NGX_CONF_UNSET;
clcf->client_body_buffer_size = NGX_CONF_UNSET_SIZE;
clcf->client_body_timeout = NGX_CONF_UNSET_MSEC;
@@ -3250,9 +3260,7 @@
}
}
- if (conf->error_pages == NULL && prev->error_pages) {
- conf->error_pages = prev->error_pages;
- }
+ ngx_conf_merge_ptr_value(conf->error_pages, prev->error_pages, NULL);
ngx_conf_merge_str_value(conf->default_type,
prev->default_type, "text/plain");
@@ -3988,6 +3996,10 @@
ngx_http_compile_complex_value_t ccv;
if (clcf->error_pages == NULL) {
+ return "conflicts with \"no_error_pages\"";
+ }
+
+ if (clcf->error_pages == NGX_CONF_UNSET_PTR) {
clcf->error_pages = ngx_array_create(cf->pool, 4,
sizeof(ngx_http_err_page_t));
if (clcf->error_pages == NULL) {
@@ -4095,6 +4107,25 @@
static char *
+ngx_http_core_no_error_pages(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
+{
+ ngx_http_core_loc_conf_t *clcf = conf;
+
+ if (clcf->error_pages == NULL) {
+ return "is duplicate";
+ }
+
+ if (clcf->error_pages != NGX_CONF_UNSET_PTR) {
+ return "conflicts with \"error_page\"";
+ }
+
+ clcf->error_pages = NULL;
+
+ return NGX_CONF_OK;
+}
+
+
+static char *
ngx_http_core_try_files(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
ngx_http_core_loc_conf_t *clcf = conf;

View File

@ -1,18 +1,18 @@
diff -ur nginx-1.1.4/src/core/nginx.h nginx-1.1.4-patched/src/core/nginx.h diff -ur nginx-1.1.15/src/core/nginx.h nginx-1.1.15-patched/src/core/nginx.h
--- nginx-1.1.4/src/core/nginx.h 2011-08-29 17:30:22.000000000 +0800 --- nginx-1.1.15/src/core/nginx.h 2011-08-29 17:30:22.000000000 +0800
+++ nginx-1.1.4-patched/src/core/nginx.h 2011-09-13 12:11:03.135622101 +0800 +++ nginx-1.1.15-patched/src/core/nginx.h 2011-09-13 12:11:03.135622101 +0800
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
#define nginx_version 1001004 #define nginx_version 1001015
#define NGINX_VERSION "1.1.4" #define NGINX_VERSION "1.1.15"
-#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown" -#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown (no pool)" +#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown (no pool)"
#define NGINX_VAR "NGINX" #define NGINX_VAR "NGINX"
diff -ur nginx-1.1.4/src/core/ngx_array.c nginx-1.1.4-patched/src/core/ngx_array.c diff -ur nginx-1.1.15/src/core/ngx_array.c nginx-1.1.15-patched/src/core/ngx_array.c
--- nginx-1.1.4/src/core/ngx_array.c 2008-06-17 23:00:30.000000000 +0800 --- nginx-1.1.15/src/core/ngx_array.c 2008-06-17 23:00:30.000000000 +0800
+++ nginx-1.1.4-patched/src/core/ngx_array.c 2011-09-14 12:02:56.263128538 +0800 +++ nginx-1.1.15-patched/src/core/ngx_array.c 2011-09-14 12:02:56.263128538 +0800
@@ -39,13 +39,7 @@ @@ -39,13 +39,7 @@
p = a->pool; p = a->pool;
@ -121,9 +121,9 @@ diff -ur nginx-1.1.4/src/core/ngx_array.c nginx-1.1.4-patched/src/core/ngx_array
} }
elt = (u_char *) a->elts + a->size * a->nelts; elt = (u_char *) a->elts + a->size * a->nelts;
diff -ur nginx-1.1.4/src/core/ngx_palloc.c nginx-1.1.4-patched/src/core/ngx_palloc.c diff -ur nginx-1.1.15/src/core/ngx_palloc.c nginx-1.1.15-patched/src/core/ngx_palloc.c
--- nginx-1.1.4/src/core/ngx_palloc.c 2009-12-17 20:25:46.000000000 +0800 --- nginx-1.1.15/src/core/ngx_palloc.c 2009-12-17 20:25:46.000000000 +0800
+++ nginx-1.1.4-patched/src/core/ngx_palloc.c 2011-09-14 12:03:41.663126519 +0800 +++ nginx-1.1.15-patched/src/core/ngx_palloc.c 2011-09-14 12:03:41.663126519 +0800
@@ -8,24 +8,31 @@ @@ -8,24 +8,31 @@
#include <ngx_core.h> #include <ngx_core.h>
@ -468,9 +468,9 @@ diff -ur nginx-1.1.4/src/core/ngx_palloc.c nginx-1.1.4-patched/src/core/ngx_pall
} }
return NGX_DECLINED; return NGX_DECLINED;
diff -ur nginx-1.1.4/src/core/ngx_palloc.h nginx-1.1.4-patched/src/core/ngx_palloc.h diff -ur nginx-1.1.15/src/core/ngx_palloc.h nginx-1.1.15-patched/src/core/ngx_palloc.h
--- nginx-1.1.4/src/core/ngx_palloc.h 2009-12-17 20:25:46.000000000 +0800 --- nginx-1.1.15/src/core/ngx_palloc.h 2009-12-17 20:25:46.000000000 +0800
+++ nginx-1.1.4-patched/src/core/ngx_palloc.h 2011-09-13 12:11:03.155622101 +0800 +++ nginx-1.1.15-patched/src/core/ngx_palloc.h 2011-09-13 12:11:03.155622101 +0800
@@ -38,6 +38,7 @@ @@ -38,6 +38,7 @@

View File

@ -0,0 +1,26 @@
diff -ur lz-nginx-1.1.15/nginx-1.1.15/src/core/nginx.h lz-nginx-1.1.15-patched/nginx-1.1.15/src/core/nginx.h
--- lz-nginx-1.1.15/nginx-1.1.15/src/core/nginx.h 2010-02-12 17:31:01.000000000 +0800
+++ lz-nginx-1.1.15-patched/nginx-1.1.15/src/core/nginx.h 2010-03-30 10:52:13.240702627 +0800
@@ -10,7 +10,7 @@
#define nginx_version 1001015
#define NGINX_VERSION "1.1.15"
-#define NGINX_VER "nginx/" NGINX_VERSION
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
Only in lz-nginx-1.1.15-patched/nginx-1.1.15/src/core: nginx.h.orig
Only in lz-nginx-1.1.15-patched/nginx-1.1.15/src/core: nginx.h.rej
diff -ur lz-nginx-1.1.15/nginx-1.1.15/src/http/ngx_http_header_filter_module.c lz-nginx-1.1.15-patched/nginx-1.1.15/src/http/ngx_http_header_filter_module.c
--- lz-nginx-1.1.15/nginx-1.1.15/src/http/ngx_http_header_filter_module.c 2010-03-03 23:14:04.000000000 +0800
+++ lz-nginx-1.1.15-patched/nginx-1.1.15/src/http/ngx_http_header_filter_module.c 2010-03-30 10:52:53.670909405 +0800
@@ -45,7 +45,7 @@
};
-static char ngx_http_server_string[] = "Server: nginx" CRLF;
+static char ngx_http_server_string[] = "Server: ngx_openresty" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

View File

@ -1,24 +0,0 @@
diff -ur nginx-1.1.4/auto/cc/gcc nginx-1.1.4-patched/auto/cc/gcc
--- nginx-1.1.4/auto/cc/gcc 2011-06-27 19:53:00.205737804 +0800
+++ nginx-1.1.4-patched/auto/cc/gcc 2011-06-27 19:53:13.837741087 +0800
@@ -169,7 +169,7 @@
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"
diff -ur nginx-1.1.4/auto/cc/icc nginx-1.1.4-patched/auto/cc/icc
--- nginx-1.1.4/auto/cc/icc 2011-06-27 19:52:56.370157068 +0800
+++ nginx-1.1.4-patched/auto/cc/icc 2011-06-27 19:53:19.508916811 +0800
@@ -139,7 +139,7 @@
esac
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"

View File

@ -1,26 +0,0 @@
diff -ur lz-nginx-1.1.4/nginx-1.1.4/src/core/nginx.h lz-nginx-1.1.4-patched/nginx-1.1.4/src/core/nginx.h
--- lz-nginx-1.1.4/nginx-1.1.4/src/core/nginx.h 2010-02-12 17:31:01.000000000 +0800
+++ lz-nginx-1.1.4-patched/nginx-1.1.4/src/core/nginx.h 2010-03-30 10:52:13.240702627 +0800
@@ -10,7 +10,7 @@
#define nginx_version 1001004
#define NGINX_VERSION "1.1.4"
-#define NGINX_VER "nginx/" NGINX_VERSION
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
Only in lz-nginx-1.1.4-patched/nginx-1.1.4/src/core: nginx.h.orig
Only in lz-nginx-1.1.4-patched/nginx-1.1.4/src/core: nginx.h.rej
diff -ur lz-nginx-1.1.4/nginx-1.1.4/src/http/ngx_http_header_filter_module.c lz-nginx-1.1.4-patched/nginx-1.1.4/src/http/ngx_http_header_filter_module.c
--- lz-nginx-1.1.4/nginx-1.1.4/src/http/ngx_http_header_filter_module.c 2010-03-03 23:14:04.000000000 +0800
+++ lz-nginx-1.1.4-patched/nginx-1.1.4/src/http/ngx_http_header_filter_module.c 2010-03-30 10:52:53.670909405 +0800
@@ -45,7 +45,7 @@
};
-static char ngx_http_server_string[] = "Server: nginx" CRLF;
+static char ngx_http_server_string[] = "Server: ngx_openresty" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

View File

@ -1,21 +0,0 @@
--- nginx-1.1.5/src/event/modules/ngx_epoll_module.c 2011-09-30 22:12:53.000000000 +0800
+++ nginx-1.1.5-patched/src/event/modules/ngx_epoll_module.c 2011-11-07 18:07:04.764111952 +0800
@@ -681,6 +681,18 @@
wev = c->write;
+ if (c->fd == -1 || wev->instance != instance) {
+
+ /*
+ * the stale event from a file descriptor
+ * that was just closed in this iteration
+ */
+
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+ "epoll: stale event %p", c);
+ continue;
+ }
+
if ((revents & EPOLLOUT) && wev->active) {
if (flags & NGX_POST_THREAD_EVENTS) {

View File

@ -1,24 +0,0 @@
diff -ur nginx-1.1.5/auto/cc/gcc nginx-1.1.5-patched/auto/cc/gcc
--- nginx-1.1.5/auto/cc/gcc 2011-06-27 19:53:00.205737804 +0800
+++ nginx-1.1.5-patched/auto/cc/gcc 2011-06-27 19:53:13.837741087 +0800
@@ -169,7 +169,7 @@
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"
diff -ur nginx-1.1.5/auto/cc/icc nginx-1.1.5-patched/auto/cc/icc
--- nginx-1.1.5/auto/cc/icc 2011-06-27 19:52:56.370157068 +0800
+++ nginx-1.1.5-patched/auto/cc/icc 2011-06-27 19:53:19.508916811 +0800
@@ -139,7 +139,7 @@
esac
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"

View File

@ -1,26 +0,0 @@
diff -ur lz-nginx-1.1.5/nginx-1.1.5/src/core/nginx.h lz-nginx-1.1.5-patched/nginx-1.1.5/src/core/nginx.h
--- lz-nginx-1.1.5/nginx-1.1.5/src/core/nginx.h 2010-02-12 17:31:01.000000000 +0800
+++ lz-nginx-1.1.5-patched/nginx-1.1.5/src/core/nginx.h 2010-03-30 10:52:13.240702627 +0800
@@ -10,7 +10,7 @@
#define nginx_version 1001005
#define NGINX_VERSION "1.1.5"
-#define NGINX_VER "nginx/" NGINX_VERSION
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
Only in lz-nginx-1.1.5-patched/nginx-1.1.5/src/core: nginx.h.orig
Only in lz-nginx-1.1.5-patched/nginx-1.1.5/src/core: nginx.h.rej
diff -ur lz-nginx-1.1.5/nginx-1.1.5/src/http/ngx_http_header_filter_module.c lz-nginx-1.1.5-patched/nginx-1.1.5/src/http/ngx_http_header_filter_module.c
--- lz-nginx-1.1.5/nginx-1.1.5/src/http/ngx_http_header_filter_module.c 2010-03-03 23:14:04.000000000 +0800
+++ lz-nginx-1.1.5-patched/nginx-1.1.5/src/http/ngx_http_header_filter_module.c 2010-03-30 10:52:53.670909405 +0800
@@ -45,7 +45,7 @@
};
-static char ngx_http_server_string[] = "Server: nginx" CRLF;
+static char ngx_http_server_string[] = "Server: ngx_openresty" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

View File

@ -0,0 +1,26 @@
--- nginx-1.2.1/src/http/ngx_http_variables.c 2012-03-05 20:36:51.000000000 +0800
+++ nginx-1.2.1-patched/src/http/ngx_http_variables.c 2012-05-17 16:21:42.120968722 +0800
@@ -1898,6 +1898,7 @@
{
ngx_int_t rc;
ngx_http_variable_t *v;
+ ngx_http_variable_t *value;
ngx_http_core_main_conf_t *cmcf;
cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module);
@@ -1918,7 +1919,14 @@
}
for (v = ngx_http_core_variables; v->name.len; v++) {
- rc = ngx_hash_add_key(cmcf->variables_keys, &v->name, v,
+ value = ngx_palloc(cf->pool, sizeof(ngx_http_variable_t));
+ if (value == NULL) {
+ return NGX_ERROR;
+ }
+
+ *value = *v;
+
+ rc = ngx_hash_add_key(cmcf->variables_keys, &value->name, value,
NGX_HASH_READONLY_KEY);
if (rc == NGX_OK) {

View File

@ -0,0 +1,113 @@
diff -ur nginx-1.2.1/src/http/ngx_http_request_body.c nginx-1.2.1-patched/src/http/ngx_http_request_body.c
--- nginx-1.2.1/src/http/ngx_http_request_body.c 2011-09-30 22:36:19.000000000 +0800
+++ nginx-1.2.1-patched/src/http/ngx_http_request_body.c 2011-10-21 21:54:08.460350482 +0800
@@ -38,7 +38,7 @@
r->main->count++;
- if (r->request_body || r->discard_body) {
+ if (r->request_body || r->discard_body || r->content_length_n == 0) {
post_handler(r);
return NGX_OK;
}
@@ -440,7 +440,7 @@
ssize_t size;
ngx_event_t *rev;
- if (r != r->main || r->discard_body) {
+ if (r != r->main || r->discard_body || r->content_length_n == 0) {
return NGX_OK;
}
@@ -456,20 +456,22 @@
ngx_del_timer(rev);
}
- if (r->headers_in.content_length_n <= 0 || r->request_body) {
+ r->content_length_n = r->headers_in.content_length_n;
+
+ if (r->content_length_n <= 0 || r->request_body) {
return NGX_OK;
}
size = r->header_in->last - r->header_in->pos;
if (size) {
- if (r->headers_in.content_length_n > size) {
+ if (r->content_length_n > size) {
r->header_in->pos += size;
- r->headers_in.content_length_n -= size;
+ r->content_length_n -= size;
} else {
- r->header_in->pos += (size_t) r->headers_in.content_length_n;
- r->headers_in.content_length_n = 0;
+ r->header_in->pos += (size_t) r->content_length_n;
+ r->content_length_n = 0;
return NGX_OK;
}
}
@@ -568,7 +570,7 @@
"http read discarded body");
for ( ;; ) {
- if (r->headers_in.content_length_n == 0) {
+ if (r->content_length_n == 0) {
r->read_event_handler = ngx_http_block_reading;
return NGX_OK;
}
@@ -577,9 +579,9 @@
return NGX_AGAIN;
}
- size = (r->headers_in.content_length_n > NGX_HTTP_DISCARD_BUFFER_SIZE) ?
+ size = (r->content_length_n > NGX_HTTP_DISCARD_BUFFER_SIZE) ?
NGX_HTTP_DISCARD_BUFFER_SIZE:
- (size_t) r->headers_in.content_length_n;
+ (size_t) r->content_length_n;
n = r->connection->recv(r->connection, buffer, size);
@@ -596,7 +598,7 @@
return NGX_OK;
}
- r->headers_in.content_length_n -= n;
+ r->content_length_n -= n;
}
}
diff -ur nginx-1.2.1/src/http/ngx_http_request.c nginx-1.2.1-patched/src/http/ngx_http_request.c
--- nginx-1.2.1/src/http/ngx_http_request.c 2011-09-30 22:36:19.000000000 +0800
+++ nginx-1.2.1-patched/src/http/ngx_http_request.c 2011-10-21 19:06:38.404350692 +0800
@@ -286,6 +286,8 @@
r->pipeline = hc->pipeline;
+ r->content_length_n = -1;
+
if (hc->nbusy) {
r->header_in = hc->busy[0];
}
@@ -297,6 +299,8 @@
return;
}
+ r->content_length_n = -1;
+
hc->request = r;
}
diff -ur nginx-1.2.1/src/http/ngx_http_request.h nginx-1.2.1-patched/src/http/ngx_http_request.h
--- nginx-1.2.1/src/http/ngx_http_request.h 2011-08-29 18:39:23.000000000 +0800
+++ nginx-1.2.1-patched/src/http/ngx_http_request.h 2011-10-21 17:26:13.203807584 +0800
@@ -366,6 +366,9 @@
ngx_pool_t *pool;
ngx_buf_t *header_in;
+ off_t content_length_n;
+ /* for discarding request body */
+
ngx_http_headers_in_t headers_in;
ngx_http_headers_out_t headers_out;

View File

@ -0,0 +1,15 @@
--- nginx-1.2.1/src/http/modules/ngx_http_proxy_module.c 2012-04-23 18:40:01.000000000 +0800
+++ nginx-1.2.1-patched/src/http/modules/ngx_http_proxy_module.c 2012-06-24 12:48:57.289834450 +0800
@@ -3023,8 +3023,10 @@
if (conf->upstream.upstream || conf->proxy_lengths) {
clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
- if (clcf->handler == NULL && clcf->lmt_excpt) {
- clcf->handler = ngx_http_proxy_handler;
+ if (clcf->handler == NULL) {
+ if (clcf->lmt_excpt) {
+ clcf->handler = ngx_http_proxy_handler;
+ }
conf->location = prev->location;
}
}

View File

@ -0,0 +1,115 @@
--- nginx-1.2.1/src/http/modules/ngx_http_log_module.c 2011-11-01 21:24:50.000000000 +0800
+++ nginx-1.2.1-patched/src/http/modules/ngx_http_log_module.c 2011-11-10 16:17:29.599039534 +0800
@@ -61,6 +61,8 @@
time_t open_file_cache_valid;
ngx_uint_t open_file_cache_min_uses;
+ ngx_flag_t escape_non_ascii;
+
ngx_uint_t off; /* unsigned off:1 */
} ngx_http_log_loc_conf_t;
@@ -104,7 +106,8 @@
uintptr_t data);
static u_char *ngx_http_log_variable(ngx_http_request_t *r, u_char *buf,
ngx_http_log_op_t *op);
-static uintptr_t ngx_http_log_escape(u_char *dst, u_char *src, size_t size);
+static uintptr_t ngx_http_log_escape(ngx_http_log_loc_conf_t *lcf, u_char *dst,
+ u_char *src, size_t size);
static void *ngx_http_log_create_main_conf(ngx_conf_t *cf);
@@ -146,6 +149,13 @@
0,
NULL },
+ { ngx_string("log_escape_non_ascii"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
+ ngx_conf_set_flag_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_log_loc_conf_t, escape_non_ascii),
+ NULL },
+
ngx_null_command
};
@@ -637,6 +647,7 @@
ngx_http_log_variable_getlen(ngx_http_request_t *r, uintptr_t data)
{
uintptr_t len;
+ ngx_http_log_loc_conf_t *lcf;
ngx_http_variable_value_t *value;
value = ngx_http_get_indexed_variable(r, data);
@@ -645,7 +656,9 @@
return 1;
}
- len = ngx_http_log_escape(NULL, value->data, value->len);
+ lcf = ngx_http_get_module_loc_conf(r, ngx_http_log_module);
+
+ len = ngx_http_log_escape(lcf, NULL, value->data, value->len);
value->escape = len ? 1 : 0;
@@ -656,6 +669,7 @@
static u_char *
ngx_http_log_variable(ngx_http_request_t *r, u_char *buf, ngx_http_log_op_t *op)
{
+ ngx_http_log_loc_conf_t *lcf;
ngx_http_variable_value_t *value;
value = ngx_http_get_indexed_variable(r, op->data);
@@ -669,16 +683,18 @@
return ngx_cpymem(buf, value->data, value->len);
} else {
- return (u_char *) ngx_http_log_escape(buf, value->data, value->len);
+ lcf = ngx_http_get_module_loc_conf(r, ngx_http_log_module);
+ return (u_char *) ngx_http_log_escape(lcf, buf, value->data, value->len);
}
}
static uintptr_t
-ngx_http_log_escape(u_char *dst, u_char *src, size_t size)
+ngx_http_log_escape(ngx_http_log_loc_conf_t *lcf, u_char *dst, u_char *src,
+ size_t size)
{
- ngx_uint_t n;
- static u_char hex[] = "0123456789ABCDEF";
+ ngx_uint_t n;
+ static u_char hex[] = "0123456789ABCDEF";
static uint32_t escape[] = {
0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
@@ -698,6 +714,12 @@
0xffffffff, /* 1111 1111 1111 1111 1111 1111 1111 1111 */
};
+ if (lcf->escape_non_ascii) {
+ ngx_memset(&escape[4], 0xff, sizeof(uint32_t) * 4);
+
+ } else {
+ ngx_memzero(&escape[4], sizeof(uint32_t) * 4);
+ }
if (dst == NULL) {
@@ -781,6 +803,7 @@
}
conf->open_file_cache = NGX_CONF_UNSET_PTR;
+ conf->escape_non_ascii = NGX_CONF_UNSET;
return conf;
}
@@ -796,6 +819,8 @@
ngx_http_log_fmt_t *fmt;
ngx_http_log_main_conf_t *lmcf;
+ ngx_conf_merge_value(conf->escape_non_ascii, prev->escape_non_ascii, 1);
+
if (conf->open_file_cache == NGX_CONF_UNSET_PTR) {
conf->open_file_cache = prev->open_file_cache;

View File

@ -0,0 +1,24 @@
diff -ur nginx-1.2.1/auto/cc/gcc nginx-1.2.1-patched/auto/cc/gcc
--- nginx-1.2.1/auto/cc/gcc 2011-06-27 19:53:00.205737804 +0800
+++ nginx-1.2.1-patched/auto/cc/gcc 2011-06-27 19:53:13.837741087 +0800
@@ -169,7 +169,7 @@
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"
diff -ur nginx-1.2.1/auto/cc/icc nginx-1.2.1-patched/auto/cc/icc
--- nginx-1.2.1/auto/cc/icc 2011-06-27 19:52:56.370157068 +0800
+++ nginx-1.2.1-patched/auto/cc/icc 2011-06-27 19:53:19.508916811 +0800
@@ -139,7 +139,7 @@
esac
# stop on warning
-CFLAGS="$CFLAGS -Werror"
+#CFLAGS="$CFLAGS -Werror"
# debug
CFLAGS="$CFLAGS -g"

View File

@ -1,5 +1,5 @@
--- nginx-1.1.4/src/http/ngx_http_core_module.c 2010-12-14 18:38:42.000000000 +0800 --- nginx-1.2.1/src/http/ngx_http_core_module.c 2010-12-14 18:38:42.000000000 +0800
+++ nginx-1.1.4-patched/src/http/ngx_http_core_module.c 2011-01-30 19:24:34.956354518 +0800 +++ nginx-1.2.1-patched/src/http/ngx_http_core_module.c 2011-01-30 19:24:34.956354518 +0800
@@ -57,6 +57,8 @@ @@ -57,6 +57,8 @@
void *conf); void *conf);
static char *ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd, static char *ngx_http_core_error_page(ngx_conf_t *cf, ngx_command_t *cmd,

View File

@ -0,0 +1,609 @@
diff -ur nginx-1.2.1/src/core/nginx.h nginx-1.2.1-patched/src/core/nginx.h
--- nginx-1.2.1/src/core/nginx.h 2011-08-29 17:30:22.000000000 +0800
+++ nginx-1.2.1-patched/src/core/nginx.h 2011-09-13 12:11:03.135622101 +0800
@@ -10,7 +10,7 @@
#define nginx_version 1002001
#define NGINX_VERSION "1.2.1"
-#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown (no pool)"
#define NGINX_VAR "NGINX"
diff -urx '*~' -x '*.swp' nginx-1.2.1/src/core/ngx_array.c nginx-1.2.1-patched/src/core/ngx_array.c
--- nginx-1.2.1/src/core/ngx_array.c 2012-02-06 04:02:59.000000000 +0800
+++ nginx-1.2.1-patched/src/core/ngx_array.c 2012-06-20 23:10:36.870722387 +0800
@@ -28,6 +28,7 @@
a->size = size;
a->nalloc = n;
a->pool = p;
+ a->old_elts = NULL;
return a;
}
@@ -36,26 +37,30 @@
void
ngx_array_destroy(ngx_array_t *a)
{
- ngx_pool_t *p;
+ ngx_pool_t *p;
+ ngx_array_link_t *link;
p = a->pool;
- if ((u_char *) a->elts + a->size * a->nalloc == p->d.last) {
- p->d.last -= a->size * a->nalloc;
+ if (a->elts) {
+ ngx_pfree(p, a->elts);
}
- if ((u_char *) a + sizeof(ngx_array_t) == p->d.last) {
- p->d.last = (u_char *) a;
+ for (link = a->old_elts; link; link = link->next) {
+ ngx_pfree(p, link->elts);
}
+
+ ngx_pfree(p, a);
}
void *
ngx_array_push(ngx_array_t *a)
{
- void *elt, *new;
- size_t size;
- ngx_pool_t *p;
+ void *elt, *new;
+ size_t size;
+ ngx_pool_t *p;
+ ngx_array_link_t *link;
if (a->nelts == a->nalloc) {
@@ -65,29 +70,27 @@
p = a->pool;
- if ((u_char *) a->elts + size == p->d.last
- && p->d.last + a->size <= p->d.end)
- {
- /*
- * the array allocation is the last in the pool
- * and there is space for new allocation
- */
-
- p->d.last += a->size;
- a->nalloc++;
-
- } else {
- /* allocate a new array */
-
- new = ngx_palloc(p, 2 * size);
- if (new == NULL) {
- return NULL;
- }
-
- ngx_memcpy(new, a->elts, size);
- a->elts = new;
- a->nalloc *= 2;
+ /* allocate a new array */
+
+ new = ngx_palloc(p, 2 * size);
+ if (new == NULL) {
+ return NULL;
+ }
+
+ ngx_memcpy(new, a->elts, size);
+
+ link = ngx_palloc(p, sizeof(ngx_array_link_t));
+ if (link == NULL) {
+ ngx_pfree(p, new);
+ return NULL;
}
+
+ link->next = a->old_elts;
+ link->elts = a->elts;
+ a->old_elts = link;
+
+ a->elts = new;
+ a->nalloc *= 2;
}
elt = (u_char *) a->elts + a->size * a->nelts;
@@ -101,11 +104,10 @@
ngx_array_push_n(ngx_array_t *a, ngx_uint_t n)
{
void *elt, *new;
- size_t size;
ngx_uint_t nalloc;
ngx_pool_t *p;
- size = n * a->size;
+ ngx_array_link_t *link;
if (a->nelts + n > a->nalloc) {
@@ -113,31 +115,27 @@
p = a->pool;
- if ((u_char *) a->elts + a->size * a->nalloc == p->d.last
- && p->d.last + size <= p->d.end)
- {
- /*
- * the array allocation is the last in the pool
- * and there is space for new allocation
- */
-
- p->d.last += size;
- a->nalloc += n;
-
- } else {
- /* allocate a new array */
-
- nalloc = 2 * ((n >= a->nalloc) ? n : a->nalloc);
-
- new = ngx_palloc(p, nalloc * a->size);
- if (new == NULL) {
- return NULL;
- }
-
- ngx_memcpy(new, a->elts, a->nelts * a->size);
- a->elts = new;
- a->nalloc = nalloc;
+ nalloc = 2 * ((n >= a->nalloc) ? n : a->nalloc);
+
+ new = ngx_palloc(p, nalloc * a->size);
+ if (new == NULL) {
+ return NULL;
+ }
+
+ ngx_memcpy(new, a->elts, a->nelts * a->size);
+
+ link = ngx_palloc(p, sizeof(ngx_array_link_t));
+ if (link == NULL) {
+ ngx_pfree(p, new);
+ return NULL;
}
+
+ link->next = a->old_elts;
+ link->elts = a->elts;
+ a->old_elts = link;
+
+ a->elts = new;
+ a->nalloc = nalloc;
}
elt = (u_char *) a->elts + a->size * a->nelts;
diff -urx '*~' -x '*.swp' nginx-1.2.1/src/core/ngx_array.h nginx-1.2.1-patched/src/core/ngx_array.h
--- nginx-1.2.1/src/core/ngx_array.h 2012-02-06 04:02:59.000000000 +0800
+++ nginx-1.2.1-patched/src/core/ngx_array.h 2012-06-20 23:25:38.800624960 +0800
@@ -13,12 +13,23 @@
#include <ngx_core.h>
+typedef struct ngx_array_link_s ngx_array_link_t;
+
+
+struct ngx_array_link_s {
+ void *elts;
+ ngx_array_link_t *next;
+};
+
+
struct ngx_array_s {
void *elts;
ngx_uint_t nelts;
size_t size;
ngx_uint_t nalloc;
ngx_pool_t *pool;
+
+ ngx_array_link_t *old_elts;
};
@@ -40,6 +51,7 @@
array->size = size;
array->nalloc = n;
array->pool = pool;
+ array->old_elts = NULL;
array->elts = ngx_palloc(pool, n * size);
if (array->elts == NULL) {
diff -urx '*~' -x '*.swp' nginx-1.2.1/src/core/ngx_palloc.c nginx-1.2.1-patched/src/core/ngx_palloc.c
--- nginx-1.2.1/src/core/ngx_palloc.c 2012-02-06 04:02:59.000000000 +0800
+++ nginx-1.2.1-patched/src/core/ngx_palloc.c 2012-06-20 22:56:30.148073066 +0800
@@ -9,32 +9,23 @@
#include <ngx_core.h>
-static void *ngx_palloc_block(ngx_pool_t *pool, size_t size);
-static void *ngx_palloc_large(ngx_pool_t *pool, size_t size);
-
-
ngx_pool_t *
ngx_create_pool(size_t size, ngx_log_t *log)
{
- ngx_pool_t *p;
+ ngx_pool_t *p;
- p = ngx_memalign(NGX_POOL_ALIGNMENT, size, log);
+ size = sizeof(ngx_pool_t);
+ p = ngx_alloc(size, log);
if (p == NULL) {
return NULL;
}
- p->d.last = (u_char *) p + sizeof(ngx_pool_t);
- p->d.end = (u_char *) p + size;
- p->d.next = NULL;
- p->d.failed = 0;
+ ngx_memzero(p, size);
size = size - sizeof(ngx_pool_t);
p->max = (size < NGX_MAX_ALLOC_FROM_POOL) ? size : NGX_MAX_ALLOC_FROM_POOL;
p->current = p;
- p->chain = NULL;
- p->large = NULL;
- p->cleanup = NULL;
p->log = log;
return p;
@@ -44,8 +35,7 @@
void
ngx_destroy_pool(ngx_pool_t *pool)
{
- ngx_pool_t *p, *n;
- ngx_pool_large_t *l;
+ ngx_pool_data_t *d, *n;
ngx_pool_cleanup_t *c;
for (c = pool->cleanup; c; c = c->next) {
@@ -56,13 +46,9 @@
}
}
- for (l = pool->large; l; l = l->next) {
-
- ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0, "free: %p", l->alloc);
-
- if (l->alloc) {
- ngx_free(l->alloc);
- }
+ if (pool->d == NULL) {
+ ngx_free(pool);
+ return;
}
#if (NGX_DEBUG)
@@ -72,9 +58,9 @@
* so we cannot use this log while free()ing the pool
*/
- for (p = pool, n = pool->d.next; /* void */; p = n, n = n->d.next) {
+ for (d = pool->d, n = d->next; ; d = n, n = n->next) {
ngx_log_debug2(NGX_LOG_DEBUG_ALLOC, pool->log, 0,
- "free: %p, unused: %uz", p, p->d.end - p->d.last);
+ "free: %p, unused: %d", d, 0);
if (n == NULL) {
break;
@@ -83,172 +69,82 @@
#endif
- for (p = pool, n = pool->d.next; /* void */; p = n, n = n->d.next) {
- ngx_free(p);
+ for (d = pool->d, n = d->next; ; d = n, n = n->next) {
+ ngx_free(d->alloc);
+ ngx_free(d);
if (n == NULL) {
break;
}
}
-}
+ pool->d = NULL;
-void
-ngx_reset_pool(ngx_pool_t *pool)
-{
- ngx_pool_t *p;
- ngx_pool_large_t *l;
-
- for (l = pool->large; l; l = l->next) {
- if (l->alloc) {
- ngx_free(l->alloc);
- }
- }
-
- pool->large = NULL;
-
- for (p = pool; p; p = p->d.next) {
- p->d.last = (u_char *) p + sizeof(ngx_pool_t);
- }
+ ngx_free(pool);
}
-void *
-ngx_palloc(ngx_pool_t *pool, size_t size)
+void
+ngx_reset_pool(ngx_pool_t *pool)
{
- u_char *m;
- ngx_pool_t *p;
-
- if (size <= pool->max) {
+ ngx_pool_data_t *d, *n;
+ ngx_pool_data_t *saved = NULL;
- p = pool->current;
-
- do {
- m = ngx_align_ptr(p->d.last, NGX_ALIGNMENT);
-
- if ((size_t) (p->d.end - m) >= size) {
- p->d.last = m + size;
-
- return m;
+ if (pool->d) {
+ for (d = pool->d, n = d->next; ; d = n, n = n->next) {
+ if (d->alloc == pool->log) {
+ saved = d;
+ continue;
}
- p = p->d.next;
-
- } while (p);
-
- return ngx_palloc_block(pool, size);
- }
-
- return ngx_palloc_large(pool, size);
-}
-
+ ngx_free(d->alloc);
+ ngx_free(d);
-void *
-ngx_pnalloc(ngx_pool_t *pool, size_t size)
-{
- u_char *m;
- ngx_pool_t *p;
-
- if (size <= pool->max) {
-
- p = pool->current;
-
- do {
- m = p->d.last;
-
- if ((size_t) (p->d.end - m) >= size) {
- p->d.last = m + size;
-
- return m;
+ if (n == NULL) {
+ break;
}
+ }
- p = p->d.next;
-
- } while (p);
-
- return ngx_palloc_block(pool, size);
+ pool->d = saved;
}
-
- return ngx_palloc_large(pool, size);
}
-static void *
-ngx_palloc_block(ngx_pool_t *pool, size_t size)
+void *
+ngx_malloc(ngx_pool_t *pool, size_t size)
{
- u_char *m;
- size_t psize;
- ngx_pool_t *p, *new, *current;
+ ngx_pool_data_t *d;
+ void *p;
- psize = (size_t) (pool->d.end - (u_char *) pool);
-
- m = ngx_memalign(NGX_POOL_ALIGNMENT, psize, pool->log);
- if (m == NULL) {
+ p = ngx_alloc(size, pool->log);
+ if (p == NULL) {
return NULL;
}
- new = (ngx_pool_t *) m;
-
- new->d.end = m + psize;
- new->d.next = NULL;
- new->d.failed = 0;
-
- m += sizeof(ngx_pool_data_t);
- m = ngx_align_ptr(m, NGX_ALIGNMENT);
- new->d.last = m + size;
-
- current = pool->current;
-
- for (p = current; p->d.next; p = p->d.next) {
- if (p->d.failed++ > 4) {
- current = p->d.next;
- }
+ d = ngx_alloc(sizeof(ngx_pool_data_t), pool->log);
+ if (d == NULL){
+ ngx_free(p);
+ return NULL;
}
- p->d.next = new;
-
- pool->current = current ? current : new;
-
- return m;
+ d->alloc = p;
+ d->next = pool->d;
+ pool->d = d;
+ return p;
}
-static void *
-ngx_palloc_large(ngx_pool_t *pool, size_t size)
+void *
+ngx_palloc(ngx_pool_t *pool, size_t size)
{
- void *p;
- ngx_uint_t n;
- ngx_pool_large_t *large;
-
- p = ngx_alloc(size, pool->log);
- if (p == NULL) {
- return NULL;
- }
-
- n = 0;
-
- for (large = pool->large; large; large = large->next) {
- if (large->alloc == NULL) {
- large->alloc = p;
- return p;
- }
-
- if (n++ > 3) {
- break;
- }
- }
-
- large = ngx_palloc(pool, sizeof(ngx_pool_large_t));
- if (large == NULL) {
- ngx_free(p);
- return NULL;
- }
+ return ngx_malloc(pool, size);
+}
- large->alloc = p;
- large->next = pool->large;
- pool->large = large;
- return p;
+void *
+ngx_pnalloc(ngx_pool_t *pool, size_t size)
+{
+ return ngx_malloc(pool, size);
}
@@ -256,38 +152,48 @@
ngx_pmemalign(ngx_pool_t *pool, size_t size, size_t alignment)
{
void *p;
- ngx_pool_large_t *large;
+ ngx_pool_data_t *d;
p = ngx_memalign(alignment, size, pool->log);
if (p == NULL) {
return NULL;
}
- large = ngx_palloc(pool, sizeof(ngx_pool_large_t));
- if (large == NULL) {
+ d = ngx_alloc(sizeof(ngx_pool_data_t), pool->log);
+ if (d == NULL){
ngx_free(p);
return NULL;
}
- large->alloc = p;
- large->next = pool->large;
- pool->large = large;
-
+ d->alloc = p;
+ d->next = pool->d;
+ pool->d = d;
return p;
}
ngx_int_t
-ngx_pfree(ngx_pool_t *pool, void *p)
+ngx_pfree(ngx_pool_t *pool, void *data)
{
- ngx_pool_large_t *l;
+ ngx_pool_data_t *p, *d;
- for (l = pool->large; l; l = l->next) {
- if (p == l->alloc) {
- ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0,
- "free: %p", l->alloc);
- ngx_free(l->alloc);
- l->alloc = NULL;
+ p = NULL;
+ for (d = pool->d; d; p = d, d = d->next) {
+ if (data == d->alloc) {
+
+ ngx_log_debug1(NGX_LOG_DEBUG_ALLOC, pool->log, 0, "free: %p", d->alloc);
+
+ ngx_free(d->alloc);
+ d->alloc = NULL;
+
+ if (p) {
+ p->next = d->next;
+
+ } else {
+ pool->d = d->next;
+ }
+
+ ngx_free(d);
return NGX_OK;
}
diff -urx '*~' -x '*.swp' nginx-1.2.1/src/core/ngx_palloc.h nginx-1.2.1-patched/src/core/ngx_palloc.h
--- nginx-1.2.1/src/core/ngx_palloc.h 2012-02-06 04:02:59.000000000 +0800
+++ nginx-1.2.1-patched/src/core/ngx_palloc.h 2012-06-21 10:35:47.463405863 +0800
@@ -38,28 +38,21 @@
};
-typedef struct ngx_pool_large_s ngx_pool_large_t;
-
-struct ngx_pool_large_s {
- ngx_pool_large_t *next;
- void *alloc;
-};
+typedef struct ngx_pool_data_s ngx_pool_large_t;
+typedef struct ngx_pool_data_s ngx_pool_data_t;
-typedef struct {
- u_char *last;
- u_char *end;
- ngx_pool_t *next;
- ngx_uint_t failed;
-} ngx_pool_data_t;
+struct ngx_pool_data_s {
+ ngx_pool_data_t *next;
+ void *alloc;
+};
struct ngx_pool_s {
- ngx_pool_data_t d;
+ ngx_pool_data_t *d;
size_t max;
ngx_pool_t *current;
ngx_chain_t *chain;
- ngx_pool_large_t *large;
ngx_pool_cleanup_t *cleanup;
ngx_log_t *log;
};

View File

@ -0,0 +1,113 @@
--- src/http/modules/ngx_http_fastcgi_module.c
+++ src/http/modules/ngx_http_fastcgi_module.c
@@ -1501,10 +1501,10 @@ ngx_http_fastcgi_process_header(ngx_http
h->lowcase_key = h->key.data + h->key.len + 1
+ h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start,
- h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start,
- h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
}
h->hash = r->header_hash;
--- src/http/modules/ngx_http_proxy_module.c
+++ src/http/modules/ngx_http_proxy_module.c
@@ -1381,8 +1381,10 @@ ngx_http_proxy_process_header(ngx_http_r
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/modules/ngx_http_scgi_module.c
+++ src/http/modules/ngx_http_scgi_module.c
@@ -941,8 +941,10 @@ ngx_http_scgi_process_header(ngx_http_re
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/modules/ngx_http_uwsgi_module.c
+++ src/http/modules/ngx_http_uwsgi_module.c
@@ -985,8 +985,10 @@ ngx_http_uwsgi_process_header(ngx_http_r
h->value.data = h->key.data + h->key.len + 1;
h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
- ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
- ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
+ ngx_memcpy(h->key.data, r->header_name_start, h->key.len);
+ h->key.data[h->key.len] = '\0';
+ ngx_memcpy(h->value.data, r->header_start, h->value.len);
+ h->value.data[h->value.len] = '\0';
if (h->key.len == r->lowcase_index) {
ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
--- src/http/ngx_http_parse.c
+++ src/http/ngx_http_parse.c
@@ -874,6 +874,10 @@ ngx_http_parse_header_line(ngx_http_requ
break;
}
+ if (ch == '\0') {
+ return NGX_HTTP_PARSE_INVALID_HEADER;
+ }
+
r->invalid_header = 1;
break;
@@ -936,6 +940,10 @@ ngx_http_parse_header_line(ngx_http_requ
break;
}
+ if (ch == '\0') {
+ return NGX_HTTP_PARSE_INVALID_HEADER;
+ }
+
r->invalid_header = 1;
break;
@@ -954,6 +962,8 @@ ngx_http_parse_header_line(ngx_http_requ
r->header_start = p;
r->header_end = p;
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
default:
r->header_start = p;
state = sw_value;
@@ -975,6 +985,8 @@ ngx_http_parse_header_line(ngx_http_requ
case LF:
r->header_end = p;
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
}
break;
@@ -988,6 +1000,8 @@ ngx_http_parse_header_line(ngx_http_requ
break;
case LF:
goto done;
+ case '\0':
+ return NGX_HTTP_PARSE_INVALID_HEADER;
default:
state = sw_value;
break;

View File

@ -0,0 +1,20 @@
--- nginx-1.2.1/src/os/unix/ngx_process_cycle.c 2012-02-06 04:02:59.000000000 +0800
+++ nginx-1.2.1-patched/src/os/unix/ngx_process_cycle.c 2012-06-15 11:39:11.234286287 +0800
@@ -707,6 +707,8 @@
ngx_exit_log.file = &ngx_exit_log_file;
ngx_exit_cycle.log = &ngx_exit_log;
+ ngx_exit_cycle.files = ngx_cycle->files;
+ ngx_exit_cycle.files_n = ngx_cycle->files_n;
ngx_cycle = &ngx_exit_cycle;
ngx_destroy_pool(cycle->pool);
@@ -1063,6 +1065,8 @@
ngx_exit_log.file = &ngx_exit_log_file;
ngx_exit_cycle.log = &ngx_exit_log;
+ ngx_exit_cycle.files = ngx_cycle->files;
+ ngx_exit_cycle.files_n = ngx_cycle->files_n;
ngx_cycle = &ngx_exit_cycle;
ngx_destroy_pool(cycle->pool);

View File

@ -0,0 +1,27 @@
# HG changeset patch
# User Maxim Dounin <mdounin@mdounin.ru>
# Date 1309799136 -14400
# Node ID 99e276bba8596bc4df9e638482ee413f4c6bf700
# Parent e7b2f945d55ae44a2295facf9e3336dc4633e5b5
Core: fix body with request_body_in_single_buf.
If there were preread data and request body was big enough first part
of request body was duplicated.
See report here:
http://nginx.org/pipermail/nginx/2011-July/027756.html
diff --git a/src/http/ngx_http_request_body.c b/src/http/ngx_http_request_body.c
--- a/src/http/ngx_http_request_body.c
+++ b/src/http/ngx_http_request_body.c
@@ -372,7 +372,9 @@ ngx_http_do_read_client_request_body(ngx
}
}
- if (r->request_body_in_file_only && rb->bufs->next) {
+ if (rb->bufs->next
+ && (r->request_body_in_file_only || r->request_body_in_single_buf))
+ {
rb->bufs = rb->bufs->next;
}

View File

@ -5,8 +5,8 @@
# Parent 610e909bb9e29766188aa86fae3abe0bd3432940 # Parent 610e909bb9e29766188aa86fae3abe0bd3432940
Core: fix body if it's preread and there are extra data. Core: fix body if it's preread and there are extra data.
--- nginx-1.1.4/src/http/ngx_http_request_body.c 2011-07-05 12:11:21.619264633 +0800 --- nginx-1.2.1/src/http/ngx_http_request_body.c 2011-07-05 12:11:21.619264633 +0800
+++ nginx-1.1.4-patched/src/http/ngx_http_request_body.c 2011-07-05 12:14:30.694321554 +0800 +++ nginx-1.2.1-patched/src/http/ngx_http_request_body.c 2011-07-05 12:14:30.694321554 +0800
@@ -141,6 +141,7 @@ @@ -141,6 +141,7 @@
/* the whole request body was pre-read */ /* the whole request body was pre-read */

View File

@ -0,0 +1,11 @@
--- nginx-1.2.1/src/core/ngx_resolver.c 2012-03-05 21:17:56.000000000 +0800
+++ nginx-1.2.1-patched/src/core/ngx_resolver.c 2012-06-01 17:55:55.861130605 +0800
@@ -987,7 +987,7 @@
nan = (query->nan_hi << 8) + query->nan_lo;
ngx_log_debug6(NGX_LOG_DEBUG_CORE, r->log, 0,
- "resolver DNS response %ui fl:%04Xui %ui/%ui/%ui/%ui",
+ "resolver DNS response %ui fl:%04Xui %ui/%ui/%ud/%ud",
ident, flags, nqs, nan,
(query->nns_hi << 8) + query->nns_lo,
(query->nar_hi << 8) + query->nar_lo);

View File

@ -0,0 +1,26 @@
diff -ur lz-nginx-1.2.1/nginx-1.2.1/src/core/nginx.h lz-nginx-1.2.1-patched/nginx-1.2.1/src/core/nginx.h
--- lz-nginx-1.2.1/nginx-1.2.1/src/core/nginx.h 2010-02-12 17:31:01.000000000 +0800
+++ lz-nginx-1.2.1-patched/nginx-1.2.1/src/core/nginx.h 2010-03-30 10:52:13.240702627 +0800
@@ -10,7 +10,7 @@
#define nginx_version 1002001
#define NGINX_VERSION "1.2.1"
-#define NGINX_VER "nginx/" NGINX_VERSION
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
Only in lz-nginx-1.2.1-patched/nginx-1.2.1/src/core: nginx.h.orig
Only in lz-nginx-1.2.1-patched/nginx-1.2.1/src/core: nginx.h.rej
diff -ur lz-nginx-1.2.1/nginx-1.2.1/src/http/ngx_http_header_filter_module.c lz-nginx-1.2.1-patched/nginx-1.2.1/src/http/ngx_http_header_filter_module.c
--- lz-nginx-1.2.1/nginx-1.2.1/src/http/ngx_http_header_filter_module.c 2010-03-03 23:14:04.000000000 +0800
+++ lz-nginx-1.2.1-patched/nginx-1.2.1/src/http/ngx_http_header_filter_module.c 2010-03-30 10:52:53.670909405 +0800
@@ -45,7 +45,7 @@
};
-static char ngx_http_server_string[] = "Server: nginx" CRLF;
+static char ngx_http_server_string[] = "Server: ngx_openresty" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

View File

@ -0,0 +1,32 @@
diff -ur nginx-1.2.1/src/http/ngx_http_upstream.c nginx-1.2.1-patched/src/http/ngx_http_upstream.c
--- nginx-1.2.1/src/http/ngx_http_upstream.c 2011-12-14 02:34:34.000000000 +0800
+++ nginx-1.2.1-patched/src/http/ngx_http_upstream.c 2012-03-21 21:20:17.333111806 +0800
@@ -1385,6 +1385,8 @@
/* rc == NGX_OK */
+ u->request_all_sent = 1;
+
if (c->tcp_nopush == NGX_TCP_NOPUSH_SET) {
if (ngx_tcp_push(c->fd) == NGX_ERROR) {
ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno,
@@ -1451,7 +1453,7 @@
#endif
- if (u->header_sent) {
+ if (u->request_all_sent) {
u->write_event_handler = ngx_http_upstream_dummy_handler;
(void) ngx_handle_write_event(c->write, 0);
diff -ur nginx-1.2.1/src/http/ngx_http_upstream.h nginx-1.2.1-patched/src/http/ngx_http_upstream.h
--- nginx-1.2.1/src/http/ngx_http_upstream.h 2011-11-01 22:18:10.000000000 +0800
+++ nginx-1.2.1-patched/src/http/ngx_http_upstream.h 2012-03-21 21:18:21.041237173 +0800
@@ -313,6 +313,7 @@
unsigned buffering:1;
unsigned request_sent:1;
+ unsigned request_all_sent:1;
unsigned header_sent:1;
};

View File

@ -1,5 +1,5 @@
--- nginx-1.1.5/src/http/ngx_http_variables.c 2011-05-30 20:36:17.000000000 +0800 --- nginx-1.2.1/src/http/ngx_http_variables.c 2011-05-30 20:36:17.000000000 +0800
+++ nginx-1.1.5-patched/src/http/ngx_http_variables.c 2011-11-08 22:21:55.229247198 +0800 +++ nginx-1.2.1-patched/src/http/ngx_http_variables.c 2011-11-08 22:21:55.229247198 +0800
@@ -648,7 +648,17 @@ @@ -648,7 +648,17 @@
a = (ngx_array_t *) ((char *) r + data); a = (ngx_array_t *) ((char *) r + data);

View File

@ -0,0 +1,11 @@
--- nginx-1.3.0/src/core/ngx_resolver.c 2012-05-14 17:13:45.000000000 +0800
+++ nginx-1.3.0-patched/src/core/ngx_resolver.c 2012-06-01 18:08:06.512047421 +0800
@@ -1035,7 +1035,7 @@
nan = (query->nan_hi << 8) + query->nan_lo;
ngx_log_debug6(NGX_LOG_DEBUG_CORE, r->log, 0,
- "resolver DNS response %ui fl:%04Xui %ui/%ui/%ui/%ui",
+ "resolver DNS response %ui fl:%04Xui %ui/%ui/%ud/%ud",
ident, flags, nqs, nan,
(query->nns_hi << 8) + query->nns_lo,
(query->nar_hi << 8) + query->nar_lo);

1725
t/sanity.t

File diff suppressed because it is too large Load Diff

62
util/configure vendored
View File

@ -59,6 +59,7 @@ my @modules = (
[http_iconv => 'iconv-nginx-module', 'disabled'], [http_iconv => 'iconv-nginx-module', 'disabled'],
[http_echo => 'echo-nginx-module'], [http_echo => 'echo-nginx-module'],
[http_xss => 'xss-nginx-module'], [http_xss => 'xss-nginx-module'],
[http_coolkit => 'ngx_coolkit'],
[http_set_misc => 'set-misc-nginx-module'], [http_set_misc => 'set-misc-nginx-module'],
[http_form_input => 'form-input-nginx-module'], [http_form_input => 'form-input-nginx-module'],
[http_encrypted_session => 'encrypted-session-nginx-module'], [http_encrypted_session => 'encrypted-session-nginx-module'],
@ -70,6 +71,8 @@ my @modules = (
[http_array_var => 'array-var-nginx-module'], [http_array_var => 'array-var-nginx-module'],
[http_memc => 'memc-nginx-module'], [http_memc => 'memc-nginx-module'],
[http_redis2 => 'redis2-nginx-module'], [http_redis2 => 'redis2-nginx-module'],
[http_redis => 'redis-nginx-module'],
#[http_upstream_keepalive => 'upstream-keepalive-nginx-module'],
[http_auth_request => 'auth-request-nginx-module'], [http_auth_request => 'auth-request-nginx-module'],
[http_rds_json => 'rds-json-nginx-module'], [http_rds_json => 'rds-json-nginx-module'],
[http_rds_csv => 'rds-csv-nginx-module'], [http_rds_csv => 'rds-csv-nginx-module'],
@ -111,6 +114,7 @@ my $dry_run;
my @ngx_rpaths; my @ngx_rpaths;
my $cc; my $cc;
my $cores; my $cores;
my $luajit_xcflags = '';
my (@ngx_opts, @ngx_cc_opts, @ngx_ld_opts); my (@ngx_opts, @ngx_cc_opts, @ngx_ld_opts);
@ -153,6 +157,21 @@ for my $opt (@ARGV) {
} elsif ($opt eq '--without-lua_redis_parser') { } elsif ($opt eq '--without-lua_redis_parser') {
$resty_opts{no_lua_redis_parser} = 1; $resty_opts{no_lua_redis_parser} = 1;
} elsif ($opt eq '--without-lua_resty_memcached') {
$resty_opts{no_lua_resty_memcached} = 1;
} elsif ($opt eq '--without-lua_resty_redis') {
$resty_opts{no_lua_resty_redis} = 1;
} elsif ($opt eq '--without-lua_resty_mysql') {
$resty_opts{no_lua_resty_mysql} = 1;
} elsif ($opt eq '--without-lua_resty_upload') {
$resty_opts{no_lua_resty_upload} = 1;
} elsif ($opt eq '--without-lua_resty_string') {
$resty_opts{no_lua_resty_string} = 1;
} elsif ($opt eq '--without-lua_rds_parser') { } elsif ($opt eq '--without-lua_rds_parser') {
$resty_opts{no_lua_rds_parser} = 1; $resty_opts{no_lua_rds_parser} = 1;
@ -184,6 +203,9 @@ for my $opt (@ARGV) {
} elsif ($opt =~ /^--with-luajit=(.*)/) { } elsif ($opt =~ /^--with-luajit=(.*)/) {
$resty_opts{luajit_path} = $1; $resty_opts{luajit_path} = $1;
} elsif ($opt =~ /^--with-luajit-xcflags=(.*)/) {
$luajit_xcflags .= " $1";
} elsif ($opt =~ /^--with-libdrizzle=(.*)/) { } elsif ($opt =~ /^--with-libdrizzle=(.*)/) {
$resty_opts{libdrizzle} = $1; $resty_opts{libdrizzle} = $1;
@ -493,12 +515,20 @@ _END_
my $extra_opts = ' TARGET_STRIP=@:'; my $extra_opts = ' TARGET_STRIP=@:';
if ($opts->{debug}) { if ($opts->{debug}) {
$extra_opts = ' CCDEBUG=-g Q='; $luajit_xcflags .= " -DLUA_USE_APICHECK -DLUA_USE_ASSERT";
$luajit_xcflags =~ s/^ +//;
$extra_opts .= qq{ CCDEBUG=-g Q= XCFLAGS='$luajit_xcflags'};
} else {
if ($luajit_xcflags) {
$luajit_xcflags =~ s/^ +//;
$extra_opts .= qq{ XCFLAGS='$luajit_xcflags'};
}
} }
if ($platform =~ /bsd/i) { #if ($platform =~ /bsd/i) {
$extra_opts .= ' CFLAGS=-I..'; #$extra_opts .= ' CFLAGS=-I..';
} #}
if ($on_solaris) { if ($on_solaris) {
$extra_opts .= " INSTALL_X='$root_dir/build/install -m 0755' " . $extra_opts .= " INSTALL_X='$root_dir/build/install -m 0755' " .
@ -597,7 +627,7 @@ _END_
print $in <<"_EOC_"; print $in <<"_EOC_";
ngx_lua_dquote='"' ngx_lua_dquote='"'
CFLAGS="\$CFLAGS -DLUA_DEFAULT_PATH='\$ngx_lua_dquote$lualib_prefix/?.lua\$ngx_lua_dquote'" CFLAGS="\$CFLAGS -DLUA_DEFAULT_PATH='\$ngx_lua_dquote$lualib_prefix/?.lua;$lualib_prefix/?/init.lua\$ngx_lua_dquote'"
CFLAGS="\$CFLAGS -DLUA_DEFAULT_CPATH='\$ngx_lua_dquote$lualib_prefix/?.so\$ngx_lua_dquote'" CFLAGS="\$CFLAGS -DLUA_DEFAULT_CPATH='\$ngx_lua_dquote$lualib_prefix/?.so\$ngx_lua_dquote'"
_EOC_ _EOC_
@ -745,6 +775,22 @@ _EOC_
push @make_install_cmds, "cd $root_dir/build/$dir && " . push @make_install_cmds, "cd $root_dir/build/$dir && " .
"\$(MAKE) install$extra_opts"; "\$(MAKE) install$extra_opts";
} }
for my $key (qw(memcached redis mysql string upload)) {
unless ($opts->{"no_lua_resty_$key"}) {
my $name = "lua-resty-$key";
my $dir = auto_complete $name;
if (!defined $dir) {
die "No $name found";
}
my $extra_opts = " DESTDIR=\$(DESTDIR) LUA_LIB_DIR=$lualib_prefix"
." INSTALL=$root_dir/build/install";
push @make_install_cmds, "cd $root_dir/build/$dir && " .
"\$(MAKE) install$extra_opts";
}
}
} }
# prepare nginx configure line # prepare nginx configure line
@ -843,11 +889,17 @@ _EOC_
--without-lua_cjson disable the lua-cjson library --without-lua_cjson disable the lua-cjson library
--without-lua_redis_parser disable the lua-redis-parser library --without-lua_redis_parser disable the lua-redis-parser library
--without-lua_rds_parser disable the lua-rds-parser library --without-lua_rds_parser disable the lua-rds-parser library
--without-lua_resty_memcached disable the lua-resty-memcached library
--without-lua_resty_redis disable the lua-resty-redis library
--without-lua_resty_mysql disable the lua-resty-mysql library
--without-lua_resty_upload disable the lua-resty-upload library
--without-lua_resty_string disable the lua-resty-string library
--without-lua51 disable the bundled Lua 5.1 interpreter --without-lua51 disable the bundled Lua 5.1 interpreter
--with-lua51=PATH specify the external installation of Lua 5.1 by PATH --with-lua51=PATH specify the external installation of Lua 5.1 by PATH
--with-luajit enable and build LuaJIT 2.0 --with-luajit enable and build LuaJIT 2.0
--with-luajit=PATH use the external LuaJIT 2.0 installation specified by PATH --with-luajit=PATH use the external LuaJIT 2.0 installation specified by PATH
--with-luajit-xcflags=FLAGS Specify extra C compiler flags for LuaJIT 2.0
--with-libdrizzle=DIR specify the libdrizzle 1.0 (or drizzle) installation prefix --with-libdrizzle=DIR specify the libdrizzle 1.0 (or drizzle) installation prefix
--with-libpq=DIR specify the libpq (or postgresql) installation prefix --with-libpq=DIR specify the libpq (or postgresql) installation prefix
--with-pg_config=PATH specify the path of the pg_config utility --with-pg_config=PATH specify the path of the pg_config utility

View File

@ -37,7 +37,7 @@ for my $t_file (@t_files) {
my $changed; my $changed;
while (<$in>) { while (<$in>) {
for my $dir (@dirs) { for my $dir (@dirs) {
(my $pat = $dir) =~ s/\d.*//; (my $pat = $dir) =~ s/-(\d+\..*)/-/;
my $orig = $_; my $orig = $_;
if (s{\.\./$pat\S+}{../$dir}g && $orig ne $_) { if (s{\.\./$pat\S+}{../$dir}g && $orig ne $_) {
$changed++; $changed++;

View File

@ -26,6 +26,9 @@ cd nginx-$ver || exit 1
# patch the patch # patch the patch
echo "INFO: applying the upstream-pipelining patch"
patch -p1 < $root/patches/nginx-$main_ver-upstream_pipelining.patch || exit 1
cp $root/patches/nginx-$main_ver-server_header.patch server_header.patch || exit 1 cp $root/patches/nginx-$main_ver-server_header.patch server_header.patch || exit 1
sed $"s/NGINX_VERSION \".unknown\"/NGINX_VERSION \".$minor_ver\"/" server_header.patch \ sed $"s/NGINX_VERSION \".unknown\"/NGINX_VERSION \".$minor_ver\"/" server_header.patch \
> server_header.patch.tmp && mv -f server_header.patch.tmp server_header.patch || exit 1 > server_header.patch.tmp && mv -f server_header.patch.tmp server_header.patch || exit 1
@ -38,24 +41,53 @@ patch -p1 < $root/patches/nginx-$main_ver-no_error_pages.patch || exit 1
patch -p1 < $root/patches/nginx-$main_ver-no_Werror.patch || exit 1 patch -p1 < $root/patches/nginx-$main_ver-no_Werror.patch || exit 1
patch -p1 < $root/patches/nginx-$main_ver-epoll_check_stale_wev.patch || exit 1 #patch -p1 < $root/patches/nginx-$main_ver-epoll_check_stale_wev.patch || exit 1
#patch -p1 < $root/patches/nginx-$main_ver-request_body_in_single_buf.patch || exit 1 #patch -p1 < $root/patches/nginx-$main_ver-request_body_in_single_buf.patch || exit 1
patch -p1 -l < $root/patches/nginx-$main_ver-subrequest_loop.patch || exit 1 #echo "INFO: applying the max_subrequests patch...";
#patch -p1 < $root/patches/nginx-$main_ver-max_subrequests.patch || exit 1
patch -p1 -l < $root/patches/nginx-$main_ver-gzip_empty_flush_buf.patch || exit 1 #echo "INFO: applying the subrequst_loop patch...";
#patch -p1 -l < $root/patches/nginx-$main_ver-subrequest_loop.patch || exit 1
#echo "INFO: applying the gzip_empty_flush_buf patch...";
#patch -p1 -l < $root/patches/nginx-$main_ver-gzip_empty_flush_buf.patch || exit 1
#patch -p1 < $root/patches/nginx-$main_ver-variable_header_ignore_no_hash.patch || exit 1 #patch -p1 < $root/patches/nginx-$main_ver-variable_header_ignore_no_hash.patch || exit 1
#echo "applying the named_location_clear_mods_ctx patch"
#patch -p1 < $root/patches/nginx-$main_ver-named_location_clear_mods_ctx.patch || exit 1 #patch -p1 < $root/patches/nginx-$main_ver-named_location_clear_mods_ctx.patch || exit 1
echo "applying the allow_request_body_updating patch"
patch -p1 < $root/patches/nginx-$main_ver-allow_request_body_updating.patch || exit 1 patch -p1 < $root/patches/nginx-$main_ver-allow_request_body_updating.patch || exit 1
echo "applying the log_escape_non_ascii patch"
patch -p1 < $root/patches/nginx-$main_ver-log_escape_non_ascii.patch || exit 1 patch -p1 < $root/patches/nginx-$main_ver-log_escape_non_ascii.patch || exit 1
#echo applying reset_wev_handler_in_named_locations.patch ...
#patch -p1 < $root/patches/nginx-$main_ver-reset_wev_handler_in_named_locations.patch || exit 1
#echo applying filter_finalize_hang.patch ...
#patch -p1 < $root/patches/nginx-$main_ver-filter_finalize_hang.patch || exit 1
echo applying add_core_vars_polluting_globals.patch ...
patch -p1 < $root/patches/nginx-$main_ver-add_core_vars_polluting_globals.patch || exit 1
echo applying resolver_debug_log_overflow.patch ...
patch -p1 < $root/patches/nginx-$main_ver-resolver_debug_log_overflow.patch || exit 1
echo applying poll_del_event_at_exit.patch ...
patch -p1 < $root/patches/nginx-$main_ver-poll_del_event_at_exit.patch
#echo "INFO: applying null-character-fixes patch"
#patch -p0 < $root/patches/nginx-$main_ver-null_character_fixes.patch || exit 1
#patch -p1 < $root/patches/nginx-$main_ver-gzip_ok_invalid_read_fix.patch || exit 1 #patch -p1 < $root/patches/nginx-$main_ver-gzip_ok_invalid_read_fix.patch || exit 1
echo applying location_if_inherits_proxy.patch ...
patch -p1 < $root/patches/nginx-$main_ver-location_if_inherits_proxy.patch
rm -f *.patch || exit 1 rm -f *.patch || exit 1
cd .. || exit 1 cd .. || exit 1
@ -67,12 +99,12 @@ sed $"s/NGINX_VERSION \".unknown/NGINX_VERSION \".$minor_ver/" \
|| exit 1 || exit 1
rm -rf no-pool-nginx-$ver rm -rf no-pool-nginx-$ver
ver=0.38rc1 ver=0.40
$root/util/get-tarball "http://github.com/agentzh/echo-nginx-module/tarball/v$ver" -O echo-nginx-module-$ver.tar.gz || exit 1 $root/util/get-tarball "http://github.com/agentzh/echo-nginx-module/tarball/v$ver" -O echo-nginx-module-$ver.tar.gz || exit 1
tar -xzf echo-nginx-module-$ver.tar.gz || exit 1 tar -xzf echo-nginx-module-$ver.tar.gz || exit 1
mv agentzh-echo-nginx-module-* echo-nginx-module-$ver || exit 1 mv agentzh-echo-nginx-module-* echo-nginx-module-$ver || exit 1
ver=0.03rc8 ver=0.03rc9
$root/util/get-tarball "http://github.com/agentzh/xss-nginx-module/tarball/v$ver" -O xss-nginx-module-$ver.tar.gz || exit 1 $root/util/get-tarball "http://github.com/agentzh/xss-nginx-module/tarball/v$ver" -O xss-nginx-module-$ver.tar.gz || exit 1
tar -xzf xss-nginx-module-$ver.tar.gz || exit 1 tar -xzf xss-nginx-module-$ver.tar.gz || exit 1
mv agentzh-xss-nginx-module-* xss-nginx-module-$ver || exit 1 mv agentzh-xss-nginx-module-* xss-nginx-module-$ver || exit 1
@ -82,17 +114,17 @@ $root/util/get-tarball "http://github.com/simpl/ngx_devel_kit/tarball/v$ver" -O
tar -xzf ngx_devel_kit-$ver.tar.gz || exit 1 tar -xzf ngx_devel_kit-$ver.tar.gz || exit 1
mv simpl-ngx_devel_kit-* ngx_devel_kit-$ver || exit 1 mv simpl-ngx_devel_kit-* ngx_devel_kit-$ver || exit 1
ver=0.22rc5 ver=0.22rc8
$root/util/get-tarball "http://github.com/agentzh/set-misc-nginx-module/tarball/v$ver" -O set-misc-nginx-module-$ver.tar.gz || exit 1 $root/util/get-tarball "http://github.com/agentzh/set-misc-nginx-module/tarball/v$ver" -O set-misc-nginx-module-$ver.tar.gz || exit 1
tar -xzf set-misc-nginx-module-$ver.tar.gz || exit 1 tar -xzf set-misc-nginx-module-$ver.tar.gz || exit 1
mv agentzh-set-misc-nginx-module-* set-misc-nginx-module-$ver || exit 1 mv agentzh-set-misc-nginx-module-* set-misc-nginx-module-$ver || exit 1
ver=0.12rc7 ver=0.12rc10
$root/util/get-tarball "http://github.com/agentzh/rds-json-nginx-module/tarball/v$ver" -O rds-json-nginx-module-$ver.tar.gz || exit 1 $root/util/get-tarball "http://github.com/agentzh/rds-json-nginx-module/tarball/v$ver" -O rds-json-nginx-module-$ver.tar.gz || exit 1
tar -xzf rds-json-nginx-module-$ver.tar.gz || exit 1 tar -xzf rds-json-nginx-module-$ver.tar.gz || exit 1
mv agentzh-rds-json-nginx-module-* rds-json-nginx-module-$ver || exit 1 mv agentzh-rds-json-nginx-module-* rds-json-nginx-module-$ver || exit 1
ver=0.04 ver=0.05rc2
$root/util/get-tarball "http://github.com/agentzh/rds-csv-nginx-module/tarball/v$ver" -O rds-csv-nginx-module-$ver.tar.gz || exit 1 $root/util/get-tarball "http://github.com/agentzh/rds-csv-nginx-module/tarball/v$ver" -O rds-csv-nginx-module-$ver.tar.gz || exit 1
tar -xzf rds-csv-nginx-module-$ver.tar.gz || exit 1 tar -xzf rds-csv-nginx-module-$ver.tar.gz || exit 1
mv agentzh-rds-csv-nginx-module-* rds-csv-nginx-module-$ver || exit 1 mv agentzh-rds-csv-nginx-module-* rds-csv-nginx-module-$ver || exit 1
@ -104,14 +136,14 @@ mv agentzh-headers-more-nginx-module-* headers-more-nginx-module-$ver || exit 1
################################# #################################
ver=0.1.2rc6 ver=0.1.2rc7
$root/util/get-tarball "http://github.com/chaoslawful/drizzle-nginx-module/tarball/v$ver" -O drizzle-nginx-module-$ver.tar.gz || exit 1 $root/util/get-tarball "http://github.com/chaoslawful/drizzle-nginx-module/tarball/v$ver" -O drizzle-nginx-module-$ver.tar.gz || exit 1
tar -xzf drizzle-nginx-module-$ver.tar.gz || exit 1 tar -xzf drizzle-nginx-module-$ver.tar.gz || exit 1
mv chaoslawful-drizzle-nginx-module-* drizzle-nginx-module-$ver || exit 1 mv chaoslawful-drizzle-nginx-module-* drizzle-nginx-module-$ver || exit 1
################################# #################################
ver=0.4.1rc3 ver=0.5.5
$root/util/get-tarball "http://github.com/chaoslawful/lua-nginx-module/tarball/v$ver" -O lua-nginx-module-$ver.tar.gz || exit 1 $root/util/get-tarball "http://github.com/chaoslawful/lua-nginx-module/tarball/v$ver" -O lua-nginx-module-$ver.tar.gz || exit 1
tar -xzf lua-nginx-module-$ver.tar.gz || exit 1 tar -xzf lua-nginx-module-$ver.tar.gz || exit 1
mv chaoslawful-lua-nginx-module-* ngx_lua-$ver || exit 1 mv chaoslawful-lua-nginx-module-* ngx_lua-$ver || exit 1
@ -132,7 +164,7 @@ mv agentzh-memc-nginx-module-* memc-nginx-module-$ver || exit 1
################################# #################################
ver=0.13rc3 ver=0.14
$root/util/get-tarball "http://github.com/agentzh/srcache-nginx-module/tarball/v$ver" -O srcache-nginx-module-$ver.tar.gz || exit 1 $root/util/get-tarball "http://github.com/agentzh/srcache-nginx-module/tarball/v$ver" -O srcache-nginx-module-$ver.tar.gz || exit 1
tar -xzf srcache-nginx-module-$ver.tar.gz || exit 1 tar -xzf srcache-nginx-module-$ver.tar.gz || exit 1
mv agentzh-srcache-nginx-module-* srcache-nginx-module-$ver || exit 1 mv agentzh-srcache-nginx-module-* srcache-nginx-module-$ver || exit 1
@ -146,7 +178,7 @@ mv calio-form-input-nginx-module-* form-input-nginx-module-$ver || exit 1
################################# #################################
ver=0.10rc5 ver=0.10rc7
$root/util/get-tarball "http://github.com/calio/iconv-nginx-module/tarball/v$ver" -O iconv-nginx-module-$ver.tar.gz || exit 1 $root/util/get-tarball "http://github.com/calio/iconv-nginx-module/tarball/v$ver" -O iconv-nginx-module-$ver.tar.gz || exit 1
tar -xzf iconv-nginx-module-$ver.tar.gz || exit 1 tar -xzf iconv-nginx-module-$ver.tar.gz || exit 1
mv calio-iconv-nginx-module-* iconv-nginx-module-$ver || exit 1 mv calio-iconv-nginx-module-* iconv-nginx-module-$ver || exit 1
@ -160,6 +192,14 @@ mv agentzh-encrypted-session-nginx-module-* encrypted-session-nginx-module-$ver
################################# #################################
#ver=0.7
#$root/util/get-tarball "http://mdounin.ru/files/ngx_http_upstream_keepalive-$ver.tar.gz" -O upstream_keepalive-$ver.tar.gz || exit 1
#tar -xzf upstream_keepalive-$ver.tar.gz || exit 1
#mv ngx_http_upstream_keepalive-* upstream-keepalive-nginx-module-$ver || exit 1
#################################
ver=0.2 ver=0.2
$root/util/get-tarball "http://mdounin.ru/files/ngx_http_auth_request_module-$ver.tar.gz" -O auth_request-$ver.tar.gz || exit 1 $root/util/get-tarball "http://mdounin.ru/files/ngx_http_auth_request_module-$ver.tar.gz" -O auth_request-$ver.tar.gz || exit 1
tar -xzf auth_request-$ver.tar.gz || exit 1 tar -xzf auth_request-$ver.tar.gz || exit 1
@ -167,14 +207,28 @@ mv ngx_http_auth_request_module-* auth-request-nginx-module-$ver || exit 1
################################# #################################
ver=0.9rc2 ver=0.3.6
$root/util/get-tarball "http://people.freebsd.org/~osa/ngx_http_redis-$ver.tar.gz" -O redis-nginx-module-$ver.tar.gz || exit 1
tar -xzf redis-nginx-module-$ver.tar.gz || exit 1
mv ngx_http_redis-* redis-nginx-module-$ver || exit 1
#################################
ver=1.0rc1
$root/util/get-tarball "https://github.com/FRiCKLE/ngx_postgres/tarball/$ver" -O ngx_postgres-$ver.tar.gz || exit 1 $root/util/get-tarball "https://github.com/FRiCKLE/ngx_postgres/tarball/$ver" -O ngx_postgres-$ver.tar.gz || exit 1
tar -xzf ngx_postgres-$ver.tar.gz || exit 1 tar -xzf ngx_postgres-$ver.tar.gz || exit 1
mv FRiCKLE-ngx_postgres-* ngx_postgres-$ver || exit 1 mv FRiCKLE-ngx_postgres-* ngx_postgres-$ver || exit 1
################################# #################################
ver=0.08rc2 ver=0.2rc1
$root/util/get-tarball "https://github.com/FRiCKLE/ngx_coolkit/tarball/$ver" -O ngx_coolkit-$ver.tar.gz || exit 1
tar -xzf ngx_coolkit-$ver.tar.gz || exit 1
mv FRiCKLE-ngx_coolkit-* ngx_coolkit-$ver || exit 1
#################################
ver=0.08rc4
$root/util/get-tarball "http://github.com/agentzh/redis2-nginx-module/tarball/v$ver" -O redis2-nginx-module-$ver.tar.gz || exit 1 $root/util/get-tarball "http://github.com/agentzh/redis2-nginx-module/tarball/v$ver" -O redis2-nginx-module-$ver.tar.gz || exit 1
tar -xzf redis2-nginx-module-$ver.tar.gz || exit 1 tar -xzf redis2-nginx-module-$ver.tar.gz || exit 1
mv agentzh-redis2-nginx-module-* redis2-nginx-module-$ver || exit 1 mv agentzh-redis2-nginx-module-* redis2-nginx-module-$ver || exit 1
@ -185,7 +239,7 @@ ver=5.1.4
$root/util/get-tarball "http://www.lua.org/ftp/lua-$ver.tar.gz" -O "lua-$ver.tar.gz" || exit 1 $root/util/get-tarball "http://www.lua.org/ftp/lua-$ver.tar.gz" -O "lua-$ver.tar.gz" || exit 1
tar -xzf lua-$ver.tar.gz || exit 1 tar -xzf lua-$ver.tar.gz || exit 1
$root/util/get-tarball "http://www.lua.org/ftp/patch-lua-$ver-4" -O "patch-lua-$ver-4" || exit 1 $root/util/get-tarball "http://agentzh.org/misc/nginx/patch-lua-$ver-4" -O "patch-lua-$ver-4" || exit 1
cd lua-$ver/src || exit 1 cd lua-$ver/src || exit 1
patch -p0 < ../../patch-lua-$ver-4 || exit 1 patch -p0 < ../../patch-lua-$ver-4 || exit 1
@ -201,16 +255,17 @@ rm lua-makefile-fix.patch || exit 1
################################# #################################
ver=2.0.0-beta9 ver=2.0.0-beta10
$root/util/get-tarball "http://luajit.org/download/LuaJIT-$ver.tar.gz" -O "LuaJIT-$ver.tar.gz" || exit 1 $root/util/get-tarball "http://luajit.org/download/LuaJIT-$ver.tar.gz" -O "LuaJIT-$ver.tar.gz" || exit 1
tar -xzf LuaJIT-$ver.tar.gz || exit 1 tar -xzf LuaJIT-$ver.tar.gz || exit 1
cd LuaJIT-$ver || exit 1; #cd LuaJIT-$ver || exit 1;
#$root/util/get-tarball http://luajit.org/download/beta8_hotfix1.patch -O beta8_hotfix1.patch #$root/util/get-tarball http://luajit.org/download/beta9_hotfix1.patch -O beta9_hotfix1.patch
#patch -p1 < beta8_hotfix1.patch || exit 1 #patch -p1 < beta9_hotfix1.patch || exit 1
#rm beta8_hotfix1.patch || exit 1 #rm beta9_hotfix1.patch || exit 1
cp $root/misc/unwind-generic.h ./unwind.h || exit 1
cd .. #cp $root/misc/unwind-generic.h ./unwind.h || exit 1
#cd ..
################################# #################################
@ -223,28 +278,65 @@ cd ..
################################# #################################
ver=0.09rc5 ver=0.09
$root/util/get-tarball "http://github.com/agentzh/lua-redis-parser/tarball/v$ver" -O "lua-redis-parser-$ver.tar.gz" || exit 1 $root/util/get-tarball "http://github.com/agentzh/lua-redis-parser/tarball/v$ver" -O "lua-redis-parser-$ver.tar.gz" || exit 1
tar -xzf lua-redis-parser-$ver.tar.gz || exit 1 tar -xzf lua-redis-parser-$ver.tar.gz || exit 1
mv agentzh-lua-redis-parser-* lua-redis-parser-$ver || exit 1 mv agentzh-lua-redis-parser-* lua-redis-parser-$ver || exit 1
################################# #################################
ver=0.04 ver=0.05
$root/util/get-tarball "http://github.com/agentzh/lua-rds-parser/tarball/v$ver" -O "lua-rds-parser-$ver.tar.gz" || exit 1 $root/util/get-tarball "http://github.com/agentzh/lua-rds-parser/tarball/v$ver" -O "lua-rds-parser-$ver.tar.gz" || exit 1
tar -xzf lua-rds-parser-$ver.tar.gz || exit 1 tar -xzf lua-rds-parser-$ver.tar.gz || exit 1
mv agentzh-lua-rds-parser-* lua-rds-parser-$ver || exit 1 mv agentzh-lua-rds-parser-* lua-rds-parser-$ver || exit 1
################################# #################################
ver=0.07
$root/util/get-tarball "http://github.com/agentzh/lua-resty-memcached/tarball/v$ver" -O "lua-resty-memcached-$ver.tar.gz" || exit 1
tar -xzf lua-resty-memcached-$ver.tar.gz || exit 1
mv agentzh-lua-resty-memcached-* lua-resty-memcached-$ver || exit 1
#################################
ver=0.10
$root/util/get-tarball "http://github.com/agentzh/lua-resty-redis/tarball/v$ver" -O "lua-resty-redis-$ver.tar.gz" || exit 1
tar -xzf lua-resty-redis-$ver.tar.gz || exit 1
mv agentzh-lua-resty-redis-* lua-resty-redis-$ver || exit 1
#################################
ver=0.07
$root/util/get-tarball "http://github.com/agentzh/lua-resty-mysql/tarball/v$ver" -O "lua-resty-mysql-$ver.tar.gz" || exit 1
tar -xzf lua-resty-mysql-$ver.tar.gz || exit 1
mv agentzh-lua-resty-mysql-* lua-resty-mysql-$ver || exit 1
#################################
ver=0.03
$root/util/get-tarball "http://github.com/agentzh/lua-resty-upload/tarball/v$ver" -O "lua-resty-upload-$ver.tar.gz" || exit 1
tar -xzf lua-resty-upload-$ver.tar.gz || exit 1
mv agentzh-lua-resty-upload-* lua-resty-upload-$ver || exit 1
#################################
ver=0.06
$root/util/get-tarball "http://github.com/agentzh/lua-resty-string/tarball/v$ver" -O "lua-resty-string-$ver.tar.gz" || exit 1
tar -xzf lua-resty-string-$ver.tar.gz || exit 1
mv agentzh-lua-resty-string-* lua-resty-string-$ver || exit 1
#################################
rm *.tar.gz rm *.tar.gz
cd .. cd ..
cp $root/util/configure ./ cp $root/util/configure ./
cp $root/README ./ cp $root/README ./
cp $root/util/install bundle/ cp $root/util/install bundle/
find bundle -name '*~' -delete
cd $root cd $root
tar czf $name.tar.gz $name tar cf $name.tar $name
gzip -f --best $name.tar

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
main_ver=1.1.13 main_ver=1.2.1
minor_ver=1 minor_ver=5
version=$main_ver.$minor_ver version=$main_ver.$minor_ver
echo $version echo $version