Compare commits

..

32 Commits

Author SHA1 Message Date
876b1eca48 upgraded ngx_lua to 0.3.1rc13; released ngx_openresty 1.0.8.9. 2011-10-16 12:10:10 +08:00
25d7c1e91b upgraded ngx_lua to v0.3.1rc12. 2011-10-16 07:03:37 +08:00
c239151bf7 upgraded ngx_srcache to 0.13rc2; released ngx_openresty 1.0.8.7. 2011-10-15 18:55:52 +08:00
67879a5fbb upgraded ngx_lua to v0.3.1rc11 and ngx_echo to 0.37rc6; also applied the named_location_clear_mods_ctx patch; also released ngx_openresty 1.0.8.5. 2011-10-13 21:25:15 +08:00
170cc51fe2 upgraded ngx_lua to 0.3.1rc10. 2011-10-13 11:10:56 +08:00
7c22476c97 upgraded ngx_iconv to 0.10rc5. 2011-10-11 07:37:46 +08:00
39f926d7d6 upgraded ngx_set_misc to 0.22rc3. 2011-10-10 16:22:28 +08:00
2aeb6c6bd4 upgraded ngx_headers_more to v0.16rc3. 2011-10-10 16:08:53 +08:00
b3cd026920 upgraded ngx_srcache to v0.13rc1. 2011-10-10 15:43:02 +08:00
839f490bc3 upgraded ngx_redis2 to 0.08rc1. 2011-10-09 17:56:45 +08:00
c2c1460995 upgraded ngx_rds_csv to 0.04. 2011-10-09 17:00:09 +08:00
ec63a3d57e upgraded ngx_lua to 0.3.1rc9. 2011-10-09 16:05:11 +08:00
ba6e18d2c0 upgraded ngx_echo to 0.37rc5. 2011-10-09 08:54:17 +08:00
97ba2da970 upgraded ngx_rds_json to 0.12rc6. 2011-10-08 22:57:08 +08:00
f2389052ca upgraded ngx_drizzle to 0.1.2rc2. 2011-10-08 22:16:14 +08:00
f71188ba53 upgraded ngx_drizzle to 0.1.2rc1. 2011-10-08 22:08:02 +08:00
7a7fb5f4e5 upgraded ngx_memc to 0.13rc1. 2011-10-08 17:47:55 +08:00
23506e8328 initial work for migrating to the 1.0.8.1 release; applied the variable-header-ignore-no-hash patch. 2011-10-07 13:44:20 +08:00
ee9cf6c407 checked in the variable_header_ignore_no_hash patch. 2011-09-30 11:43:31 -07:00
5136657315 released ngx_openresty 1.0.6.21. 2011-09-23 16:50:04 +08:00
b5e945fb9f added new option -jN (e.g., -j8, -j10, and etc.) to ./configure; thanks @Lance. 2011-09-23 16:45:42 +08:00
b8217145ed upgraded ngx_lua to 0.3.1rc8; released ngx_openresty 1.0.6.19. 2011-09-23 16:19:44 +08:00
c2dc7e3b69 upgraded ngx_lua to 0.3.1rc7; released ngx_openresty 1.0.6.17. 2011-09-23 00:03:03 +08:00
4730dea151 upgraded ngx_lua to 0.3.1rc5; released ngx_openresty 1.0.6.15. 2011-09-22 15:28:12 +08:00
a13135e34e upgraded ngx_lua to 0.3.1rc4; released ngx_openresty 1.0.6.13. 2011-09-21 22:42:15 +08:00
beb32b132f released ngx_openresty 1.0.6.12. 2011-09-21 19:05:24 +08:00
48635d83e3 upgraded ngx_rds_json to 0.12rc5 and ngx_rds_csv to 0.03. 2011-09-20 21:54:52 +08:00
a3eea311e9 upgraded ngx_openresty 0.12rc4 and released ngx_openresty 1.0.6.11. 2011-09-20 21:06:31 +08:00
06091efe32 upgraded lua-cjson to 1.0.3; released ngx_openresty 1.0.6.9. 2011-09-19 12:33:03 +08:00
b11711a509 added the new option --with-lua51=PATH to the configure script. released ngx_openresty 1.0.6.7. 2011-09-18 13:23:44 +08:00
733e37e053 added the --with-luajit=PATH option to ./configure per NginxUser's suggestion. 2011-09-18 13:06:57 +08:00
1bac07b50c upgraded ngx_rds_json to 0.12rc3; released ngx_openresty 1.0.6.5. 2011-09-15 18:30:55 +08:00
18 changed files with 1624 additions and 298 deletions

View File

@ -0,0 +1,69 @@
--- nginx-1.0.6/src/http/ngx_http_variables.c 2011-05-30 05:36:17.000000000 -0700
+++ nginx-1.0.6-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];

View File

@ -0,0 +1,69 @@
# HG changeset patch
# User Maxim Dounin <mdounin@mdounin.ru>
# Date 1315324342 -14400
# Node ID 4cf0af103bc382a78f894302d1706929a79df4bb
# Parent d603ce98fada855f0100b422b7b5672fd22fabea
Gzip filter: handle empty flush buffers.
Empty flush buffers are legitimate and may happen e.g. due to $r->flush()
calls in embedded perl. If there are no data buffered in zlib deflate()
will return Z_BUF_ERROR (i.e. no progress possible) without adding anything
to output. Don't treat Z_BUF_ERROR as fatal and correctly send empty flush
buffer if we have no data in output at all.
See this thread for details:
http://mailman.nginx.org/pipermail/nginx/2010-November/023693.html
diff --git a/src/http/modules/ngx_http_gzip_filter_module.c b/src/http/modules/ngx_http_gzip_filter_module.c
--- a/src/http/modules/ngx_http_gzip_filter_module.c
+++ b/src/http/modules/ngx_http_gzip_filter_module.c
@@ -758,6 +758,7 @@ static ngx_int_t
ngx_http_gzip_filter_deflate(ngx_http_request_t *r, ngx_http_gzip_ctx_t *ctx)
{
int rc;
+ ngx_buf_t *b;
ngx_chain_t *cl;
ngx_http_gzip_conf_t *conf;
@@ -769,7 +770,7 @@ ngx_http_gzip_filter_deflate(ngx_http_re
rc = deflate(&ctx->zstream, ctx->flush);
- if (rc != Z_OK && rc != Z_STREAM_END) {
+ if (rc != Z_OK && rc != Z_STREAM_END && rc != Z_BUF_ERROR) {
ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
"deflate() failed: %d, %d", ctx->flush, rc);
return NGX_ERROR;
@@ -818,8 +819,6 @@ ngx_http_gzip_filter_deflate(ngx_http_re
if (ctx->flush == Z_SYNC_FLUSH) {
- ctx->zstream.avail_out = 0;
- ctx->out_buf->flush = 1;
ctx->flush = Z_NO_FLUSH;
cl = ngx_alloc_chain_link(r->pool);
@@ -827,7 +826,22 @@ ngx_http_gzip_filter_deflate(ngx_http_re
return NGX_ERROR;
}
- cl->buf = ctx->out_buf;
+ b = ctx->out_buf;
+
+ if (ngx_buf_size(b) == 0) {
+
+ b = ngx_calloc_buf(ctx->request->pool);
+ if (b == NULL) {
+ return NGX_ERROR;
+ }
+
+ } else {
+ ctx->zstream.avail_out = 0;
+ }
+
+ b->flush = 1;
+
+ cl->buf = b;
cl->next = NULL;
*ctx->last_out = cl;
ctx->last_out = &cl->next;

View File

@ -0,0 +1,12 @@
--- nginx-1.0.8/src/http/ngx_http_core_module.c 2011-09-27 19:14:02.000000000 +0800
+++ nginx-1.0.8-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.8/auto/cc/gcc nginx-1.0.8-patched/auto/cc/gcc
--- nginx-1.0.8/auto/cc/gcc 2011-06-27 19:53:00.205737804 +0800
+++ nginx-1.0.8-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.8/auto/cc/icc nginx-1.0.8-patched/auto/cc/icc
--- nginx-1.0.8/auto/cc/icc 2011-06-27 19:52:56.370157068 +0800
+++ nginx-1.0.8-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.0.8/src/http/ngx_http_core_module.c 2010-12-14 18:38:42.000000000 +0800
+++ nginx-1.0.8-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,504 @@
diff -ur nginx-1.0.8/src/core/nginx.h nginx-1.0.8-patched/src/core/nginx.h
--- nginx-1.0.8/src/core/nginx.h 2011-08-29 17:30:22.000000000 +0800
+++ nginx-1.0.8-patched/src/core/nginx.h 2011-09-13 12:11:03.135622101 +0800
@@ -10,7 +10,7 @@
#define nginx_version 1000008
#define NGINX_VERSION "1.0.8"
-#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown"
+#define NGINX_VER "ngx_openresty/" NGINX_VERSION ".unknown (no pool)"
#define NGINX_VAR "NGINX"
diff -ur nginx-1.0.8/src/core/ngx_array.c nginx-1.0.8-patched/src/core/ngx_array.c
--- nginx-1.0.8/src/core/ngx_array.c 2008-06-17 23:00:30.000000000 +0800
+++ nginx-1.0.8-patched/src/core/ngx_array.c 2011-09-14 12:02:56.263128538 +0800
@@ -39,13 +39,7 @@
p = a->pool;
- if ((u_char *) a->elts + a->size * a->nalloc == p->d.last) {
- p->d.last -= a->size * a->nalloc;
- }
-
- if ((u_char *) a + sizeof(ngx_array_t) == p->d.last) {
- p->d.last = (u_char *) a;
- }
+ ngx_pfree(p, a);
}
@@ -64,29 +58,17 @@
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);
+ a->elts = new;
+ a->nalloc *= 2;
+
}
elt = (u_char *) a->elts + a->size * a->nelts;
@@ -100,43 +82,25 @@
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;
-
if (a->nelts + n > a->nalloc) {
/* the array is full */
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);
+ a->elts = new;
+ a->nalloc = nalloc;
}
elt = (u_char *) a->elts + a->size * a->nelts;
diff -ur nginx-1.0.8/src/core/ngx_palloc.c nginx-1.0.8-patched/src/core/ngx_palloc.c
--- nginx-1.0.8/src/core/ngx_palloc.c 2009-12-17 20:25:46.000000000 +0800
+++ nginx-1.0.8-patched/src/core/ngx_palloc.c 2011-09-14 12:03:41.663126519 +0800
@@ -8,24 +8,31 @@
#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;
+ ngx_pool_data_t *d;
- 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;
+ d = ngx_alloc(sizeof(ngx_pool_data_t), log);
+
+ if (d == NULL) {
+ return NULL;
+ }
+
+ d->next = d;
+ d->prev = d;
+ d->alloc = NULL;
+ p->d = d;
size = size - sizeof(ngx_pool_t);
p->max = (size < NGX_MAX_ALLOC_FROM_POOL) ? size : NGX_MAX_ALLOC_FROM_POOL;
@@ -43,7 +50,7 @@
void
ngx_destroy_pool(ngx_pool_t *pool)
{
- ngx_pool_t *p, *n;
+ ngx_pool_data_t *d, *n;
ngx_pool_large_t *l;
ngx_pool_cleanup_t *c;
@@ -55,7 +62,7 @@
}
}
- 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);
@@ -71,34 +78,45 @@
* 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 (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", d);
- if (n == NULL) {
+ if (n == pool->d) {
break;
}
}
#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) {
- ngx_free(p);
-
- if (n == NULL) {
- break;
+ if (n == pool->d) {
+ break;
+ }
}
}
+
+ ngx_free(pool);
}
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_malloc(ngx_pool_t *pool, size_t size)
{
- u_char *m;
- ngx_pool_t *p;
-
- if (size <= pool->max) {
+ ngx_pool_data_t *new;
+ void *m;
- 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;
- }
-
- p = p->d.next;
-
- } 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 *
-ngx_pnalloc(ngx_pool_t *pool, size_t size)
+ngx_palloc(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;
- }
-
- p = p->d.next;
-
- } while (p);
-
- return ngx_palloc_block(pool, size);
+ if (size <= 1024) {
+ return ngx_malloc(pool, size);
}
return ngx_palloc_large(pool, size);
}
-static void *
-ngx_palloc_block(ngx_pool_t *pool, size_t size)
+void *
+ngx_pnalloc(ngx_pool_t *pool, size_t size)
{
- u_char *m;
- size_t psize;
- ngx_pool_t *p, *new, *current;
-
- psize = (size_t) (pool->d.end - (u_char *) pool);
-
- m = ngx_memalign(NGX_POOL_ALIGNMENT, psize, pool->log);
- if (m == 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;
- }
+ if (size <= 1024) {
+ return ngx_malloc(pool, size);
}
- p->d.next = new;
-
- pool->current = current ? current : new;
-
- return m;
+ return ngx_palloc_large(pool, size);
}
@@ -216,7 +190,6 @@
ngx_palloc_large(ngx_pool_t *pool, size_t size)
{
void *p;
- ngx_uint_t n;
ngx_pool_large_t *large;
p = ngx_alloc(size, pool->log);
@@ -224,20 +197,7 @@
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));
+ large = ngx_malloc(pool, sizeof(ngx_pool_large_t));
if (large == NULL) {
ngx_free(p);
return NULL;
@@ -262,7 +222,7 @@
return NULL;
}
- large = ngx_palloc(pool, sizeof(ngx_pool_large_t));
+ large = ngx_malloc(pool, sizeof(ngx_pool_large_t));
if (large == NULL) {
ngx_free(p);
return NULL;
@@ -279,17 +239,41 @@
ngx_int_t
ngx_pfree(ngx_pool_t *pool, void *p)
{
- ngx_pool_large_t *l;
+ ngx_pool_large_t *l;
+ ngx_pool_large_t *ll;
+ ngx_pool_data_t *d, *n;
- for (l = pool->large; l; l = l->next) {
+ for (l = pool->large, ll = l; l; ll = 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;
+ if (l == pool->large) {
+ pool->large = NULL;
+ }
+
+ 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);
+ if (d->alloc) {
+ ngx_free(d->alloc);
+ }
+ d->alloc = NULL;
+ d->prev->next = d->next;
+ d->next->prev = d->prev;
+ ngx_free(d);
return NGX_OK;
}
+ if (d->next == pool->d) {
+ break;
+ }
}
return NGX_DECLINED;
diff -ur nginx-1.0.8/src/core/ngx_palloc.h nginx-1.0.8-patched/src/core/ngx_palloc.h
--- nginx-1.0.8/src/core/ngx_palloc.h 2009-12-17 20:25:46.000000000 +0800
+++ nginx-1.0.8-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_data_s ngx_pool_data_t;
struct ngx_pool_large_s {
ngx_pool_large_t *next;
@@ -45,16 +46,15 @@
};
-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;
+ ngx_pool_data_t *prev;
+ 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;

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.8/src/http/ngx_http_request_body.c 2011-07-05 12:11:21.619264633 +0800
+++ nginx-1.0.8-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.8/nginx-1.0.8/src/core/nginx.h lz-nginx-1.0.8-patched/nginx-1.0.8/src/core/nginx.h
--- lz-nginx-1.0.8/nginx-1.0.8/src/core/nginx.h 2010-02-12 17:31:01.000000000 +0800
+++ lz-nginx-1.0.8-patched/nginx-1.0.8/src/core/nginx.h 2010-03-30 10:52:13.240702627 +0800
@@ -10,7 +10,7 @@
#define nginx_version 1000008
#define NGINX_VERSION "1.0.8"
-#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.8-patched/nginx-1.0.8/src/core: nginx.h.orig
Only in lz-nginx-1.0.8-patched/nginx-1.0.8/src/core: nginx.h.rej
diff -ur lz-nginx-1.0.8/nginx-1.0.8/src/http/ngx_http_header_filter_module.c lz-nginx-1.0.8-patched/nginx-1.0.8/src/http/ngx_http_header_filter_module.c
--- lz-nginx-1.0.8/nginx-1.0.8/src/http/ngx_http_header_filter_module.c 2010-03-03 23:14:04.000000000 +0800
+++ lz-nginx-1.0.8-patched/nginx-1.0.8/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) {

View File

@ -0,0 +1,69 @@
--- nginx-1.0.8/src/http/ngx_http_variables.c 2011-05-30 05:36:17.000000000 -0700
+++ nginx-1.0.8-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];

View File

@ -0,0 +1,69 @@
--- nginx-1.1.4/src/http/ngx_http_variables.c 2011-05-30 05:36:17.000000000 -0700
+++ nginx-1.1.4-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];

View File

@ -0,0 +1,12 @@
--- nginx-1.1.5/src/http/ngx_http_core_module.c 2011-09-27 19:14:02.000000000 +0800
+++ nginx-1.1.5-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);

File diff suppressed because it is too large Load Diff

72
util/configure vendored
View File

@ -110,12 +110,18 @@ my %resty_opts;
my $dry_run;
my @ngx_rpaths;
my $cc;
my $cores;
my (@ngx_opts, @ngx_cc_opts, @ngx_ld_opts);
for my $opt (@ARGV) {
next unless defined $opt;
if ($opt =~ /^-j(\d+)/) {
$cores = $1;
next;
}
if ($opt =~ /^--with-cc=(.+)/) {
$cc = $1;
push @ngx_opts, $opt;
@ -138,6 +144,9 @@ for my $opt (@ARGV) {
} elsif ($opt eq '--without-lua51') {
$resty_opts{no_lua} = 1;
} elsif ($opt =~ /^--with-lua51=(.*)/) {
$resty_opts{lua_path} = $1;
} elsif ($opt eq '--without-lua_cjson') {
$resty_opts{no_lua_cjson} = 1;
@ -172,6 +181,9 @@ for my $opt (@ARGV) {
} elsif ($opt eq '--with-luajit') {
$resty_opts{luajit} = 1;
} elsif ($opt =~ /^--with-luajit=(.*)/) {
$resty_opts{luajit_path} = $1;
} elsif ($opt =~ /^--with-libdrizzle=(.*)/) {
$resty_opts{libdrizzle} = $1;
@ -329,10 +341,17 @@ _END_
}
}
if (! $opts->{luajit} && ! $opts->{no_http_lua} && ! $opts->{no_lua}) {
if (! $opts->{luajit} && ! $opts->{luajit_path}
&& ! $opts->{no_http_lua} && ! $opts->{no_lua}
&& ! $opts->{lua_path})
{
$opts->{lua} = 1;
}
if ($opts->{luajit} && $opts->{luajit_path}) {
die "--with-luajit and --with-luajit=PATH are mutually exclusive.\n";
}
if ($opts->{no_http_ssl} && $opts->{http_ssl}) {
die "--with-http_ssl_module conflicts with --without-http_ssl_module.\n";
}
@ -432,7 +451,14 @@ _END_
push @ngx_rpaths, $pg_lib;
}
if ($opts->{luajit}) {
if ($opts->{luajit_path}) {
my $luajit_prefix = $opts->{luajit_path};
env LUAJIT_LIB => "$luajit_prefix/lib";
env LUAJIT_INC => "$luajit_prefix/include/luajit-2.0";
push @ngx_rpaths, "$luajit_prefix/lib";
} elsif ($opts->{luajit}) {
my $luajit_src = auto_complete 'LuaJIT';
my $luajit_prefix = "$prefix/luajit";
my $luajit_root = File::Spec->rel2abs("luajit-root");
@ -465,7 +491,11 @@ _END_
$extra_opts .= " CC=$cc";
}
shell "${make}$extra_opts PREFIX=$luajit_prefix", $dry_run;
if (defined $cores) {
shell "${make} -j$cores$extra_opts PREFIX=$luajit_prefix", $dry_run;
} else {
shell "${make}$extra_opts PREFIX=$luajit_prefix", $dry_run;
}
shell "${make} install$extra_opts PREFIX=$luajit_prefix DESTDIR=$luajit_root", $dry_run;
@ -482,6 +512,13 @@ _END_
cd '..';
} elsif ($opts->{lua_path}) {
my $lua_prefix = $opts->{lua_path};
env LUA_LIB => "$lua_prefix/lib";
env LUA_INC => "$lua_prefix/include";
push @ngx_rpaths, "$lua_prefix/lib";
} elsif ($opts->{lua}) {
# build stdandard lua
@ -508,7 +545,12 @@ _END_
$extra_opts .= " CC=$cc";
}
shell "${make}$extra_opts $platform", $dry_run;
if (defined $cores) {
shell "${make} -j$cores$extra_opts $platform", $dry_run;
} else {
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";
@ -520,10 +562,11 @@ _END_
. "\$(MAKE) install$extra_opts INSTALL_TOP=\$(DESTDIR)$lua_prefix";
cd '..';
}
if ($opts->{lua} || $opts->{luajit}) {
if ($opts->{lua} || $opts->{lua_path}
|| $opts->{luajit} || $opts->{luajit_path})
{
# build lua modules
my $lualib_prefix = "$prefix/lualib";
@ -549,7 +592,7 @@ _EOC_
}
my $lua_inc;
if ($opts->{luajit}) {
if ($opts->{luajit} || $opts->{luajit_path}) {
$lua_inc = $ENV{LUAJIT_INC};
} else {
@ -562,10 +605,10 @@ _EOC_
if ($on_solaris) {
$extra_opts .= " INSTALL=$root_dir/build/install";
if ($opts->{debug}) {
$extra_opts .= " CFLAGS=\"-g -O0 -Wall -pedantic -D'isinf(x)=0'\"";
$extra_opts .= " CFLAGS=\"-g -O0 -Wall -pedantic -DMISSING_ISINF\"";
} else {
$extra_opts .= " CFLAGS=\"-g -O3 -Wall -pedantic -D'isinf(x)=0'\"";
$extra_opts .= " CFLAGS=\"-g -O3 -Wall -pedantic -DMISSING_ISINF\"";
}
} else {
@ -598,7 +641,7 @@ _EOC_
}
my $lua_inc;
if ($opts->{luajit}) {
if ($opts->{luajit} || $opts->{luajit_path}) {
$lua_inc = $ENV{LUAJIT_INC};
} else {
@ -645,7 +688,7 @@ _EOC_
}
my $lua_inc;
if ($opts->{luajit}) {
if ($opts->{luajit} || $opts->{luajit_path}) {
$lua_inc = $ENV{LUAJIT_INC};
} else {
@ -722,6 +765,9 @@ sub usage ($) {
--with-no-pool-patch enable the no-pool patch for debugging memory issues.
-jN pass -jN option to make while building the bundled
Lua 5.1 interpreter or LuaJIT 2.0.
_EOC_
my $opt_max_len = length " --without-ngx_devel_kit_module ";
@ -781,7 +827,9 @@ _EOC_
--without-lua_rds_parser disable the lua-rds-parser library
--without-lua51 disable the bundled Lua 5.1 interpreter
--with-luajit enable LuaJIT 2.0
--with-lua51=PATH specify the external installation of Lua 5.1 by PATH
--with-luajit enable and build LuaJIT 2.0
--with-luajit=PATH use the external LuaJIT 2.0 installation specified by PATH
--with-libdrizzle=DIR specify the libdrizzle 1.0 (or drizzle) installation prefix
--with-libpq=DIR specify the libpq (or postgresql) installation prefix
--with-pg_config=PATH specify the path of the pg_config utility

View File

@ -38,14 +38,18 @@ 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_preread_fix.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
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-named_location_clear_mods_ctx.patch || exit 1
rm -f *.patch || exit 1
cd .. || exit 1
@ -55,7 +59,7 @@ sed -i $"s/NGINX_VERSION \".unknown/NGINX_VERSION \".$minor_ver/" \
./nginx-no_pool.patch || exit 1
rm -rf no-pool-nginx-$ver
ver=0.37rc4
ver=0.37rc6
$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
mv agentzh-echo-nginx-module-* echo-nginx-module-$ver || exit 1
@ -70,36 +74,36 @@ $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.22rc2
ver=0.22rc3
$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.12rc2
ver=0.12rc6
$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.02
ver=0.04
$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
mv agentzh-rds-csv-nginx-module-* rds-csv-nginx-module-$ver || exit 1
ver=0.16rc2
ver=0.16rc3
$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.1.1rc4
ver=0.1.2rc2
$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.3.1rc3
ver=0.3.1rc13
$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
@ -113,14 +117,14 @@ mv agentzh-array-var-nginx-module-* array-var-nginx-module-$ver || exit 1
#################################
ver=0.12
ver=0.13rc1
$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.12
ver=0.13rc2
$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
@ -134,7 +138,7 @@ mv calio-form-input-nginx-module-* form-input-nginx-module-$ver || exit 1
#################################
ver=0.10rc4
ver=0.10rc5
$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
@ -170,7 +174,7 @@ mv FRiCKLE-ngx_postgres-* ngx_postgres-$ver || exit 1
#################################
ver=0.07
ver=0.08rc1
$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
@ -210,11 +214,11 @@ cd ..
#################################
ver=1.0.2
ver=1.0.3
$root/util/get-tarball "http://www.kyne.com.au/~mark/software/lua-cjson-$ver.tar.gz" -O "lua-cjson-$ver.tar.gz" || exit 1
tar -xzf lua-cjson-$ver.tar.gz || exit 1
cd lua-cjson-$ver || exit 1
patch -p1 < $root/patches/lua_cjson-$ver-array_detection_fix.patch || exit 1
#patch -p1 < $root/patches/lua_cjson-$ver-array_detection_fix.patch || exit 1
cd ..
#################################

2
util/upgrade-patches.pl Normal file → Executable file
View File

@ -21,7 +21,7 @@ for my $file (@files) {
or die "failed run command $cmd.\n";
}
my $cmd = "sed -i 's/1\.0\.5/1.0.6/g' $newfile";
my $cmd = "sed -i 's/\Q$ver\E/$newver/g' $newfile";
system($cmd) == 0
or die "failed to run command $cmd.\n";

View File

@ -1,7 +1,7 @@
#!/bin/bash
main_ver=1.0.6
minor_ver=3
main_ver=1.0.8
minor_ver=9
version=$main_ver.$minor_ver
echo $version