nginxtra 1.2.2.4 → 1.2.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/nginxtra +1 -1
- data/bin/nginxtra_rails +1 -1
- data/lib/nginxtra/version.rb +1 -1
- data/vendor/nginx/CHANGES +25 -1
- data/vendor/nginx/CHANGES.ru +24 -0
- data/vendor/nginx/LICENSE +3 -2
- data/vendor/nginx/auto/cc/clang +98 -0
- data/vendor/nginx/auto/cc/conf +6 -0
- data/vendor/nginx/auto/cc/gcc +1 -3
- data/vendor/nginx/auto/cc/name +14 -26
- data/vendor/nginx/auto/install +1 -1
- data/vendor/nginx/auto/lib/libatomic/make +1 -1
- data/vendor/nginx/auto/lib/perl/make +1 -1
- data/vendor/nginx/configure +3 -0
- data/vendor/nginx/src/core/nginx.h +2 -2
- data/vendor/nginx/src/core/ngx_conf_file.c +18 -21
- data/vendor/nginx/src/core/ngx_conf_file.h +1 -1
- data/vendor/nginx/src/core/ngx_crypt.c +1 -0
- data/vendor/nginx/src/core/ngx_shmtx.c +3 -3
- data/vendor/nginx/src/core/ngx_shmtx.h +1 -1
- data/vendor/nginx/src/core/ngx_slab.c +1 -5
- data/vendor/nginx/src/event/modules/ngx_epoll_module.c +9 -5
- data/vendor/nginx/src/event/modules/ngx_eventport_module.c +31 -0
- data/vendor/nginx/src/event/modules/ngx_rtsig_module.c +12 -0
- data/vendor/nginx/src/event/ngx_event.c +67 -26
- data/vendor/nginx/src/http/modules/ngx_http_limit_conn_module.c +2 -2
- data/vendor/nginx/src/http/modules/ngx_http_log_module.c +1 -1
- data/vendor/nginx/src/http/modules/ngx_http_map_module.c +4 -5
- data/vendor/nginx/src/http/modules/ngx_http_upstream_least_conn_module.c +1 -1
- data/vendor/nginx/src/http/modules/perl/nginx.pm +1 -1
- data/vendor/nginx/src/http/ngx_http.c +5 -0
- data/vendor/nginx/src/http/ngx_http_core_module.c +2 -1
- data/vendor/nginx/src/http/ngx_http_parse_time.c +1 -0
- data/vendor/nginx/src/http/ngx_http_request.c +5 -8
- data/vendor/nginx/src/http/ngx_http_upstream.c +6 -6
- data/vendor/nginx/src/mail/ngx_mail_parse.c +3 -0
- data/vendor/nginx/src/misc/ngx_cpp_test_module.cpp +2 -0
- data/vendor/nginx/src/os/unix/ngx_atomic.h +2 -0
- data/vendor/nginx/src/os/unix/ngx_files.c +3 -9
- data/vendor/nginx/src/os/unix/ngx_posix_init.c +4 -0
- data/vendor/nginx/src/os/unix/ngx_solaris_sendfilev_chain.c +3 -0
- metadata +4 -3
data/bin/nginxtra
CHANGED
data/bin/nginxtra_rails
CHANGED
data/lib/nginxtra/version.rb
CHANGED
data/vendor/nginx/CHANGES
CHANGED
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
|
|
2
|
+
Changes with nginx 1.2.3 07 Aug 2012
|
|
3
|
+
|
|
4
|
+
*) Feature: the Clang compiler support.
|
|
5
|
+
|
|
6
|
+
*) Bugfix: extra listening sockets might be created.
|
|
7
|
+
Thanks to Roman Odaisky.
|
|
8
|
+
|
|
9
|
+
*) Bugfix: nginx/Windows might hog CPU if a worker process failed to
|
|
10
|
+
start.
|
|
11
|
+
Thanks to Ricardo Villalobos Guevara.
|
|
12
|
+
|
|
13
|
+
*) Bugfix: the "proxy_pass_header", "fastcgi_pass_header",
|
|
14
|
+
"scgi_pass_header", "uwsgi_pass_header", "proxy_hide_header",
|
|
15
|
+
"fastcgi_hide_header", "scgi_hide_header", and "uwsgi_hide_header"
|
|
16
|
+
directives might be inherited incorrectly.
|
|
17
|
+
|
|
18
|
+
*) Bugfix: trailing dot in a source value was not ignored if the "map"
|
|
19
|
+
directive was used with the "hostnames" parameter.
|
|
20
|
+
|
|
21
|
+
*) Bugfix: incorrect location might be used to process a request if a
|
|
22
|
+
URI was changed via a "rewrite" directive before an internal redirect
|
|
23
|
+
to a named location.
|
|
24
|
+
|
|
25
|
+
|
|
2
26
|
Changes with nginx 1.2.2 03 Jul 2012
|
|
3
27
|
|
|
4
28
|
*) Change: the "single" parameter of the "keepalive" directive is now
|
|
@@ -11,7 +35,7 @@ Changes with nginx 1.2.2 03 Jul 2012
|
|
|
11
35
|
directives, and the "server" directive inside the "upstream" block,
|
|
12
36
|
now support IPv6 addresses.
|
|
13
37
|
|
|
14
|
-
*) Feature: the "resolver" directive now
|
|
38
|
+
*) Feature: the "resolver" directive now supports IPv6 addresses and an
|
|
15
39
|
optional port specification.
|
|
16
40
|
|
|
17
41
|
*) Feature: the "least_conn" directive inside the "upstream" block.
|
data/vendor/nginx/CHANGES.ru
CHANGED
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
|
|
2
|
+
Изменения в nginx 1.2.3 07.08.2012
|
|
3
|
+
|
|
4
|
+
*) Добавление: поддержка компилятора Clang.
|
|
5
|
+
|
|
6
|
+
*) Исправление: могли создаваться лишние слушающие сокеты.
|
|
7
|
+
Спасибо Роману Одайскому.
|
|
8
|
+
|
|
9
|
+
*) Исправление: nginx/Windows мог нагружать процессор, если при запуске
|
|
10
|
+
рабочего процесса происходила ошибка.
|
|
11
|
+
Спасибо Ricardo Villalobos Guevara.
|
|
12
|
+
|
|
13
|
+
*) Исправление: директивы proxy_pass_header, fastcgi_pass_header,
|
|
14
|
+
scgi_pass_header, uwsgi_pass_header, proxy_hide_header,
|
|
15
|
+
fastcgi_hide_header, scgi_hide_header и uwsgi_hide_header могли
|
|
16
|
+
наследоваться некорректно.
|
|
17
|
+
|
|
18
|
+
*) Исправление: при использовании директивы map с параметром hostnames
|
|
19
|
+
не игнорировалась конечная точка в исходном значении.
|
|
20
|
+
|
|
21
|
+
*) Исправление: для обработки запроса мог использоваться неверный
|
|
22
|
+
location, если переход в именованный location происходил после
|
|
23
|
+
изменения URI с помощью директивы rewrite.
|
|
24
|
+
|
|
25
|
+
|
|
2
26
|
Изменения в nginx 1.2.2 03.07.2012
|
|
3
27
|
|
|
4
28
|
*) Изменение: параметр single директивы keepalive теперь игнорируется.
|
data/vendor/nginx/LICENSE
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Copyright (C) 2002-2012 Igor Sysoev
|
|
3
3
|
* Copyright (C) 2011,2012 Nginx, Inc.
|
|
4
|
+
* All rights reserved.
|
|
4
5
|
*
|
|
5
6
|
* Redistribution and use in source and binary forms, with or without
|
|
6
7
|
* modification, are permitted provided that the following conditions
|
|
@@ -11,10 +12,10 @@
|
|
|
11
12
|
* notice, this list of conditions and the following disclaimer in the
|
|
12
13
|
* documentation and/or other materials provided with the distribution.
|
|
13
14
|
*
|
|
14
|
-
* THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
15
|
+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
15
16
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
16
17
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
17
|
-
* ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
18
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
18
19
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
19
20
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
20
21
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
|
|
2
|
+
# Copyright (C) Nginx, Inc.
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# clang
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
NGX_CLANG_VER=`$CC -v 2>&1 | grep 'clang version' 2>&1 \
|
|
9
|
+
| sed -e 's/^.*clang version \(.*\)/\1/'`
|
|
10
|
+
|
|
11
|
+
echo " + clang version: $NGX_CLANG_VER"
|
|
12
|
+
|
|
13
|
+
have=NGX_COMPILER value="\"clang $NGX_CLANG_VER\"" . auto/define
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
CC_TEST_FLAGS="-pipe"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# optimizations
|
|
20
|
+
|
|
21
|
+
#NGX_CLANG_OPT="-O2"
|
|
22
|
+
#NGX_CLANG_OPT="-Oz"
|
|
23
|
+
NGX_CLANG_OPT="-O"
|
|
24
|
+
|
|
25
|
+
case $CPU in
|
|
26
|
+
pentium)
|
|
27
|
+
# optimize for Pentium
|
|
28
|
+
CPU_OPT="-march=pentium"
|
|
29
|
+
NGX_CPU_CACHE_LINE=32
|
|
30
|
+
;;
|
|
31
|
+
|
|
32
|
+
pentiumpro | pentium3)
|
|
33
|
+
# optimize for Pentium Pro, Pentium II and Pentium III
|
|
34
|
+
CPU_OPT="-march=pentiumpro"
|
|
35
|
+
NGX_CPU_CACHE_LINE=32
|
|
36
|
+
;;
|
|
37
|
+
|
|
38
|
+
pentium4)
|
|
39
|
+
# optimize for Pentium 4
|
|
40
|
+
CPU_OPT="-march=pentium4"
|
|
41
|
+
NGX_CPU_CACHE_LINE=128
|
|
42
|
+
;;
|
|
43
|
+
|
|
44
|
+
athlon)
|
|
45
|
+
# optimize for Athlon
|
|
46
|
+
CPU_OPT="-march=athlon"
|
|
47
|
+
NGX_CPU_CACHE_LINE=64
|
|
48
|
+
;;
|
|
49
|
+
|
|
50
|
+
opteron)
|
|
51
|
+
# optimize for Opteron
|
|
52
|
+
CPU_OPT="-march=opteron"
|
|
53
|
+
NGX_CPU_CACHE_LINE=64
|
|
54
|
+
;;
|
|
55
|
+
|
|
56
|
+
esac
|
|
57
|
+
|
|
58
|
+
CC_AUX_FLAGS="$CC_AUX_FLAGS $CPU_OPT"
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
CFLAGS="$CFLAGS -pipe $CPU_OPT"
|
|
62
|
+
|
|
63
|
+
if [ ".$PCRE_OPT" = "." ]; then
|
|
64
|
+
PCRE_OPT="-O2 -pipe $CPU_OPT"
|
|
65
|
+
else
|
|
66
|
+
PCRE_OPT="$PCRE_OPT -pipe"
|
|
67
|
+
fi
|
|
68
|
+
|
|
69
|
+
if [ ".$MD5_OPT" = "." ]; then
|
|
70
|
+
MD5_OPT="-O2 -pipe $CPU_OPT"
|
|
71
|
+
else
|
|
72
|
+
MD5_OPT="$MD5_OPT -pipe"
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
if [ ".$ZLIB_OPT" = "." ]; then
|
|
76
|
+
ZLIB_OPT="-O2 -pipe $CPU_OPT"
|
|
77
|
+
else
|
|
78
|
+
ZLIB_OPT="$ZLIB_OPT -pipe"
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
# warnings
|
|
83
|
+
|
|
84
|
+
CFLAGS="$CFLAGS $NGX_CLANG_OPT -Wall -Wextra -Wpointer-arith"
|
|
85
|
+
#CFLAGS="$CFLAGS -Wmissing-prototypes"
|
|
86
|
+
|
|
87
|
+
# we have a lot of unused function arguments
|
|
88
|
+
CFLAGS="$CFLAGS -Wno-unused-parameter"
|
|
89
|
+
|
|
90
|
+
# stop on warning
|
|
91
|
+
#CFLAGS="$CFLAGS -Werror"
|
|
92
|
+
|
|
93
|
+
# debug
|
|
94
|
+
CFLAGS="$CFLAGS -g"
|
|
95
|
+
|
|
96
|
+
if [ ".$CPP" = "." ]; then
|
|
97
|
+
CPP="$CC -E"
|
|
98
|
+
fi
|
data/vendor/nginx/auto/cc/conf
CHANGED
data/vendor/nginx/auto/cc/gcc
CHANGED
|
@@ -149,15 +149,13 @@ CFLAGS="$CFLAGS ${NGX_GCC_OPT:--O} -W"
|
|
|
149
149
|
CFLAGS="$CFLAGS -Wall -Wpointer-arith"
|
|
150
150
|
#CFLAGS="$CFLAGS -Wconversion"
|
|
151
151
|
#CFLAGS="$CFLAGS -Winline"
|
|
152
|
+
#CFLAGS="$CFLAGS -Wmissing-prototypes"
|
|
152
153
|
|
|
153
154
|
|
|
154
155
|
case "$NGX_GCC_VER" in
|
|
155
156
|
3.* | 4.* )
|
|
156
157
|
# we have a lot of the unused function arguments
|
|
157
158
|
CFLAGS="$CFLAGS -Wno-unused-parameter"
|
|
158
|
-
CFLAGS="$CFLAGS -Wunused-function"
|
|
159
|
-
CFLAGS="$CFLAGS -Wunused-variable"
|
|
160
|
-
CFLAGS="$CFLAGS -Wunused-value"
|
|
161
159
|
# 4.2.1 shows the warning in wrong places
|
|
162
160
|
#CFLAGS="$CFLAGS -Wunreachable-code"
|
|
163
161
|
;;
|
data/vendor/nginx/auto/cc/name
CHANGED
|
@@ -32,14 +32,14 @@ if [ "$CC" = cl ]; then
|
|
|
32
32
|
NGX_CC_NAME=msvc10
|
|
33
33
|
echo " + using Microsoft Visual C++ 10 compiler"
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
elif `$NGX_WINE $CC -v 2>&1 \
|
|
36
36
|
| grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14' \
|
|
37
37
|
>/dev/null 2>&1`; then
|
|
38
38
|
|
|
39
39
|
NGX_CC_NAME=msvc8
|
|
40
40
|
echo " + using Microsoft Visual C++ 8 compiler"
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
elif `$NGX_WINE $CC -v 2>&1 \
|
|
43
43
|
| grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13' \
|
|
44
44
|
>/dev/null 2>&1`; then
|
|
45
45
|
|
|
@@ -50,52 +50,40 @@ if [ "$CC" = cl ]; then
|
|
|
50
50
|
NGX_CC_NAME=msvc
|
|
51
51
|
echo " + using Microsoft Visual C++ compiler"
|
|
52
52
|
fi
|
|
53
|
-
fi
|
|
54
|
-
fi
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
if [ "$CC" = wcl386 ]; then
|
|
54
|
+
elif [ "$CC" = wcl386 ]; then
|
|
58
55
|
NGX_CC_NAME=owc
|
|
59
56
|
echo " + using Open Watcom C compiler"
|
|
60
57
|
|
|
61
|
-
|
|
62
|
-
if [ "$CC" = bcc32 ]; then
|
|
58
|
+
elif [ "$CC" = bcc32 ]; then
|
|
63
59
|
NGX_CC_NAME=bcc
|
|
64
60
|
echo " + using Borland C++ compiler"
|
|
65
61
|
|
|
66
|
-
|
|
67
|
-
if `$CC -V 2>&1 | grep '^Intel(R) C' >/dev/null 2>&1`; then
|
|
62
|
+
elif `$CC -V 2>&1 | grep '^Intel(R) C' >/dev/null 2>&1`; then
|
|
68
63
|
NGX_CC_NAME=icc
|
|
69
64
|
echo " + using Intel C++ compiler"
|
|
70
65
|
|
|
71
|
-
|
|
72
|
-
if `$CC -v 2>&1 | grep 'gcc version' >/dev/null 2>&1`; then
|
|
66
|
+
elif `$CC -v 2>&1 | grep 'gcc version' >/dev/null 2>&1`; then
|
|
73
67
|
NGX_CC_NAME=gcc
|
|
74
68
|
echo " + using GNU C compiler"
|
|
75
69
|
|
|
76
|
-
|
|
77
|
-
|
|
70
|
+
elif `$CC -v 2>&1 | grep 'clang version' >/dev/null 2>&1`; then
|
|
71
|
+
NGX_CC_NAME=clang
|
|
72
|
+
echo " + using Clang C compiler"
|
|
73
|
+
|
|
74
|
+
elif `$CC -V 2>&1 | grep 'Sun C' >/dev/null 2>&1`; then
|
|
78
75
|
NGX_CC_NAME=sunc
|
|
79
76
|
echo " + using Sun C compiler"
|
|
80
77
|
|
|
81
|
-
|
|
82
|
-
if `$CC -V 2>&1 | grep '^Compaq C' >/dev/null 2>&1`; then
|
|
78
|
+
elif `$CC -V 2>&1 | grep '^Compaq C' >/dev/null 2>&1`; then
|
|
83
79
|
NGX_CC_NAME=ccc
|
|
84
80
|
echo " + using Compaq C compiler"
|
|
85
81
|
|
|
86
|
-
|
|
87
|
-
if `$CC -V 2>&1 | grep '^aCC: ' >/dev/null 2>&1`; then
|
|
82
|
+
elif `$CC -V 2>&1 | grep '^aCC: ' >/dev/null 2>&1`; then
|
|
88
83
|
NGX_CC_NAME=acc
|
|
89
84
|
echo " + using HP aC++ compiler"
|
|
90
85
|
|
|
91
86
|
else
|
|
92
87
|
NGX_CC_NAME=unknown
|
|
93
88
|
|
|
94
|
-
fi
|
|
95
|
-
fi # ccc
|
|
96
|
-
fi # sunc
|
|
97
|
-
fi # icc
|
|
98
|
-
fi # gcc
|
|
99
|
-
fi # bcc
|
|
100
|
-
fi # owc
|
|
101
|
-
fi # msvc
|
|
89
|
+
fi
|
data/vendor/nginx/auto/install
CHANGED
|
@@ -12,7 +12,7 @@ $NGX_OBJS/src/http/modules/perl/blib/arch/auto/nginx/nginx.so: \
|
|
|
12
12
|
$NGX_OBJS/src/http/modules/perl/Makefile
|
|
13
13
|
cp -p src/http/modules/perl/nginx.* $NGX_OBJS/src/http/modules/perl/
|
|
14
14
|
|
|
15
|
-
cd $NGX_OBJS/src/http/modules/perl &&
|
|
15
|
+
cd $NGX_OBJS/src/http/modules/perl && \${MAKE}
|
|
16
16
|
|
|
17
17
|
rm -rf $NGX_OBJS/install_perl
|
|
18
18
|
|
data/vendor/nginx/configure
CHANGED
|
@@ -282,24 +282,16 @@ ngx_conf_handler(ngx_conf_t *cf, ngx_int_t last)
|
|
|
282
282
|
{
|
|
283
283
|
char *rv;
|
|
284
284
|
void *conf, **confp;
|
|
285
|
-
ngx_uint_t i,
|
|
285
|
+
ngx_uint_t i, found;
|
|
286
286
|
ngx_str_t *name;
|
|
287
287
|
ngx_command_t *cmd;
|
|
288
288
|
|
|
289
289
|
name = cf->args->elts;
|
|
290
290
|
|
|
291
|
-
|
|
291
|
+
found = 0;
|
|
292
292
|
|
|
293
293
|
for (i = 0; ngx_modules[i]; i++) {
|
|
294
294
|
|
|
295
|
-
/* look up the directive in the appropriate modules */
|
|
296
|
-
|
|
297
|
-
if (ngx_modules[i]->type != NGX_CONF_MODULE
|
|
298
|
-
&& ngx_modules[i]->type != cf->module_type)
|
|
299
|
-
{
|
|
300
|
-
continue;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
295
|
cmd = ngx_modules[i]->commands;
|
|
304
296
|
if (cmd == NULL) {
|
|
305
297
|
continue;
|
|
@@ -315,16 +307,18 @@ ngx_conf_handler(ngx_conf_t *cf, ngx_int_t last)
|
|
|
315
307
|
continue;
|
|
316
308
|
}
|
|
317
309
|
|
|
310
|
+
found = 1;
|
|
311
|
+
|
|
312
|
+
if (ngx_modules[i]->type != NGX_CONF_MODULE
|
|
313
|
+
&& ngx_modules[i]->type != cf->module_type)
|
|
314
|
+
{
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
318
317
|
|
|
319
318
|
/* is the directive's location right ? */
|
|
320
319
|
|
|
321
320
|
if (!(cmd->type & cf->cmd_type)) {
|
|
322
|
-
|
|
323
|
-
multi = 1;
|
|
324
|
-
continue;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
goto not_allowed;
|
|
321
|
+
continue;
|
|
328
322
|
}
|
|
329
323
|
|
|
330
324
|
if (!(cmd->type & NGX_CONF_BLOCK) && last != NGX_OK) {
|
|
@@ -408,17 +402,16 @@ ngx_conf_handler(ngx_conf_t *cf, ngx_int_t last)
|
|
|
408
402
|
}
|
|
409
403
|
}
|
|
410
404
|
|
|
411
|
-
if (
|
|
405
|
+
if (found) {
|
|
412
406
|
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
|
413
|
-
"
|
|
407
|
+
"\"%s\" directive is not allowed here", name->data);
|
|
414
408
|
|
|
415
409
|
return NGX_ERROR;
|
|
416
410
|
}
|
|
417
411
|
|
|
418
|
-
not_allowed:
|
|
419
|
-
|
|
420
412
|
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
|
421
|
-
"\"%s\"
|
|
413
|
+
"unknown directive \"%s\"", name->data);
|
|
414
|
+
|
|
422
415
|
return NGX_ERROR;
|
|
423
416
|
|
|
424
417
|
invalid:
|
|
@@ -1448,12 +1441,16 @@ ngx_conf_set_bitmask_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|
|
1448
1441
|
}
|
|
1449
1442
|
|
|
1450
1443
|
|
|
1444
|
+
#if 0
|
|
1445
|
+
|
|
1451
1446
|
char *
|
|
1452
1447
|
ngx_conf_unsupported(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|
1453
1448
|
{
|
|
1454
1449
|
return "unsupported on this platform";
|
|
1455
1450
|
}
|
|
1456
1451
|
|
|
1452
|
+
#endif
|
|
1453
|
+
|
|
1457
1454
|
|
|
1458
1455
|
char *
|
|
1459
1456
|
ngx_conf_deprecated(ngx_conf_t *cf, void *post, void *data)
|
|
@@ -44,7 +44,7 @@ ngx_shmtx_create(ngx_shmtx_t *mtx, ngx_shmtx_sh_t *addr, u_char *name)
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
void
|
|
47
|
-
|
|
47
|
+
ngx_shmtx_destroy(ngx_shmtx_t *mtx)
|
|
48
48
|
{
|
|
49
49
|
#if (NGX_HAVE_POSIX_SEM)
|
|
50
50
|
|
|
@@ -208,7 +208,7 @@ ngx_shmtx_create(ngx_shmtx_t *mtx, ngx_shmtx_sh_t *addr, u_char *name)
|
|
|
208
208
|
return NGX_OK;
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
-
|
|
211
|
+
ngx_shmtx_destroy(mtx);
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
mtx->fd = ngx_open_file(name, NGX_FILE_RDWR, NGX_FILE_CREATE_OR_OPEN,
|
|
@@ -232,7 +232,7 @@ ngx_shmtx_create(ngx_shmtx_t *mtx, ngx_shmtx_sh_t *addr, u_char *name)
|
|
|
232
232
|
|
|
233
233
|
|
|
234
234
|
void
|
|
235
|
-
|
|
235
|
+
ngx_shmtx_destroy(ngx_shmtx_t *mtx)
|
|
236
236
|
{
|
|
237
237
|
if (ngx_close_file(mtx->fd) == NGX_FILE_ERROR) {
|
|
238
238
|
ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, ngx_errno,
|
|
@@ -39,7 +39,7 @@ typedef struct {
|
|
|
39
39
|
|
|
40
40
|
ngx_int_t ngx_shmtx_create(ngx_shmtx_t *mtx, ngx_shmtx_sh_t *addr,
|
|
41
41
|
u_char *name);
|
|
42
|
-
void
|
|
42
|
+
void ngx_shmtx_destroy(ngx_shmtx_t *mtx);
|
|
43
43
|
ngx_uint_t ngx_shmtx_trylock(ngx_shmtx_t *mtx);
|
|
44
44
|
void ngx_shmtx_lock(ngx_shmtx_t *mtx);
|
|
45
45
|
void ngx_shmtx_unlock(ngx_shmtx_t *mtx);
|
|
@@ -45,9 +45,7 @@
|
|
|
45
45
|
|
|
46
46
|
#define ngx_slab_junk(p, size) ngx_memset(p, 0xA5, size)
|
|
47
47
|
|
|
48
|
-
#
|
|
49
|
-
|
|
50
|
-
#if (NGX_HAVE_DEBUG_MALLOC)
|
|
48
|
+
#elif (NGX_HAVE_DEBUG_MALLOC)
|
|
51
49
|
|
|
52
50
|
#define ngx_slab_junk(p, size) \
|
|
53
51
|
if (ngx_debug_malloc) ngx_memset(p, 0xA5, size)
|
|
@@ -58,8 +56,6 @@
|
|
|
58
56
|
|
|
59
57
|
#endif
|
|
60
58
|
|
|
61
|
-
#endif
|
|
62
|
-
|
|
63
59
|
static ngx_slab_page_t *ngx_slab_alloc_pages(ngx_slab_pool_t *pool,
|
|
64
60
|
ngx_uint_t pages);
|
|
65
61
|
static void ngx_slab_free_pages(ngx_slab_pool_t *pool, ngx_slab_page_t *page,
|
|
@@ -44,16 +44,25 @@ struct epoll_event {
|
|
|
44
44
|
epoll_data_t data;
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
+
|
|
48
|
+
int epoll_create(int size);
|
|
49
|
+
|
|
47
50
|
int epoll_create(int size)
|
|
48
51
|
{
|
|
49
52
|
return -1;
|
|
50
53
|
}
|
|
51
54
|
|
|
55
|
+
|
|
56
|
+
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
|
|
57
|
+
|
|
52
58
|
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
|
|
53
59
|
{
|
|
54
60
|
return -1;
|
|
55
61
|
}
|
|
56
62
|
|
|
63
|
+
|
|
64
|
+
int epoll_wait(int epfd, struct epoll_event *events, int nevents, int timeout);
|
|
65
|
+
|
|
57
66
|
int epoll_wait(int epfd, struct epoll_event *events, int nevents, int timeout)
|
|
58
67
|
{
|
|
59
68
|
return -1;
|
|
@@ -76,11 +85,6 @@ struct io_event {
|
|
|
76
85
|
};
|
|
77
86
|
|
|
78
87
|
|
|
79
|
-
int eventfd(u_int initval)
|
|
80
|
-
{
|
|
81
|
-
return -1;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
88
|
#endif
|
|
85
89
|
#endif
|
|
86
90
|
|
|
@@ -15,6 +15,12 @@
|
|
|
15
15
|
#define ushort_t u_short
|
|
16
16
|
#define uint_t u_int
|
|
17
17
|
|
|
18
|
+
#ifndef CLOCK_REALTIME
|
|
19
|
+
#define CLOCK_REALTIME 0
|
|
20
|
+
typedef int clockid_t;
|
|
21
|
+
typedef void * timer_t;
|
|
22
|
+
#endif
|
|
23
|
+
|
|
18
24
|
/* Solaris declarations */
|
|
19
25
|
|
|
20
26
|
#define PORT_SOURCE_AIO 1
|
|
@@ -24,7 +30,9 @@
|
|
|
24
30
|
#define PORT_SOURCE_ALERT 5
|
|
25
31
|
#define PORT_SOURCE_MQ 6
|
|
26
32
|
|
|
33
|
+
#ifndef ETIME
|
|
27
34
|
#define ETIME 64
|
|
35
|
+
#endif
|
|
28
36
|
|
|
29
37
|
#define SIGEV_PORT 4
|
|
30
38
|
|
|
@@ -50,39 +58,62 @@ typedef struct itimerspec { /* definition per POSIX.4 */
|
|
|
50
58
|
|
|
51
59
|
#endif
|
|
52
60
|
|
|
61
|
+
int port_create(void);
|
|
62
|
+
|
|
53
63
|
int port_create(void)
|
|
54
64
|
{
|
|
55
65
|
return -1;
|
|
56
66
|
}
|
|
57
67
|
|
|
68
|
+
|
|
69
|
+
int port_associate(int port, int source, uintptr_t object, int events,
|
|
70
|
+
void *user);
|
|
71
|
+
|
|
58
72
|
int port_associate(int port, int source, uintptr_t object, int events,
|
|
59
73
|
void *user)
|
|
60
74
|
{
|
|
61
75
|
return -1;
|
|
62
76
|
}
|
|
63
77
|
|
|
78
|
+
|
|
79
|
+
int port_dissociate(int port, int source, uintptr_t object);
|
|
80
|
+
|
|
64
81
|
int port_dissociate(int port, int source, uintptr_t object)
|
|
65
82
|
{
|
|
66
83
|
return -1;
|
|
67
84
|
}
|
|
68
85
|
|
|
86
|
+
|
|
87
|
+
int port_getn(int port, port_event_t list[], uint_t max, uint_t *nget,
|
|
88
|
+
struct timespec *timeout);
|
|
89
|
+
|
|
69
90
|
int port_getn(int port, port_event_t list[], uint_t max, uint_t *nget,
|
|
70
91
|
struct timespec *timeout)
|
|
71
92
|
{
|
|
72
93
|
return -1;
|
|
73
94
|
}
|
|
74
95
|
|
|
96
|
+
|
|
97
|
+
int timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid);
|
|
98
|
+
|
|
75
99
|
int timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
|
|
76
100
|
{
|
|
77
101
|
return -1;
|
|
78
102
|
}
|
|
79
103
|
|
|
104
|
+
|
|
105
|
+
int timer_settime(timer_t timerid, int flags, const struct itimerspec *value,
|
|
106
|
+
struct itimerspec *ovalue);
|
|
107
|
+
|
|
80
108
|
int timer_settime(timer_t timerid, int flags, const struct itimerspec *value,
|
|
81
109
|
struct itimerspec *ovalue)
|
|
82
110
|
{
|
|
83
111
|
return -1;
|
|
84
112
|
}
|
|
85
113
|
|
|
114
|
+
|
|
115
|
+
int timer_delete(timer_t timerid);
|
|
116
|
+
|
|
86
117
|
int timer_delete(timer_t timerid)
|
|
87
118
|
{
|
|
88
119
|
return -1;
|
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
|
|
13
13
|
#if (NGX_TEST_BUILD_RTSIG)
|
|
14
14
|
|
|
15
|
+
#if (NGX_DARWIN)
|
|
16
|
+
|
|
17
|
+
#define SIGRTMIN 33
|
|
18
|
+
#define si_fd __pad[0]
|
|
19
|
+
|
|
20
|
+
#else
|
|
21
|
+
|
|
15
22
|
#ifdef SIGRTMIN
|
|
16
23
|
#define si_fd _reason.__spare__.__spare2__[0]
|
|
17
24
|
#else
|
|
@@ -19,10 +26,15 @@
|
|
|
19
26
|
#define si_fd __spare__[0]
|
|
20
27
|
#endif
|
|
21
28
|
|
|
29
|
+
#endif
|
|
30
|
+
|
|
22
31
|
#define F_SETSIG 10
|
|
23
32
|
#define KERN_RTSIGNR 30
|
|
24
33
|
#define KERN_RTSIGMAX 31
|
|
25
34
|
|
|
35
|
+
int sigtimedwait(const sigset_t *set, siginfo_t *info,
|
|
36
|
+
const struct timespec *timeout);
|
|
37
|
+
|
|
26
38
|
int sigtimedwait(const sigset_t *set, siginfo_t *info,
|
|
27
39
|
const struct timespec *timeout)
|
|
28
40
|
{
|
|
@@ -567,7 +567,7 @@ ngx_event_module_init(ngx_cycle_t *cycle)
|
|
|
567
567
|
|
|
568
568
|
#if !(NGX_WIN32)
|
|
569
569
|
|
|
570
|
-
void
|
|
570
|
+
static void
|
|
571
571
|
ngx_timer_signal_handler(int signo)
|
|
572
572
|
{
|
|
573
573
|
ngx_event_timer_alarm = 1;
|
|
@@ -1062,50 +1062,91 @@ ngx_event_debug_connection(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|
|
1062
1062
|
#if (NGX_DEBUG)
|
|
1063
1063
|
ngx_event_conf_t *ecf = conf;
|
|
1064
1064
|
|
|
1065
|
-
ngx_int_t
|
|
1066
|
-
ngx_str_t
|
|
1067
|
-
|
|
1068
|
-
ngx_cidr_t
|
|
1065
|
+
ngx_int_t rc;
|
|
1066
|
+
ngx_str_t *value;
|
|
1067
|
+
ngx_url_t u;
|
|
1068
|
+
ngx_cidr_t c, *cidr;
|
|
1069
|
+
ngx_uint_t i;
|
|
1070
|
+
struct sockaddr_in *sin;
|
|
1071
|
+
#if (NGX_HAVE_INET6)
|
|
1072
|
+
struct sockaddr_in6 *sin6;
|
|
1073
|
+
#endif
|
|
1069
1074
|
|
|
1070
1075
|
value = cf->args->elts;
|
|
1071
1076
|
|
|
1072
|
-
cidr = ngx_array_push(&ecf->debug_connection);
|
|
1073
|
-
if (cidr == NULL) {
|
|
1074
|
-
return NGX_CONF_ERROR;
|
|
1075
|
-
}
|
|
1076
|
-
|
|
1077
1077
|
#if (NGX_HAVE_UNIX_DOMAIN)
|
|
1078
1078
|
|
|
1079
1079
|
if (ngx_strcmp(value[1].data, "unix:") == 0) {
|
|
1080
|
-
|
|
1081
|
-
|
|
1080
|
+
cidr = ngx_array_push(&ecf->debug_connection);
|
|
1081
|
+
if (cidr == NULL) {
|
|
1082
|
+
return NGX_CONF_ERROR;
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1085
|
+
cidr->family = AF_UNIX;
|
|
1086
|
+
return NGX_CONF_OK;
|
|
1082
1087
|
}
|
|
1083
1088
|
|
|
1084
1089
|
#endif
|
|
1085
1090
|
|
|
1086
|
-
rc = ngx_ptocidr(&value[1],
|
|
1091
|
+
rc = ngx_ptocidr(&value[1], &c);
|
|
1087
1092
|
|
|
1088
|
-
if (rc
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
+
if (rc != NGX_ERROR) {
|
|
1094
|
+
if (rc == NGX_DONE) {
|
|
1095
|
+
ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
|
|
1096
|
+
"low address bits of %V are meaningless",
|
|
1097
|
+
&value[1]);
|
|
1098
|
+
}
|
|
1099
|
+
|
|
1100
|
+
cidr = ngx_array_push(&ecf->debug_connection);
|
|
1101
|
+
if (cidr == NULL) {
|
|
1102
|
+
return NGX_CONF_ERROR;
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
*cidr = c;
|
|
1093
1106
|
|
|
1094
|
-
if (rc == NGX_OK) {
|
|
1095
1107
|
return NGX_CONF_OK;
|
|
1096
1108
|
}
|
|
1097
1109
|
|
|
1098
|
-
|
|
1110
|
+
ngx_memzero(&u, sizeof(ngx_url_t));
|
|
1111
|
+
u.host = value[1];
|
|
1112
|
+
|
|
1113
|
+
if (ngx_inet_resolve_host(cf->pool, &u) != NGX_OK) {
|
|
1114
|
+
if (u.err) {
|
|
1115
|
+
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
|
1116
|
+
"%s in debug_connection \"%V\"",
|
|
1117
|
+
u.err, &u.host);
|
|
1118
|
+
}
|
|
1099
1119
|
|
|
1100
|
-
if (h == NULL || h->h_addr_list[0] == NULL) {
|
|
1101
|
-
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
|
1102
|
-
"host \"%s\" not found", value[1].data);
|
|
1103
1120
|
return NGX_CONF_ERROR;
|
|
1104
1121
|
}
|
|
1105
1122
|
|
|
1106
|
-
cidr
|
|
1107
|
-
cidr
|
|
1108
|
-
|
|
1123
|
+
cidr = ngx_array_push_n(&ecf->debug_connection, u.naddrs);
|
|
1124
|
+
if (cidr == NULL) {
|
|
1125
|
+
return NGX_CONF_ERROR;
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
ngx_memzero(cidr, u.naddrs * sizeof(ngx_cidr_t));
|
|
1129
|
+
|
|
1130
|
+
for (i = 0; i < u.naddrs; i++) {
|
|
1131
|
+
cidr[i].family = u.addrs[i].sockaddr->sa_family;
|
|
1132
|
+
|
|
1133
|
+
switch (cidr[i].family) {
|
|
1134
|
+
|
|
1135
|
+
#if (NGX_HAVE_INET6)
|
|
1136
|
+
case AF_INET6:
|
|
1137
|
+
sin6 = (struct sockaddr_in6 *) u.addrs[i].sockaddr;
|
|
1138
|
+
cidr[i].u.in6.addr = sin6->sin6_addr;
|
|
1139
|
+
ngx_memset(cidr[i].u.in6.mask.s6_addr, 0xff, 16);
|
|
1140
|
+
break;
|
|
1141
|
+
#endif
|
|
1142
|
+
|
|
1143
|
+
default: /* AF_INET */
|
|
1144
|
+
sin = (struct sockaddr_in *) u.addrs[i].sockaddr;
|
|
1145
|
+
cidr[i].u.in.addr = sin->sin_addr.s_addr;
|
|
1146
|
+
cidr[i].u.in.mask = 0xffffffff;
|
|
1147
|
+
break;
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1109
1150
|
|
|
1110
1151
|
#else
|
|
1111
1152
|
|
|
@@ -238,7 +238,7 @@ ngx_http_limit_conn_handler(ngx_http_request_t *r)
|
|
|
238
238
|
}
|
|
239
239
|
|
|
240
240
|
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
|
|
241
|
-
"limit
|
|
241
|
+
"limit conn: %08XD %d", node->key, lc->conn);
|
|
242
242
|
|
|
243
243
|
ngx_shmtx_unlock(&shpool->mutex);
|
|
244
244
|
|
|
@@ -358,7 +358,7 @@ ngx_http_limit_conn_cleanup(void *data)
|
|
|
358
358
|
ngx_shmtx_lock(&shpool->mutex);
|
|
359
359
|
|
|
360
360
|
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, lccln->shm_zone->shm.log, 0,
|
|
361
|
-
"limit
|
|
361
|
+
"limit conn cleanup: %08XD %d", node->key, lc->conn);
|
|
362
362
|
|
|
363
363
|
lc->conn--;
|
|
364
364
|
|
|
@@ -110,7 +110,6 @@ ngx_http_map_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v,
|
|
|
110
110
|
{
|
|
111
111
|
ngx_http_map_ctx_t *map = (ngx_http_map_ctx_t *) data;
|
|
112
112
|
|
|
113
|
-
size_t len;
|
|
114
113
|
ngx_str_t val;
|
|
115
114
|
ngx_http_variable_value_t *value;
|
|
116
115
|
|
|
@@ -121,10 +120,8 @@ ngx_http_map_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v,
|
|
|
121
120
|
return NGX_ERROR;
|
|
122
121
|
}
|
|
123
122
|
|
|
124
|
-
len
|
|
125
|
-
|
|
126
|
-
if (len && map->hostnames && val.data[len - 1] == '.') {
|
|
127
|
-
len--;
|
|
123
|
+
if (map->hostnames && val.len > 0 && val.data[val.len - 1] == '.') {
|
|
124
|
+
val.len--;
|
|
128
125
|
}
|
|
129
126
|
|
|
130
127
|
value = ngx_http_map_find(r, &map->map, &val);
|
|
@@ -281,6 +278,8 @@ ngx_http_map_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|
|
281
278
|
map->default_value = ctx.default_value ? ctx.default_value:
|
|
282
279
|
&ngx_http_variable_null_value;
|
|
283
280
|
|
|
281
|
+
map->hostnames = ctx.hostnames;
|
|
282
|
+
|
|
284
283
|
hash.key = ngx_hash_key_lc;
|
|
285
284
|
hash.max_size = mcf->hash_max_size;
|
|
286
285
|
hash.bucket_size = mcf->hash_bucket_size;
|
|
@@ -1613,6 +1613,11 @@ ngx_http_cmp_conf_addrs(const void *one, const void *two)
|
|
|
1613
1613
|
return 1;
|
|
1614
1614
|
}
|
|
1615
1615
|
|
|
1616
|
+
if (second->opt.wildcard) {
|
|
1617
|
+
/* a wildcard address must be the last resort, shift it to the end */
|
|
1618
|
+
return -1;
|
|
1619
|
+
}
|
|
1620
|
+
|
|
1616
1621
|
if (first->opt.bind && !second->opt.bind) {
|
|
1617
1622
|
/* shift explicit bind()ed addresses to the start */
|
|
1618
1623
|
return -1;
|
|
@@ -222,7 +222,7 @@ static ngx_command_t ngx_http_core_commands[] = {
|
|
|
222
222
|
NULL },
|
|
223
223
|
|
|
224
224
|
{ ngx_string("server"),
|
|
225
|
-
NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|
|
|
225
|
+
NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
|
|
226
226
|
ngx_http_core_server,
|
|
227
227
|
0,
|
|
228
228
|
0,
|
|
@@ -2588,6 +2588,7 @@ ngx_http_named_location(ngx_http_request_t *r, ngx_str_t *name)
|
|
|
2588
2588
|
|
|
2589
2589
|
r->internal = 1;
|
|
2590
2590
|
r->content_handler = NULL;
|
|
2591
|
+
r->uri_changed = 0;
|
|
2591
2592
|
r->loc_conf = (*clcfp)->loc_conf;
|
|
2592
2593
|
|
|
2593
2594
|
/* clear the modules contexts */
|
|
@@ -747,6 +747,7 @@ ngx_http_process_request_line(ngx_event_t *rev)
|
|
|
747
747
|
|
|
748
748
|
r->request_line.len = r->request_end - r->request_start;
|
|
749
749
|
r->request_line.data = r->request_start;
|
|
750
|
+
r->request_length = r->header_in->pos - r->request_start;
|
|
750
751
|
|
|
751
752
|
|
|
752
753
|
if (r->args_start) {
|
|
@@ -1056,6 +1057,8 @@ ngx_http_process_request_headers(ngx_event_t *rev)
|
|
|
1056
1057
|
|
|
1057
1058
|
if (rc == NGX_OK) {
|
|
1058
1059
|
|
|
1060
|
+
r->request_length += r->header_in->pos - r->header_name_start;
|
|
1061
|
+
|
|
1059
1062
|
if (r->invalid_header && cscf->ignore_invalid_headers) {
|
|
1060
1063
|
|
|
1061
1064
|
/* there was error while a header line parsing */
|
|
@@ -1119,7 +1122,7 @@ ngx_http_process_request_headers(ngx_event_t *rev)
|
|
|
1119
1122
|
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
|
|
1120
1123
|
"http header done");
|
|
1121
1124
|
|
|
1122
|
-
r->request_length += r->header_in->pos - r->
|
|
1125
|
+
r->request_length += r->header_in->pos - r->header_name_start;
|
|
1123
1126
|
|
|
1124
1127
|
r->http_state = NGX_HTTP_PROCESS_REQUEST_STATE;
|
|
1125
1128
|
|
|
@@ -1226,8 +1229,6 @@ ngx_http_alloc_large_header_buffer(ngx_http_request_t *r,
|
|
|
1226
1229
|
|
|
1227
1230
|
/* the client fills up the buffer with "\r\n" */
|
|
1228
1231
|
|
|
1229
|
-
r->request_length += r->header_in->end - r->header_in->start;
|
|
1230
|
-
|
|
1231
1232
|
r->header_in->pos = r->header_in->start;
|
|
1232
1233
|
r->header_in->last = r->header_in->start;
|
|
1233
1234
|
|
|
@@ -1287,8 +1288,6 @@ ngx_http_alloc_large_header_buffer(ngx_http_request_t *r,
|
|
|
1287
1288
|
* to relocate the parser header pointers
|
|
1288
1289
|
*/
|
|
1289
1290
|
|
|
1290
|
-
r->request_length += r->header_in->end - r->header_in->start;
|
|
1291
|
-
|
|
1292
1291
|
r->header_in = b;
|
|
1293
1292
|
|
|
1294
1293
|
return NGX_OK;
|
|
@@ -1297,8 +1296,6 @@ ngx_http_alloc_large_header_buffer(ngx_http_request_t *r,
|
|
|
1297
1296
|
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
|
|
1298
1297
|
"http large header copy: %d", r->header_in->pos - old);
|
|
1299
1298
|
|
|
1300
|
-
r->request_length += old - r->header_in->start;
|
|
1301
|
-
|
|
1302
1299
|
new = b->start;
|
|
1303
1300
|
|
|
1304
1301
|
ngx_memcpy(new, old, r->header_in->pos - old);
|
|
@@ -1826,7 +1823,7 @@ ngx_http_find_virtual_server(ngx_http_request_t *r, u_char *host, size_t len)
|
|
|
1826
1823
|
|
|
1827
1824
|
#endif
|
|
1828
1825
|
|
|
1829
|
-
return
|
|
1826
|
+
return NGX_DECLINED;
|
|
1830
1827
|
|
|
1831
1828
|
found:
|
|
1832
1829
|
|
|
@@ -4422,18 +4422,18 @@ ngx_http_upstream_add(ngx_conf_t *cf, ngx_url_t *u, ngx_uint_t flags)
|
|
|
4422
4422
|
uscf->servers = ngx_array_create(cf->pool, 1,
|
|
4423
4423
|
sizeof(ngx_http_upstream_server_t));
|
|
4424
4424
|
if (uscf->servers == NULL) {
|
|
4425
|
-
return
|
|
4425
|
+
return NULL;
|
|
4426
4426
|
}
|
|
4427
4427
|
|
|
4428
4428
|
us = ngx_array_push(uscf->servers);
|
|
4429
4429
|
if (us == NULL) {
|
|
4430
|
-
return
|
|
4430
|
+
return NULL;
|
|
4431
4431
|
}
|
|
4432
4432
|
|
|
4433
4433
|
ngx_memzero(us, sizeof(ngx_http_upstream_server_t));
|
|
4434
4434
|
|
|
4435
4435
|
us->addrs = u->addrs;
|
|
4436
|
-
us->naddrs =
|
|
4436
|
+
us->naddrs = 1;
|
|
4437
4437
|
}
|
|
4438
4438
|
|
|
4439
4439
|
uscfp = ngx_array_push(&umcf->upstreams);
|
|
@@ -4541,6 +4541,9 @@ ngx_http_upstream_hide_headers_hash(ngx_conf_t *cf,
|
|
|
4541
4541
|
if (conf->hide_headers == NGX_CONF_UNSET_PTR
|
|
4542
4542
|
&& conf->pass_headers == NGX_CONF_UNSET_PTR)
|
|
4543
4543
|
{
|
|
4544
|
+
conf->hide_headers = prev->hide_headers;
|
|
4545
|
+
conf->pass_headers = prev->pass_headers;
|
|
4546
|
+
|
|
4544
4547
|
conf->hide_headers_hash = prev->hide_headers_hash;
|
|
4545
4548
|
|
|
4546
4549
|
if (conf->hide_headers_hash.buckets
|
|
@@ -4552,9 +4555,6 @@ ngx_http_upstream_hide_headers_hash(ngx_conf_t *cf,
|
|
|
4552
4555
|
return NGX_OK;
|
|
4553
4556
|
}
|
|
4554
4557
|
|
|
4555
|
-
conf->hide_headers = prev->hide_headers;
|
|
4556
|
-
conf->pass_headers = prev->pass_headers;
|
|
4557
|
-
|
|
4558
4558
|
} else {
|
|
4559
4559
|
if (conf->hide_headers == NGX_CONF_UNSET_PTR) {
|
|
4560
4560
|
conf->hide_headers = prev->hide_headers;
|
|
@@ -413,9 +413,7 @@ ngx_trylock_fd(ngx_fd_t fd)
|
|
|
413
413
|
{
|
|
414
414
|
struct flock fl;
|
|
415
415
|
|
|
416
|
-
fl
|
|
417
|
-
fl.l_len = 0;
|
|
418
|
-
fl.l_pid = 0;
|
|
416
|
+
ngx_memzero(&fl, sizeof(struct flock));
|
|
419
417
|
fl.l_type = F_WRLCK;
|
|
420
418
|
fl.l_whence = SEEK_SET;
|
|
421
419
|
|
|
@@ -432,9 +430,7 @@ ngx_lock_fd(ngx_fd_t fd)
|
|
|
432
430
|
{
|
|
433
431
|
struct flock fl;
|
|
434
432
|
|
|
435
|
-
fl
|
|
436
|
-
fl.l_len = 0;
|
|
437
|
-
fl.l_pid = 0;
|
|
433
|
+
ngx_memzero(&fl, sizeof(struct flock));
|
|
438
434
|
fl.l_type = F_WRLCK;
|
|
439
435
|
fl.l_whence = SEEK_SET;
|
|
440
436
|
|
|
@@ -451,9 +447,7 @@ ngx_unlock_fd(ngx_fd_t fd)
|
|
|
451
447
|
{
|
|
452
448
|
struct flock fl;
|
|
453
449
|
|
|
454
|
-
fl
|
|
455
|
-
fl.l_len = 0;
|
|
456
|
-
fl.l_pid = 0;
|
|
450
|
+
ngx_memzero(&fl, sizeof(struct flock));
|
|
457
451
|
fl.l_type = F_UNLCK;
|
|
458
452
|
fl.l_whence = SEEK_SET;
|
|
459
453
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: nginxtra
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.3.4
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -13,7 +13,7 @@ date: 2012-08-08 00:00:00.000000000 Z
|
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: thor
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &10388680 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ~>
|
|
@@ -21,7 +21,7 @@ dependencies:
|
|
|
21
21
|
version: 0.15.0
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *10388680
|
|
25
25
|
description: This gem is intended to provide an easy to use configuration file that
|
|
26
26
|
will automatically be used to compile nginx and configure the configuration.
|
|
27
27
|
email: reasonnumber@gmail.com
|
|
@@ -62,6 +62,7 @@ files:
|
|
|
62
62
|
- vendor/nginx/auto/cc/acc
|
|
63
63
|
- vendor/nginx/auto/cc/bcc
|
|
64
64
|
- vendor/nginx/auto/cc/ccc
|
|
65
|
+
- vendor/nginx/auto/cc/clang
|
|
65
66
|
- vendor/nginx/auto/cc/conf
|
|
66
67
|
- vendor/nginx/auto/cc/gcc
|
|
67
68
|
- vendor/nginx/auto/cc/icc
|