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.
Files changed (42) hide show
  1. data/bin/nginxtra +1 -1
  2. data/bin/nginxtra_rails +1 -1
  3. data/lib/nginxtra/version.rb +1 -1
  4. data/vendor/nginx/CHANGES +25 -1
  5. data/vendor/nginx/CHANGES.ru +24 -0
  6. data/vendor/nginx/LICENSE +3 -2
  7. data/vendor/nginx/auto/cc/clang +98 -0
  8. data/vendor/nginx/auto/cc/conf +6 -0
  9. data/vendor/nginx/auto/cc/gcc +1 -3
  10. data/vendor/nginx/auto/cc/name +14 -26
  11. data/vendor/nginx/auto/install +1 -1
  12. data/vendor/nginx/auto/lib/libatomic/make +1 -1
  13. data/vendor/nginx/auto/lib/perl/make +1 -1
  14. data/vendor/nginx/configure +3 -0
  15. data/vendor/nginx/src/core/nginx.h +2 -2
  16. data/vendor/nginx/src/core/ngx_conf_file.c +18 -21
  17. data/vendor/nginx/src/core/ngx_conf_file.h +1 -1
  18. data/vendor/nginx/src/core/ngx_crypt.c +1 -0
  19. data/vendor/nginx/src/core/ngx_shmtx.c +3 -3
  20. data/vendor/nginx/src/core/ngx_shmtx.h +1 -1
  21. data/vendor/nginx/src/core/ngx_slab.c +1 -5
  22. data/vendor/nginx/src/event/modules/ngx_epoll_module.c +9 -5
  23. data/vendor/nginx/src/event/modules/ngx_eventport_module.c +31 -0
  24. data/vendor/nginx/src/event/modules/ngx_rtsig_module.c +12 -0
  25. data/vendor/nginx/src/event/ngx_event.c +67 -26
  26. data/vendor/nginx/src/http/modules/ngx_http_limit_conn_module.c +2 -2
  27. data/vendor/nginx/src/http/modules/ngx_http_log_module.c +1 -1
  28. data/vendor/nginx/src/http/modules/ngx_http_map_module.c +4 -5
  29. data/vendor/nginx/src/http/modules/ngx_http_upstream_least_conn_module.c +1 -1
  30. data/vendor/nginx/src/http/modules/perl/nginx.pm +1 -1
  31. data/vendor/nginx/src/http/ngx_http.c +5 -0
  32. data/vendor/nginx/src/http/ngx_http_core_module.c +2 -1
  33. data/vendor/nginx/src/http/ngx_http_parse_time.c +1 -0
  34. data/vendor/nginx/src/http/ngx_http_request.c +5 -8
  35. data/vendor/nginx/src/http/ngx_http_upstream.c +6 -6
  36. data/vendor/nginx/src/mail/ngx_mail_parse.c +3 -0
  37. data/vendor/nginx/src/misc/ngx_cpp_test_module.cpp +2 -0
  38. data/vendor/nginx/src/os/unix/ngx_atomic.h +2 -0
  39. data/vendor/nginx/src/os/unix/ngx_files.c +3 -9
  40. data/vendor/nginx/src/os/unix/ngx_posix_init.c +4 -0
  41. data/vendor/nginx/src/os/unix/ngx_solaris_sendfilev_chain.c +3 -0
  42. metadata +4 -3
data/bin/nginxtra CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "rubygems"
3
- gem "nginxtra", "= 1.2.2.4"
3
+ gem "nginxtra", "= 1.2.3.4"
4
4
  gem "thor", "~> 0.15.0"
5
5
  require "nginxtra"
6
6
  Nginxtra::CLI.start
data/bin/nginxtra_rails CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "rubygems"
3
- gem "nginxtra", "= 1.2.2.4"
3
+ gem "nginxtra", "= 1.2.3.4"
4
4
  gem "thor", "~> 0.15.0"
5
5
  require "nginxtra"
6
6
  Nginxtra::Rails::CLI.start
@@ -2,7 +2,7 @@ module Nginxtra
2
2
  class Version
3
3
  class << self
4
4
  def to_s
5
- "1.2.2.4"
5
+ "1.2.3.4"
6
6
  end
7
7
  end
8
8
  end
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 support IPv6 addresses and an
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.
@@ -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
@@ -56,6 +56,12 @@ else
56
56
  . auto/cc/gcc
57
57
  ;;
58
58
 
59
+ clang)
60
+ # Clang C compiler
61
+
62
+ . auto/cc/clang
63
+ ;;
64
+
59
65
  icc)
60
66
  # Intel C++ compiler 7.1, 8.0, 8.1
61
67
 
@@ -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
  ;;
@@ -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
- else if `$NGX_WINE $CC -v 2>&1 \
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
- else if `$NGX_WINE $CC -v 2>&1 \
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
- else
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
- else
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
- else
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
- else
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
- else
77
- if `$CC -V 2>&1 | grep 'Sun C' >/dev/null 2>&1`; then
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
- else
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
- else
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 # acc
95
- fi # ccc
96
- fi # sunc
97
- fi # icc
98
- fi # gcc
99
- fi # bcc
100
- fi # owc
101
- fi # msvc
89
+ fi
@@ -8,7 +8,7 @@ if [ $USE_PERL = YES ]; then
8
8
  cat << END >> $NGX_MAKEFILE
9
9
 
10
10
  install_perl_modules:
11
- cd $NGX_OBJS/src/http/modules/perl && make install
11
+ cd $NGX_OBJS/src/http/modules/perl && \${MAKE} install
12
12
  END
13
13
 
14
14
  NGX_INSTALL_PERL_MODULES=install_perl_modules
@@ -6,7 +6,7 @@
6
6
  cat << END >> $NGX_MAKEFILE
7
7
 
8
8
  $NGX_LIBATOMIC/src/libatomic_ops.a: $NGX_LIBATOMIC/Makefile
9
- cd $NGX_LIBATOMIC && make
9
+ cd $NGX_LIBATOMIC && \${MAKE}
10
10
 
11
11
  $NGX_LIBATOMIC/Makefile: $NGX_MAKEFILE
12
12
  cd $NGX_LIBATOMIC && ./configure
@@ -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 && make
15
+ cd $NGX_OBJS/src/http/modules/perl && \${MAKE}
16
16
 
17
17
  rm -rf $NGX_OBJS/install_perl
18
18
 
@@ -4,6 +4,9 @@
4
4
  # Copyright (C) Nginx, Inc.
5
5
 
6
6
 
7
+ LC_ALL=C
8
+ export LC_ALL
9
+
7
10
  . auto/options
8
11
  . auto/init
9
12
  . auto/sources
@@ -9,8 +9,8 @@
9
9
  #define _NGINX_H_INCLUDED_
10
10
 
11
11
 
12
- #define nginx_version 1002002
13
- #define NGINX_VERSION "1.2.2"
12
+ #define nginx_version 1002003
13
+ #define NGINX_VERSION "1.2.3"
14
14
  #define NGINX_VER "nginx/" NGINX_VERSION
15
15
 
16
16
  #define NGINX_VAR "NGINX"
@@ -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, multi;
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
- multi = 0;
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
- if (cmd->type & NGX_CONF_MULTI) {
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 (multi == 0) {
405
+ if (found) {
412
406
  ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
413
- "unknown directive \"%s\"", name->data);
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\" directive is not allowed here", name->data);
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)
@@ -45,7 +45,7 @@
45
45
  #define NGX_CONF_ANY 0x00000400
46
46
  #define NGX_CONF_1MORE 0x00000800
47
47
  #define NGX_CONF_2MORE 0x00001000
48
- #define NGX_CONF_MULTI 0x00002000
48
+ #define NGX_CONF_MULTI 0x00000000 /* compatibility */
49
49
 
50
50
  #define NGX_DIRECT_CONF 0x00010000
51
51
 
@@ -6,6 +6,7 @@
6
6
 
7
7
  #include <ngx_config.h>
8
8
  #include <ngx_core.h>
9
+ #include <ngx_crypt.h>
9
10
  #include <ngx_md5.h>
10
11
  #if (NGX_HAVE_SHA1)
11
12
  #include <ngx_sha1.h>
@@ -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
- ngx_shmtx_destory(ngx_shmtx_t *mtx)
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
- ngx_shmtx_destory(mtx);
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
- ngx_shmtx_destory(ngx_shmtx_t *mtx)
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 ngx_shmtx_destory(ngx_shmtx_t *mtx);
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
- #else
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 rc;
1066
- ngx_str_t *value;
1067
- struct hostent *h;
1068
- ngx_cidr_t *cidr;
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
- cidr->family = AF_UNIX;
1081
- return NGX_CONF_OK;
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], cidr);
1091
+ rc = ngx_ptocidr(&value[1], &c);
1087
1092
 
1088
- if (rc == NGX_DONE) {
1089
- ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
1090
- "low address bits of %V are meaningless", &value[1]);
1091
- return NGX_CONF_OK;
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
- h = gethostbyname((char *) value[1].data);
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->family = AF_INET;
1107
- cidr->u.in.mask = 0xffffffff;
1108
- cidr->u.in.addr = *(in_addr_t *)(h->h_addr_list[0]);
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 zone: %08XD %d", node->key, lc->conn);
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 zone cleanup: %08XD %d", node->key, lc->conn);
361
+ "limit conn cleanup: %08XD %d", node->key, lc->conn);
362
362
 
363
363
  lc->conn--;
364
364
 
@@ -218,7 +218,7 @@ static ngx_http_log_var_t ngx_http_log_vars[] = {
218
218
  };
219
219
 
220
220
 
221
- ngx_int_t
221
+ static ngx_int_t
222
222
  ngx_http_log_handler(ngx_http_request_t *r)
223
223
  {
224
224
  u_char *line, *p;
@@ -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 = val.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;
@@ -81,7 +81,7 @@ ngx_module_t ngx_http_upstream_least_conn_module = {
81
81
  };
82
82
 
83
83
 
84
- ngx_int_t
84
+ static ngx_int_t
85
85
  ngx_http_upstream_init_least_conn(ngx_conf_t *cf,
86
86
  ngx_http_upstream_srv_conf_t *us)
87
87
  {
@@ -50,7 +50,7 @@ our @EXPORT = qw(
50
50
  HTTP_INSUFFICIENT_STORAGE
51
51
  );
52
52
 
53
- our $VERSION = '1.2.2';
53
+ our $VERSION = '1.2.3';
54
54
 
55
55
  require XSLoader;
56
56
  XSLoader::load('nginx', $VERSION);
@@ -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|NGX_CONF_MULTI|NGX_CONF_NOARGS,
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 */
@@ -7,6 +7,7 @@
7
7
 
8
8
  #include <ngx_config.h>
9
9
  #include <ngx_core.h>
10
+ #include <ngx_http.h>
10
11
 
11
12
 
12
13
  static ngx_uint_t mday[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
@@ -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->header_in->start;
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 NGX_OK;
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 NGX_CONF_ERROR;
4425
+ return NULL;
4426
4426
  }
4427
4427
 
4428
4428
  us = ngx_array_push(uscf->servers);
4429
4429
  if (us == NULL) {
4430
- return NGX_CONF_ERROR;
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 = u->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;
@@ -9,6 +9,9 @@
9
9
  #include <ngx_core.h>
10
10
  #include <ngx_event.h>
11
11
  #include <ngx_mail.h>
12
+ #include <ngx_mail_pop3_module.h>
13
+ #include <ngx_mail_imap_module.h>
14
+ #include <ngx_mail_smtp_module.h>
12
15
 
13
16
 
14
17
  ngx_int_t
@@ -20,6 +20,8 @@ extern "C" {
20
20
  // #include <string>
21
21
 
22
22
 
23
+ void ngx_cpp_test_handler(void *data);
24
+
23
25
  void
24
26
  ngx_cpp_test_handler(void *data)
25
27
  {
@@ -48,7 +48,9 @@ typedef volatile ngx_atomic_uint_t ngx_atomic_t;
48
48
  #include <libkern/OSAtomic.h>
49
49
 
50
50
  /* "bool" conflicts with perl's CORE/handy.h */
51
+ #if 0
51
52
  #undef bool
53
+ #endif
52
54
 
53
55
 
54
56
  #define NGX_HAVE_ATOMIC_OPS 1
@@ -413,9 +413,7 @@ ngx_trylock_fd(ngx_fd_t fd)
413
413
  {
414
414
  struct flock fl;
415
415
 
416
- fl.l_start = 0;
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.l_start = 0;
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.l_start = 0;
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
 
@@ -98,6 +98,8 @@ ngx_os_status(ngx_log_t *log)
98
98
  }
99
99
 
100
100
 
101
+ #if 0
102
+
101
103
  ngx_int_t
102
104
  ngx_posix_post_conf_init(ngx_log_t *log)
103
105
  {
@@ -122,3 +124,5 @@ ngx_posix_post_conf_init(ngx_log_t *log)
122
124
 
123
125
  return NGX_OK;
124
126
  }
127
+
128
+ #endif
@@ -29,6 +29,9 @@ static ssize_t sendfilev(int fd, const struct sendfilevec *vec,
29
29
  return -1;
30
30
  }
31
31
 
32
+ ngx_chain_t *ngx_solaris_sendfilev_chain(ngx_connection_t *c, ngx_chain_t *in,
33
+ off_t limit);
34
+
32
35
  #endif
33
36
 
34
37
 
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.2.4
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: &14639360 !ruby/object:Gem::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: *14639360
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