Compare commits

..

11 Commits

7 changed files with 393 additions and 261 deletions

View File

@ -0,0 +1,115 @@
--- nginx-1.0.9/src/http/modules/ngx_http_log_module.c 2011-11-01 21:24:50.000000000 +0800
+++ nginx-1.0.9-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

@ -1,5 +1,5 @@
--- nginx-1.0.9/src/http/ngx_http_variables.c 2011-05-30 05:36:17.000000000 -0700
+++ nginx-1.0.9-patched/src/http/ngx_http_variables.c 2011-09-30 10:59:05.000000000 -0700
--- nginx-1.0.9/src/http/ngx_http_variables.c 2011-05-30 20:36:17.000000000 +0800
+++ nginx-1.0.9-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);
@ -44,7 +44,7 @@
len += h[i]->value.len + sizeof("; ") - 1;
}
@@ -683,6 +696,11 @@
@@ -683,9 +696,14 @@
v->data = p;
for (i = 0; /* void */ ; i++) {
@ -55,7 +55,11 @@
+
p = ngx_copy(p, h[i]->value.data, h[i]->value.len);
if (i == n - 1) {
- if (i == n - 1) {
+ if (--n == 0) {
break;
}
@@ -738,6 +756,10 @@
i = 0;
}

View File

@ -1,5 +1,5 @@
--- 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
--- nginx-1.1.4/src/http/ngx_http_variables.c 2011-05-30 20:36:17.000000000 +0800
+++ nginx-1.1.4-patched/src/http/ngx_http_variables.c 2011-11-08 21:39:28.509366052 +0800
@@ -648,7 +648,17 @@
a = (ngx_array_t *) ((char *) r + data);
@ -44,10 +44,12 @@
len += h[i]->value.len + sizeof("; ") - 1;
}
@@ -683,6 +696,11 @@
@@ -682,7 +695,12 @@
v->len = len;
v->data = p;
for (i = 0; /* void */ ; i++) {
- for (i = 0; /* void */ ; i++) {
+ for (i = 0; i < n; i++) {
+
+ if (h[i]->hash == 0) {
+ continue;

File diff suppressed because it is too large Load Diff

13
util/configure vendored
View File

@ -11,6 +11,7 @@ sub env ($$);
sub cd ($);
sub auto_complete ($);
sub usage ($);
sub trim ($);
my (@make_cmds, @make_install_cmds);
@ -272,10 +273,16 @@ sub shell ($@) {
unless ($dry_run) {
system($cmd) == 0 or
die "failed to run command: $cmd\n";
die "failed to run command: ", trim($cmd), "\n";
}
}
sub trim ($) {
my $cmd = shift;
$cmd =~ s/\n.*/.../s;
$cmd;
}
sub auto_complete ($) {
my $name = shift;
my @dirs = glob "$name-[0-9]*" or
@ -313,7 +320,9 @@ sub build_resty_opts {
# no gmake found
if ($platform =~ /bsd/i) {
die "error: you need to install gmake (Gnu make) to build LuaJIT.\n";
die "error: I cannot find \"gmake\" (Gnu make) in your PATH ".
"envirnonment. You can also specify your make by the ".
"--with-make=PATH option\n";
}
if (can_run("make")) {

View File

@ -52,6 +52,8 @@ patch -p1 < $root/patches/nginx-$main_ver-named_location_clear_mods_ctx.patch ||
patch -p1 < $root/patches/nginx-$main_ver-allow_request_body_updating.patch || exit 1
patch -p1 < $root/patches/nginx-$main_ver-log_escape_non_ascii.patch || exit 1
rm -f *.patch || exit 1
cd .. || exit 1
@ -91,21 +93,21 @@ $root/util/get-tarball "http://github.com/agentzh/rds-csv-nginx-module/tarball/v
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.16rc3
ver=0.16rc4
$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.2rc2
ver=0.1.2rc4
$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.1rc26
ver=0.3.1rc28
$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

View File

@ -1,7 +1,7 @@
#!/bin/bash
main_ver=1.0.9
minor_ver=1
minor_ver=10
version=$main_ver.$minor_ver
echo $version