From 3e2b93c19d762ecfcda71ff8dc6468c607ae3dc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?agentzh=20=28=E7=AB=A0=E4=BA=A6=E6=98=A5=29?= Date: Thu, 27 Oct 2011 20:22:31 +0800 Subject: [PATCH] upgraded ngx_lua to 0.3.1rc23; released ngx_openresty 1.0.8.25; added patches for nginx 0.8.54. --- ...x-0.8.54-allow_request_body_updating.patch | 117 ++++++++++++++++++ ...0.8.54-named_location_clear_mods_ctx.patch | 12 ++ ....8.54-variable_header_ignore_no_hash.patch | 69 +++++++++++ util/mirror-tarballs | 2 +- util/ver | 2 +- 5 files changed, 200 insertions(+), 2 deletions(-) create mode 100644 patches/nginx-0.8.54-allow_request_body_updating.patch create mode 100644 patches/nginx-0.8.54-named_location_clear_mods_ctx.patch create mode 100644 patches/nginx-0.8.54-variable_header_ignore_no_hash.patch diff --git a/patches/nginx-0.8.54-allow_request_body_updating.patch b/patches/nginx-0.8.54-allow_request_body_updating.patch new file mode 100644 index 0000000..d003033 --- /dev/null +++ b/patches/nginx-0.8.54-allow_request_body_updating.patch @@ -0,0 +1,117 @@ +diff -ur nginx-0.8.54/src/http/ngx_http_request_body.c nginx-0.8.54-patched/src/http/ngx_http_request_body.c +--- nginx-0.8.54/src/http/ngx_http_request_body.c 2011-09-30 22:36:19.000000000 +0800 ++++ nginx-0.8.54-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-0.8.54-patched/src/http: ngx_http_request_body.c~ +diff -ur nginx-0.8.54/src/http/ngx_http_request.c nginx-0.8.54-patched/src/http/ngx_http_request.c +--- nginx-0.8.54/src/http/ngx_http_request.c 2011-09-30 22:36:19.000000000 +0800 ++++ nginx-0.8.54-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-0.8.54-patched/src/http: ngx_http_request.c~ +diff -ur nginx-0.8.54/src/http/ngx_http_request.h nginx-0.8.54-patched/src/http/ngx_http_request.h +--- nginx-0.8.54/src/http/ngx_http_request.h 2011-08-29 18:39:23.000000000 +0800 ++++ nginx-0.8.54-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-0.8.54-patched/src/http: ngx_http_request.h~ +Only in nginx-0.8.54-patched/src/http: tags diff --git a/patches/nginx-0.8.54-named_location_clear_mods_ctx.patch b/patches/nginx-0.8.54-named_location_clear_mods_ctx.patch new file mode 100644 index 0000000..e977ccc --- /dev/null +++ b/patches/nginx-0.8.54-named_location_clear_mods_ctx.patch @@ -0,0 +1,12 @@ +--- nginx-0.8.54/src/http/ngx_http_core_module.c 2011-09-27 19:14:02.000000000 +0800 ++++ nginx-0.8.54-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); diff --git a/patches/nginx-0.8.54-variable_header_ignore_no_hash.patch b/patches/nginx-0.8.54-variable_header_ignore_no_hash.patch new file mode 100644 index 0000000..a58948c --- /dev/null +++ b/patches/nginx-0.8.54-variable_header_ignore_no_hash.patch @@ -0,0 +1,69 @@ +--- nginx-0.8.54/src/http/ngx_http_variables.c 2011-05-30 05:36:17.000000000 -0700 ++++ nginx-0.8.54-patched/src/http/ngx_http_variables.c 2011-09-30 10:59:05.000000000 -0700 +@@ -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,6 +696,11 @@ + 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) { +@@ -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]; + diff --git a/util/mirror-tarballs b/util/mirror-tarballs index 45387b2..3715a45 100755 --- a/util/mirror-tarballs +++ b/util/mirror-tarballs @@ -105,7 +105,7 @@ mv chaoslawful-drizzle-nginx-module-* drizzle-nginx-module-$ver || exit 1 ################################# -ver=0.3.1rc22 +ver=0.3.1rc23 $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 diff --git a/util/ver b/util/ver index e9458b8..03605b3 100755 --- a/util/ver +++ b/util/ver @@ -1,7 +1,7 @@ #!/bin/bash main_ver=1.0.8 -minor_ver=23 +minor_ver=25 version=$main_ver.$minor_ver echo $version