nginxtra 1.2.2.4 → 1.2.3.4

Sign up to get free protection for your applications and to get access to all the features.
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