Compare commits

...

59 Commits

Author SHA1 Message Date
77e510abdc updated the tests for the new release. 2011-07-30 10:13:47 +08:00
88272c5503 fixed a typo in the patch. 2011-07-30 09:59:43 +08:00
4004360b4c fixed a regression when enabling luajit in 1.0.4.1rc5. thanks @Lance. released ngx_openresty 1.0.4.1rc6. 2011-07-28 12:11:01 +08:00
177e1bfcdf we do not specify TARGET_STRIP= when CCDEBUG is set to -g because it will make gmake crash. sigh. 2011-07-26 12:19:15 +08:00
0bf8bbe040 upgraded ngx_iconv to 0.10rc3, ngx_form_input to 0.07rc5, ngx_array_var to 0.03rc1, and ngx_set_misc to 0.22rc1; now --with-debug option also affects luajit2.0; disabled target stripping in luajit2.0; released ngx_openresty 1.0.4.1rc5. 2011-07-26 11:56:29 +08:00
8ba0a37a42 ngx_openresty 1.0.4.1rc4. 2011-07-25 15:56:17 +08:00
557f52794c applied the official hotfix1 patch for LuaJIT 2.0.0 beta8; also released ngx_openresty 1.0.4.1rc4. 2011-07-25 15:51:44 +08:00
b7e7398fc9 now the --with-cc=CC option of ./configure also controls the C compiler used by Lua and LuaJIT. thanks @姜大炮 for reporting the issue; also released ngx_openresty 1.0.4.1rc3. 2011-07-23 12:37:44 +08:00
68aac430ae upgraded ngx_lua to v0.2.1rc2 and ngx_redis2 to v0.07; also released ngx_openresty 1.0.4.1rc2. 2011-07-23 11:55:35 +08:00
d2c3802134 upgraded ngx_rds_json to v0.12rc1, ngx_drizzle to v0.1.1rc2, ngx_lua to v0.2.1rc1, ngx_postgres to v0.9rc1, ngx_redis2 to v0.07rc6, and also released ngx_openresty 1.0.4.1rc1. 2011-07-14 16:21:24 +08:00
918e884175 Merge branch 'master' of github.com:agentzh/ngx_openresty 2011-07-14 11:43:19 +08:00
cbce5daa05 no longer enable gcc -O2 by default. -O2 hates backtraces. 2011-07-13 22:15:36 +08:00
8ebcad308a ngx_openresty release 1.0.4.0. 2011-07-12 18:32:04 +08:00
4e2b3dcbbf upgraded ngx_drizzle to v0.1.1rc1 and released ngx_openresty 1.0.4.0rc5. 2011-07-12 17:35:26 +08:00
ca408fc450 Config::Config is missing on CentOS 6 by default. sigh. fixed it by using ":" regardless the current OS. 2011-07-11 18:19:26 +08:00
092b2f6b83 upgraded ngx_echo to v0.37rc1 and also marked ngx_openresty 1.0.4.0rc3. 2011-07-11 18:04:03 +08:00
c56e7e8165 we no longer depend on ExtUtils::MakeMaker because it is not perl's core module. thanks Lance for reporting this issue on CentOS 6. 2011-07-11 17:58:30 +08:00
b40119877a upgraded ngx_srcache to v0.12 and marked ngx_openresty 1.0.4.0rc2. 2011-07-11 13:25:05 +08:00
5505eac72b upgraded the nginx core to 1.0.4 and released ngx_openresty 1.0.4.0rc1. 2011-07-08 20:23:59 +08:00
22d6c02398 ngx_openresty release 0.8.54.9. 2011-07-08 19:23:09 +08:00
4bd257d4dc upgraded ngx_echo to v0.36 and ngx_memc to v0.12. marked ngx_openresty 0.8.54.9rc6. 2011-07-08 19:00:28 +08:00
299399231a applied the subrequest loop fix patch from Maxim Dounin and released ngx_openresty 0.8.54.9rc5. 2011-07-07 16:55:32 +08:00
60109db59a added Maxim Dounin's patches. 2011-07-07 12:14:54 +08:00
5714d20c1e upgraded ngx_rds_json to v0.11, ngx_headers_more to v0.15, and ngx_drizzle to v0.1.0; also marked ngx_openresty 0.8.54.9rc4. 2011-07-06 12:29:28 +08:00
a69dd6463b upgraded ngx_drizzle to 0.0.15rc14 and ngx_lua to 0.2.0; also released ngx_openresty 0.8.54.9rc3. 2011-07-05 16:33:12 +08:00
c7cffaaf77 upgraded ngx_lua to 0.1.6rc18 and released ngx_openresty 0.8.54.9rc2. 2011-07-04 20:28:57 +08:00
ab2cdb5a2f upgraded ngx_redis2 to 0.07rc5 and released ngx_openresty 0.8.54.9rc1. 2011-07-03 17:48:39 +08:00
e101ac777a released ngx_openresty 0.8.54.8; also updated README to point to openresty.org. 2011-07-01 12:25:35 +08:00
147dba8f62 upgraded ngx_echo to 0.36rc6, ngx_lua to 0.1.6rc17, ngx_srcache to 0.12rc6, and ngx_redis2 to 0.07rc4 and also released ngx_openresty 0.8.54.8rc2. 2011-07-01 11:58:26 +08:00
5a7890001b added --with-libdrizzle option to specify the (lib)drizzle installation prefix. now ngx_drizzle is disabled by default. you need to enable it via the --with-http_drizzle_module option. 2011-06-28 18:56:37 +08:00
7fcf5e3e82 we no longer bundle libdrizzle because libdrizzle 1.0 is distributed with the drizzle server and hard to separate. 2011-06-28 18:35:10 +08:00
2055f54dbb released ngx_openresty 0.8.54.7. 2011-06-27 21:22:57 +08:00
cdcfac980e marked ngx_openresty 0.8.54.7rc5. 2011-06-27 21:12:13 +08:00
0597fedf6e we should preserve timestamps when copying bundle/ to build/. 2011-06-27 21:11:08 +08:00
0556e081b8 upgraded ngx_xss to 0.03rc3, ngx_drizzle to 0.0.15rc11, ngx_memc to 0.12rc2, ngx_srcache to 0.12rc5, ngx_redis2 to 0.07rc3; also marked ngx_openresty 0.8.54.7rc4. 2011-06-27 20:47:41 +08:00
69a2effd7b upgraded LuaJIT to 2.0.0beta8, ngx_lua to 0.1.6rc15, and ngx_echo to 0.36rc4; also released ngx_openresty 0.8.54.7rc3. 2011-06-27 20:00:19 +08:00
7244088ed0 upgraded ngx_lua to v0.1.16rc14 and ngx_headers_more to v0.15rc3; also released ngx_openresty 0.8.54.7rc2. 2011-06-16 21:10:52 +08:00
9da7200899 upgraded ngx_headers_more to v0.15rc2 and ngx_lua to v0.1.6rc13. released ngx_openresty 0.8.54.7rc1. 2011-06-15 18:22:19 +08:00
46ec035831 released ngx_openresty 0.8.54.6. 2011-06-15 12:28:18 +08:00
7d6c400d3d upgraded ngx_lua to v0.1.6rc12 and ngx_drizzle to v0.0.15rc10; also released ngx_openresty v0.8.54.6rc5. 2011-06-14 17:12:33 +08:00
7df5c5c851 fixed a test in sanity.t. 2011-06-12 11:01:38 +08:00
8fa9eb77bd upgraded ngx_lua to 0.1.6rc11 and ngx_redis2 to 0.07rc2; also released ngx_openresty 0.8.54.6rc4. 2011-06-12 11:00:24 +08:00
cd77c676c3 version 0.8.54.6rc3. 2011-06-12 10:25:53 +08:00
3702d98b4a Merge branch 'master' of github.com:agentzh/ngx_openresty 2011-06-10 21:31:40 +08:00
04709aa2e6 ensure that ldconfig is in PATH on linux *and* luajit is enabled. 2011-06-10 21:31:20 +08:00
70d58760ef upgraded ngx_lua to 0.1.6rc10; marked ngx_openresty 0.8.54.6rc2. 2011-05-27 17:03:59 +08:00
942411c114 emphasized that you need to add the path of your "ldconfig" utility to your PATH env if you want to enable luajit. 2011-05-26 15:47:21 +08:00
b644d3d531 now we create symlinks to luajit library files. 2011-05-26 15:36:51 +08:00
087ec653a5 documented the autoconf.err file for debugging ./configure issues. 2011-05-26 15:26:27 +08:00
4df2272a77 documented that for certain Debian systems, it is required to specify --with-ld-opt="-ldl" when luajit is enabled. 2011-05-26 15:23:30 +08:00
73f13092eb broke lines that are too long in README. 2011-05-26 14:43:11 +08:00
777da53f2d upgraded ngx_lua to 0.1.6rc9 and ngx_echo to 0.36rc3; released ngx_openresty 0.8.54.5. 2011-05-25 14:37:33 +08:00
f43134c1fd release 0.8.54.4. 2011-05-13 15:56:51 +08:00
400de3c50d upgraded LuaJIT2.0, ngx_lua, ngx_headers_more, and ngx_srcache; also bumped the bundle version to 0.8.54.4rc3. 2011-05-13 15:37:45 +08:00
6271d106b4 added a note for starting the ngx_openresty server. 2011-05-12 18:06:02 +08:00
9415dafc3f upgraded ngx_lua to 0.1.16rc4 and ngx_redis2 to 0.07rc1. 2011-04-07 11:48:49 +08:00
1f051ab43f mentions that make -jN may not work at least for FreeBSD's bsdmake. 2011-04-02 15:21:52 +08:00
86024a6988 upgraded ngx_headers_more to 0.15rc1 and also updated version to 0.8.54.4rc1. 2011-03-29 18:39:19 +08:00
478518fe08 added a quick note to fedora/redhat users. 2011-03-29 17:57:25 +08:00
18 changed files with 926 additions and 632 deletions

83
README
View File

@ -9,57 +9,11 @@ that all these modules are played well together.
The bundled software components are copyrighted by the respective copyright holders.
A quick note to Debian and Ubuntu users:
You're recommended to install the following packages using apt-get before
installing this bundle:
The homepage for this project is http://openresty.org.
apt-get install libreadline-dev libpcre3-dev libssl-dev perl
A quick note to Mac OS X (Darwin) users:
You're recommended to install prerequisites PCRE using some package
management tool, like Homebrew:
brew install pcre
Alternatively you can install PCRE from source all by yourself :)
To build ngx_openresty, you need a working perl (perl 5.6.0 or better)
in your PATH environment, and then follow the following steps:
1. download the latest ngx_openresty tarball can be downloaded from
http://agentzh.org/misc/nginx/ngx_openresty-0.8.54.3.tar.gz
we will eventually migrate to the openresty.org domain.
2. and then enter the ngx_openresty-0.8.54.3/ directory,
and type the following command to configure:
./configure
by default, --prefix=/usr/local/openresty is assumed. You can
specify various options, as in
./configure --prefix=/opt/openresty \
--with-luajit \
--without-http_drizzle_module \
--with-http_iconv_module \
--with-http_postgres_module
try ./configure --help to see more options.
For Solaris, it's common to install libraries like OpenSSL to /lib,
so when it complaints about OpenSSL and you have indeed
already installed it, specify the --with-ld-opt='-L/lib' option.
3. build everything locally
make
4. install ngx_openresty into the target directory that you specified by
the --prefix option in Step 2.
make install
For the users:
Visit http://openresty.org/#Download to download the latest bundle tarball, and
follow the installation instructions in the page http://openresty.org/#Installation.
For bundle maintainers:
@ -73,30 +27,13 @@ For bundle maintainers:
at the top of the bundle source tree.
The following packages are bundled in the 0.8.54.3 release:
REPORT BUGS
LuaJIT-2.0.0-beta6
array-var-nginx-module-0.02
auth-request-nginx-module-0.2
drizzle-nginx-module-0.0.15rc9
echo-nginx-module-0.36rc2
encrypted-session-nginx-module-0.01
form-input-nginx-module-0.07rc4
headers-more-nginx-module-0.14
iconv-nginx-module-0.10rc3
libdrizzle-0.8
lua-5.1.4
memc-nginx-module-0.12rc1
nginx-0.8.54
ngx_devel_kit-0.2.17
ngx_lua-0.1.6rc3
ngx_postgres-0.8
rds-json-nginx-module-0.11rc2
redis2-nginx-module-0.06
set-misc-nginx-module-0.21
srcache-nginx-module-0.12rc2
upstream-keepalive-nginx-module-0.3
xss-nginx-module-0.03rc2
You're very welcome to report issues on GitHub:
https://github.com/agentzh/ngx_openresty/issues
COPYRIGHT & LICENSE
The bundle itself is licensed under the 2-clause BSD license.

View File

@ -0,0 +1,24 @@
diff -ur nginx-0.8.54/auto/cc/gcc nginx-0.8.54-patched/auto/cc/gcc
--- nginx-0.8.54/auto/cc/gcc 2011-06-27 19:53:00.205737804 +0800
+++ nginx-0.8.54-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-0.8.54/auto/cc/icc nginx-0.8.54-patched/auto/cc/icc
--- nginx-0.8.54/auto/cc/icc 2011-06-27 19:52:56.370157068 +0800
+++ nginx-0.8.54-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,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

@ -0,0 +1,17 @@
# HG changeset patch
# User Maxim Dounin <mdounin@mdounin.ru>
# Date 1309776931 -14400
# Node ID e7b2f945d55ae44a2295facf9e3336dc4633e5b5
# Parent 610e909bb9e29766188aa86fae3abe0bd3432940
Core: fix body if it's preread and there are extra data.
--- nginx-0.8.54/src/http/ngx_http_request_body.c 2011-07-05 12:11:21.619264633 +0800
+++ nginx-0.8.54-patched/src/http/ngx_http_request_body.c 2011-07-05 12:14:30.694321554 +0800
@@ -141,6 +141,7 @@
/* the whole request body was pre-read */
+ b->last = b->pos + r->headers_in.content_length_n;
r->header_in->pos += (size_t) r->headers_in.content_length_n;
r->request_length += r->headers_in.content_length_n;

View File

@ -0,0 +1,40 @@
# HG changeset patch
# User Maxim Dounin <mdounin@mdounin.ru>
# Date 1309187571 -14400
# Node ID 283a416b2235d5383c12a975edc8866f007fb628
# Parent f5fc40783ddcbf4db33859ee2a9bce54cf32c350
Core: protect from subrequest loops.
Without protection subrequest loop results in r->count overflow and
SIGSEGV. Protection was broken in 0.7.25.
Note that this also limits number of parallel subrequests. This
wasn't exactly the case before 0.7.25 as local subrequests were
completed directly.
See here for details:
http://nginx.org/pipermail/nginx-ru/2010-February/032184.html
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -2287,7 +2287,6 @@ ngx_http_subrequest(ngx_http_request_t *
sr->start_sec = tp->sec;
sr->start_msec = tp->msec;
- r->main->subrequests++;
r->main->count++;
*psr = sr;
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -1981,6 +1981,7 @@ ngx_http_finalize_request(ngx_http_reque
if (r == c->data) {
r->main->count--;
+ r->main->subrequests++;
if (!r->logged) {

View File

@ -0,0 +1,37 @@
# HG changeset patch
# User Maxim Dounin <mdounin@mdounin.ru>
# Date 1309424678 -14400
# Node ID 60a67d95638f9187418a3a26c1fcb9f06be7a4fc
# Parent 1c167244d2fdb064c159012c50a7ae3fd1ed254a
Fix another gcc46 unused-but-set warning.
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -1687,20 +1687,24 @@ ngx_ssl_get_cached_session(ngx_ssl_conn_
ngx_int_t rc;
ngx_shm_zone_t *shm_zone;
ngx_slab_pool_t *shpool;
+#if (NGX_DEBUG)
ngx_connection_t *c;
+#endif
ngx_rbtree_node_t *node, *sentinel;
ngx_ssl_session_t *sess;
ngx_ssl_sess_id_t *sess_id;
ngx_ssl_session_cache_t *cache;
u_char buf[NGX_SSL_MAX_SESSION_SIZE];
- c = ngx_ssl_get_connection(ssl_conn);
-
hash = ngx_crc32_short(id, (size_t) len);
*copy = 0;
+#if (NGX_DEBUG)
+ c = ngx_ssl_get_connection(ssl_conn);
+
ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,
"ssl get session: %08XD:%d", hash, len);
+#endif
shm_zone = SSL_CTX_get_ex_data(SSL_get_SSL_CTX(ssl_conn),
ngx_ssl_session_cache_index);

View File

@ -0,0 +1,24 @@
diff -ur nginx-0.8.54/auto/cc/gcc nginx-0.8.54-patched/auto/cc/gcc
--- nginx-0.8.54/auto/cc/gcc 2011-06-27 19:53:00.205737804 +0800
+++ nginx-0.8.54-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-0.8.54/auto/cc/icc nginx-0.8.54-patched/auto/cc/icc
--- nginx-0.8.54/auto/cc/icc 2011-06-27 19:52:56.370157068 +0800
+++ nginx-0.8.54-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-0.8.54/src/http/ngx_http_core_module.c 2010-12-14 18:38:42.000000000 +0800
+++ nginx-0.8.54-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

@ -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

@ -0,0 +1,17 @@
# HG changeset patch
# User Maxim Dounin <mdounin@mdounin.ru>
# Date 1309776931 -14400
# Node ID e7b2f945d55ae44a2295facf9e3336dc4633e5b5
# Parent 610e909bb9e29766188aa86fae3abe0bd3432940
Core: fix body if it's preread and there are extra data.
--- nginx-1.0.4/src/http/ngx_http_request_body.c 2011-07-05 12:11:21.619264633 +0800
+++ nginx-1.0.4-patched/src/http/ngx_http_request_body.c 2011-07-05 12:14:30.694321554 +0800
@@ -141,6 +141,7 @@
/* the whole request body was pre-read */
+ b->last = b->pos + r->headers_in.content_length_n;
r->header_in->pos += (size_t) r->headers_in.content_length_n;
r->request_length += r->headers_in.content_length_n;

View File

@ -0,0 +1,26 @@
diff -ur lz-nginx-1.0.4/nginx-1.0.4/src/core/nginx.h lz-nginx-1.0.4-patched/nginx-1.0.4/src/core/nginx.h
--- lz-nginx-1.0.4/nginx-1.0.4/src/core/nginx.h 2010-02-12 17:31:01.000000000 +0800
+++ lz-nginx-1.0.4-patched/nginx-1.0.4/src/core/nginx.h 2010-03-30 10:52:13.240702627 +0800
@@ -10,7 +10,7 @@
#define nginx_version 1000004
#define NGINX_VERSION "1.0.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.0.4-patched/nginx-1.0.4/src/core: nginx.h.orig
Only in lz-nginx-1.0.4-patched/nginx-1.0.4/src/core: nginx.h.rej
diff -ur lz-nginx-1.0.4/nginx-1.0.4/src/http/ngx_http_header_filter_module.c lz-nginx-1.0.4-patched/nginx-1.0.4/src/http/ngx_http_header_filter_module.c
--- lz-nginx-1.0.4/nginx-1.0.4/src/http/ngx_http_header_filter_module.c 2010-03-03 23:14:04.000000000 +0800
+++ lz-nginx-1.0.4-patched/nginx-1.0.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

@ -0,0 +1,40 @@
# HG changeset patch
# User Maxim Dounin <mdounin@mdounin.ru>
# Date 1309187571 -14400
# Node ID 283a416b2235d5383c12a975edc8866f007fb628
# Parent f5fc40783ddcbf4db33859ee2a9bce54cf32c350
Core: protect from subrequest loops.
Without protection subrequest loop results in r->count overflow and
SIGSEGV. Protection was broken in 0.7.25.
Note that this also limits number of parallel subrequests. This
wasn't exactly the case before 0.7.25 as local subrequests were
completed directly.
See here for details:
http://nginx.org/pipermail/nginx-ru/2010-February/032184.html
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -2287,7 +2287,6 @@ ngx_http_subrequest(ngx_http_request_t *
sr->start_sec = tp->sec;
sr->start_msec = tp->msec;
- r->main->subrequests++;
r->main->count++;
*psr = sr;
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -1981,6 +1981,7 @@ ngx_http_finalize_request(ngx_http_reque
if (r == c->data) {
r->main->count--;
+ r->main->subrequests++;
if (!r->logged) {

File diff suppressed because it is too large Load Diff

128
util/configure vendored
View File

@ -58,7 +58,7 @@ my @modules = (
[http_set_misc => 'set-misc-nginx-module'],
[http_form_input => 'form-input-nginx-module'],
[http_encrypted_session => 'encrypted-session-nginx-module'],
[http_drizzle => 'drizzle-nginx-module', $on_solaris ? 'disabled' : () ],
[http_drizzle => 'drizzle-nginx-module', 'disabled'],
[http_postgres => 'ngx_postgres', 'disabled'],
[http_lua => 'ngx_lua'],
[http_headers_more => 'headers-more-nginx-module'],
@ -105,12 +105,19 @@ my $prefix = '/usr/local/openresty';
my %resty_opts;
my $dry_run;
my @ngx_rpaths;
my $cc;
my (@ngx_opts, @ngx_cc_opts, @ngx_ld_opts);
for my $opt (@ARGV) {
next unless defined $opt;
if ($opt =~ /^--with-cc=(.+)/) {
$cc = $1;
push @ngx_opts, $opt;
next;
}
if ($opt eq '--dry-run') {
$dry_run = 1;
next;
@ -147,6 +154,9 @@ for my $opt (@ARGV) {
} elsif ($opt eq '--with-luajit') {
$resty_opts{luajit} = 1;
} elsif ($opt =~ /^--with-libdrizzle=(.*)/) {
$resty_opts{libdrizzle} = $1;
} elsif ($opt eq '--with-http_ssl_module') {
$resty_opts{http_ssl} = 1;
push @ngx_opts, $opt;
@ -248,17 +258,8 @@ sub build_resty_opts {
$opts->{lua} = 1;
}
if ($on_solaris) {
if ($opts->{http_drizzle}) {
$opts->{libdrizzle} = 1;
}
} elsif (! $opts->{no_http_drizzle}) {
$opts->{libdrizzle} = 1;
}
if ($opts->{no_http_ssl} && $opts->{http_ssl}) {
die "--with-http_ssl_module conflicts with --without-http_ssl_module\n";
die "--with-http_ssl_module conflicts with --without-http_ssl_module.\n";
}
if (! $opts->{no_http_ssl} && ! $opts->{http_ssl}) {
@ -266,6 +267,14 @@ sub build_resty_opts {
push @ngx_opts, '--with-http_ssl_module';
}
if (! $opts->{http_drizzle} && $opts->{libdrizzle}) {
die "The http_drizzle_module is not enabled while --with-libdrizzle is specified.\n";
}
if ($platform eq 'linux' && $opts->{luajit} && ! can_run("ldconfig")) {
die "you need to have ldconfig in your PATH env when enabling luajit.\n";
}
my $opts_line = '';
if ($opts->{debug}) {
@ -273,10 +282,12 @@ sub build_resty_opts {
$opts_line .= " \\\n --with-debug";
} else {
unshift @ngx_cc_opts, '-O2';
#unshift @ngx_cc_opts, '-O2';
}
$opts_line .= " \\\n --with-cc-opt='@ngx_cc_opts'";
if (@ngx_cc_opts) {
$opts_line .= " \\\n --with-cc-opt='@ngx_cc_opts'";
}
if (-d 'build') {
system("rm -rf build");
@ -286,41 +297,17 @@ sub build_resty_opts {
die "build/ directory already exists\n";
}
shell "cp -r bundle/ build/";
shell "cp -rp bundle/ build/";
cd 'build';
# build 3rd-party C libraries if required
if ($opts->{libdrizzle}) {
my $libdrizzle_src = auto_complete 'libdrizzle';
my $libdrizzle_prefix = "$prefix/libdrizzle";
my $libdrizzle_root = File::Spec->rel2abs("libdrizzle-root");
if (-d $libdrizzle_root) {
shell "rm -rf $libdrizzle_root";
}
mkdir $libdrizzle_root or
die "create create directory libdrizzle-root: $!\n";
cd $libdrizzle_src;
shell "./configure --prefix=$libdrizzle_prefix", $dry_run;
shell "make", $dry_run;
shell "make install DESTDIR=$libdrizzle_root", $dry_run;
push @make_cmds, "cd build/$libdrizzle_src && \$(MAKE)";
push @make_install_cmds, "cd build/$libdrizzle_src && "
. "\$(MAKE) install DESTDIR=\$(DESTDIR)";
env LIBDRIZZLE_LIB => "$libdrizzle_root$libdrizzle_prefix/lib";
env LIBDRIZZLE_INC => "$libdrizzle_root$libdrizzle_prefix/include";
push @ngx_rpaths, "$libdrizzle_prefix/lib";
cd '..';
if (my $drizzle_prefix = $opts->{libdrizzle}) {
my $drizzle_lib = "$drizzle_prefix/lib";
env LIBDRIZZLE_LIB => "$drizzle_prefix/lib";
env LIBDRIZZLE_INC => "$drizzle_prefix/include/libdrizzle-1.0";
push @ngx_rpaths, $drizzle_lib;
}
if ($opts->{luajit}) {
@ -337,14 +324,25 @@ sub build_resty_opts {
cd $luajit_src;
shell "make PREFIX=$luajit_prefix", $dry_run;
shell "make install PREFIX=$luajit_prefix DESTDIR=$luajit_root", $dry_run;
my $extra_opts = ' TARGET_STRIP=@:';
if ($opts->{debug}) {
$extra_opts = ' CCDEBUG=-g Q=';
}
if (defined $cc) {
$extra_opts .= " HOST_CC=$cc";
}
shell "make$extra_opts PREFIX=$luajit_prefix", $dry_run;
shell "make install$extra_opts PREFIX=$luajit_prefix DESTDIR=$luajit_root", $dry_run;
push @make_cmds, "cd build/$luajit_src && "
. "\$(MAKE) PREFIX=$luajit_prefix";
. "\$(MAKE)$extra_opts PREFIX=$luajit_prefix";
push @make_install_cmds, "cd build/$luajit_src && "
. "\$(MAKE) install PREFIX=$luajit_prefix DESTDIR=\$(DESTDIR)";
. "\$(MAKE) install$extra_opts PREFIX=$luajit_prefix DESTDIR=\$(DESTDIR)";
env LUAJIT_LIB => "$luajit_root$luajit_prefix/lib";
env LUAJIT_INC => "$luajit_root$luajit_prefix/include/luajit-2.0";
@ -374,16 +372,21 @@ sub build_resty_opts {
cd $lua_src;
shell "make $platform", $dry_run;
shell "make install INSTALL_TOP=$lua_root$lua_prefix", $dry_run;
my $extra_opts = '';
if (defined $cc) {
$extra_opts .= " CC=$cc";
}
shell "make$extra_opts $platform", $dry_run;
shell "make install$extra_opts INSTALL_TOP=$lua_root$lua_prefix", $dry_run;
env LUA_LIB => "$lua_root$lua_prefix/lib";
env LUA_INC => "$lua_root$lua_prefix/include";
push @make_cmds, "cd build/$lua_src && \$(MAKE) $platform";
push @make_cmds, "cd build/$lua_src && \$(MAKE)$extra_opts $platform";
push @make_install_cmds, "cd build/$lua_src && "
. "\$(MAKE) install INSTALL_TOP=\$(DESTDIR)$lua_prefix";
. "\$(MAKE) install$extra_opts INSTALL_TOP=\$(DESTDIR)$lua_prefix";
cd '..';
}
@ -477,6 +480,7 @@ _EOC_
--without-lua51 disable the bundled Lua 5.1 interpreter
--with-luajit enable LuaJIT 2.0
--with-libdrizzle=DIR specify the libdrizzle 1.0 installation prefix
Options directly inherited from nginx
@ -617,7 +621,7 @@ sub gen_makefile {
open my $out, ">Makefile" or
die "Cannot open Makefile for writing: $!\n";
print $out ".PHONY: all install\n\n";
print $out ".PHONY: all install clean\n\n";
print $out "all:\n\t" . join("\n\t", @make_cmds) . "\n\n";
@ -628,3 +632,23 @@ sub gen_makefile {
close $out;
}
# check if we can run some command
sub can_run {
my ($cmd) = @_;
#warn "can run: @_\n";
my $_cmd = $cmd;
return $_cmd if -x $_cmd;
# FIXME: this is a hack; MSWin32 is not supported anyway
my $path_sep = ':';
for my $dir ((split /$path_sep/, $ENV{PATH}), '.') {
next if $dir eq '';
my $abs = File::Spec->catfile($dir, $_[0]);
return $abs if -x $abs;
}
return;
}

View File

@ -42,9 +42,20 @@ for my $t_file (@t_files) {
if (s{\.\./$pat\S+}{../$dir}g && $orig ne $_) {
$changed++;
warn "\n- $orig";
warn "+ $_";
} elsif (s{\bbuild/$pat[^/ \t\n]*\d[^/ \t\n]*}{build/$dir}g && $orig ne $_) {
$changed++;
warn "\n- $orig";
warn "+ $_";
} elsif (s{^cd $pat[^/ \t\n]+}{cd $dir}g && $orig ne $_) {
$changed++;
warn "\n- $orig";
warn "+ $_";
}
}
print $out $_;
@ -57,7 +68,7 @@ for my $t_file (@t_files) {
close $in;
}
print join "\n", map { " $_" } sort @dirs;
print join("\n", map { /^LuaJIT/ ? "* ~$_" : "* $_" } sort @dirs), "\n";
sub cd ($) {
my $dir = shift;

View File

@ -1,6 +1,7 @@
#!/bin/bash
root=$(readlink -f -- "$(dirname -- "$0")/..")
#root=$(readlink -f -- "$(dirname -- "$0")/..")
root=`perl -MCwd -e'print Cwd::abs_path(shift)' $(dirname -- "$0")/..`
work=$root/work
if [ ! -d $work ]; then

View File

@ -1,6 +1,7 @@
#!/bin/bash
root=$(readlink -f -- "$(dirname -- "$0")/..")
#root=$(readlink -f -- "$(dirname -- "$0")/..")
root=`perl -MCwd -e'print Cwd::abs_path(shift)' $(dirname -- "$0")/..`
. util/ver
@ -31,20 +32,28 @@ sed -i $"s/NGINX_VERSION \".unknown\"/NGINX_VERSION \".$minor_ver\"/" \
patch -p2 < server_header.patch || exit 1
patch -p1 < $root/patches/nginx-$main_ver-redirect_memcpy_overlap.patch || exit 1
#patch -p1 < $root/patches/nginx-$main_ver-redirect_memcpy_overlap.patch || exit 1
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-request_body_preread_fix.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
rm -f *.patch || exit 1
cd .. || exit 1
ver=0.36rc2
ver=0.37rc1
$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
mv agentzh-echo-nginx-module-* echo-nginx-module-$ver
ver=0.03rc2
ver=0.03rc3
$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
mv agentzh-xss-nginx-module-* xss-nginx-module-$ver || exit 1
@ -54,66 +63,66 @@ $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
mv simpl-ngx_devel_kit-* ngx_devel_kit-$ver || exit 1
ver=0.21
ver=0.22rc1
$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
mv agentzh-set-misc-nginx-module-* set-misc-nginx-module-$ver || exit 1
ver=0.11rc2
ver=0.12rc1
$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
mv agentzh-rds-json-nginx-module-* rds-json-nginx-module-$ver || exit 1
ver=0.14
ver=0.15
$root/util/get-tarball "http://github.com/agentzh/headers-more-nginx-module/tarball/v$ver" -O headers-more-nginx-module-$ver.tar.gz || exit 1
tar -xzf headers-more-nginx-module-$ver.tar.gz || exit 1
mv agentzh-headers-more-nginx-module-* headers-more-nginx-module-$ver || exit 1
#################################
ver=0.0.15rc9
ver=0.1.1rc2
$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
mv chaoslawful-drizzle-nginx-module-* drizzle-nginx-module-$ver || exit 1
#################################
ver=0.1.6rc3
ver=0.2.1rc2
$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
mv chaoslawful-lua-nginx-module-* ngx_lua-$ver || exit 1
#################################
ver=0.02
ver=0.03rc1
$root/util/get-tarball "http://github.com/agentzh/array-var-nginx-module/tarball/v$ver" -O array-var-nginx-module-$ver.tar.gz || exit 1
tar -xzf array-var-nginx-module-$ver.tar.gz || exit 1
mv agentzh-array-var-nginx-module-* array-var-nginx-module-$ver || exit 1
#################################
ver=0.12rc1
ver=0.12
$root/util/get-tarball "http://github.com/agentzh/memc-nginx-module/tarball/v$ver" -O memc-nginx-module-$ver.tar.gz || exit 1
tar -xzf memc-nginx-module-$ver.tar.gz || exit 1
mv agentzh-memc-nginx-module-* memc-nginx-module-$ver || exit 1
#################################
ver=0.12rc2
ver=0.12
$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
mv agentzh-srcache-nginx-module-* srcache-nginx-module-$ver || exit 1
#################################
ver=0.07rc4
ver=0.07rc5
$root/util/get-tarball "http://github.com/calio/form-input-nginx-module/tarball/v$ver" -O form-input-nginx-module-$ver.tar.gz || exit 1
tar -xzf form-input-nginx-module-$ver.tar.gz || exit 1
mv calio-form-input-nginx-module-* form-input-nginx-module-$ver || exit 1
#################################
ver=0.10rc3
ver=0.10rc4
$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
mv calio-iconv-nginx-module-* iconv-nginx-module-$ver || exit 1
@ -142,14 +151,14 @@ mv ngx_http_auth_request_module-* auth-request-nginx-module-$ver || exit 1
#################################
ver=0.8
ver=0.9rc1
$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
mv FRiCKLE-ngx_postgres-* ngx_postgres-$ver || exit 1
#################################
ver=0.06
ver=0.07
$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
mv agentzh-redis2-nginx-module-* redis2-nginx-module-$ver || exit 1
@ -172,25 +181,19 @@ cp $root/patches/lua-$ver-makefile_install_fix.patch lua-makefile-fix.patch || e
patch -p0 < lua-makefile-fix.patch || exit 1
rm lua-makefile-fix.patch
rm lua-makefile-fix.patch || exit 1
#################################
ver=2.0.0-beta6
ver=2.0.0-beta8
$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
#################################
ver=0.8
$root/util/get-tarball "http://launchpad.net/libdrizzle/trunk/0.8/+download/libdrizzle-0.8.tar.gz" -O "libdrizzle-$ver.tar.gz" || exit 1
tar -xzf libdrizzle-$ver.tar.gz || exit 1
$root/util/get-tarball "http://agentzh.org/misc/nginx/libdrizzle-0.8-parsebug_and_mac_fixes.patch" -O "parsebug_and_mac_fixes.patch" || exit 1
patch -p0 < parsebug_and_mac_fixes.patch
rm parsebug_and_mac_fixes.patch || exit 1
cd LuaJIT-$ver || exit 1;
$root/util/get-tarball http://luajit.org/download/beta8_hotfix1.patch -O beta8_hotfix1.patch
patch -p1 < beta8_hotfix1.patch || exit 1
rm beta8_hotfix1.patch || exit 1
cd ..
#################################

View File

@ -1,7 +1,7 @@
#!/bin/bash
main_ver=0.8.54
minor_ver=3
main_ver=1.0.4
minor_ver=1
version=$main_ver.$minor_ver
echo $version