nginxtra 1.2.8.8 → 1.4.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) 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 +202 -63
  5. data/vendor/nginx/CHANGES.ru +208 -66
  6. data/vendor/nginx/auto/lib/md5/conf +3 -3
  7. data/vendor/nginx/auto/lib/perl/conf +3 -1
  8. data/vendor/nginx/auto/lib/perl/make +21 -16
  9. data/vendor/nginx/auto/lib/sha1/conf +1 -1
  10. data/vendor/nginx/auto/modules +25 -4
  11. data/vendor/nginx/auto/options +7 -1
  12. data/vendor/nginx/auto/sources +15 -1
  13. data/vendor/nginx/auto/unix +14 -0
  14. data/vendor/nginx/src/core/nginx.h +2 -2
  15. data/vendor/nginx/src/core/ngx_array.c +1 -7
  16. data/vendor/nginx/src/core/ngx_array.h +2 -2
  17. data/vendor/nginx/src/core/ngx_connection.c +13 -7
  18. data/vendor/nginx/src/core/ngx_connection.h +1 -2
  19. data/vendor/nginx/src/core/ngx_core.h +1 -2
  20. data/vendor/nginx/src/core/ngx_crypt.c +37 -0
  21. data/vendor/nginx/src/core/ngx_cycle.h +1 -1
  22. data/vendor/nginx/src/core/ngx_inet.c +219 -48
  23. data/vendor/nginx/src/core/ngx_inet.h +1 -1
  24. data/vendor/nginx/src/event/modules/ngx_devpoll_module.c +7 -1
  25. data/vendor/nginx/src/event/modules/ngx_eventport_module.c +1 -1
  26. data/vendor/nginx/src/event/ngx_event.c +5 -1
  27. data/vendor/nginx/src/event/ngx_event.h +1 -0
  28. data/vendor/nginx/src/event/ngx_event_connect.c +1 -1
  29. data/vendor/nginx/src/event/ngx_event_openssl.c +135 -9
  30. data/vendor/nginx/src/event/ngx_event_openssl.h +9 -0
  31. data/vendor/nginx/src/event/ngx_event_openssl_stapling.c +1749 -0
  32. data/vendor/nginx/src/http/modules/ngx_http_addition_filter_module.c +1 -0
  33. data/vendor/nginx/src/http/modules/ngx_http_chunked_filter_module.c +1 -0
  34. data/vendor/nginx/src/http/modules/ngx_http_fastcgi_module.c +5 -0
  35. data/vendor/nginx/src/http/modules/ngx_http_flv_module.c +4 -0
  36. data/vendor/nginx/src/http/modules/ngx_http_geo_module.c +7 -8
  37. data/vendor/nginx/src/http/modules/ngx_http_geoip_module.c +10 -12
  38. data/vendor/nginx/src/http/modules/ngx_http_gunzip_filter_module.c +677 -0
  39. data/vendor/nginx/src/http/modules/ngx_http_gzip_filter_module.c +3 -0
  40. data/vendor/nginx/src/http/modules/ngx_http_gzip_static_module.c +36 -10
  41. data/vendor/nginx/src/http/modules/ngx_http_headers_filter_module.c +31 -13
  42. data/vendor/nginx/src/http/modules/ngx_http_image_filter_module.c +13 -0
  43. data/vendor/nginx/src/http/modules/ngx_http_limit_conn_module.c +18 -2
  44. data/vendor/nginx/src/http/modules/ngx_http_limit_req_module.c +19 -2
  45. data/vendor/nginx/src/http/modules/ngx_http_map_module.c +1 -1
  46. data/vendor/nginx/src/http/modules/ngx_http_memcached_module.c +60 -8
  47. data/vendor/nginx/src/http/modules/ngx_http_mp4_module.c +4 -8
  48. data/vendor/nginx/src/http/modules/ngx_http_not_modified_filter_module.c +126 -29
  49. data/vendor/nginx/src/http/modules/ngx_http_proxy_module.c +59 -301
  50. data/vendor/nginx/src/http/modules/ngx_http_range_filter_module.c +34 -6
  51. data/vendor/nginx/src/http/modules/ngx_http_realip_module.c +13 -12
  52. data/vendor/nginx/src/http/modules/ngx_http_scgi_module.c +30 -11
  53. data/vendor/nginx/src/http/modules/ngx_http_ssi_filter_module.c +1 -0
  54. data/vendor/nginx/src/http/modules/ngx_http_ssl_module.c +155 -4
  55. data/vendor/nginx/src/http/modules/ngx_http_ssl_module.h +6 -0
  56. data/vendor/nginx/src/http/modules/ngx_http_static_module.c +4 -0
  57. data/vendor/nginx/src/http/modules/ngx_http_stub_status_module.c +90 -3
  58. data/vendor/nginx/src/http/modules/ngx_http_sub_filter_module.c +1 -0
  59. data/vendor/nginx/src/http/modules/ngx_http_upstream_ip_hash_module.c +5 -0
  60. data/vendor/nginx/src/http/modules/ngx_http_upstream_least_conn_module.c +5 -0
  61. data/vendor/nginx/src/http/modules/ngx_http_uwsgi_module.c +14 -1
  62. data/vendor/nginx/src/http/modules/ngx_http_xslt_filter_module.c +1 -0
  63. data/vendor/nginx/src/http/modules/perl/Makefile.PL +4 -2
  64. data/vendor/nginx/src/http/modules/perl/nginx.pm +1 -1
  65. data/vendor/nginx/src/http/modules/perl/nginx.xs +36 -3
  66. data/vendor/nginx/src/http/ngx_http.c +24 -1
  67. data/vendor/nginx/src/http/ngx_http.h +26 -2
  68. data/vendor/nginx/src/http/ngx_http_core_module.c +136 -10
  69. data/vendor/nginx/src/http/ngx_http_core_module.h +37 -13
  70. data/vendor/nginx/src/http/ngx_http_header_filter_module.c +9 -2
  71. data/vendor/nginx/src/http/ngx_http_parse.c +404 -0
  72. data/vendor/nginx/src/http/ngx_http_request.c +840 -517
  73. data/vendor/nginx/src/http/ngx_http_request.h +37 -25
  74. data/vendor/nginx/src/http/ngx_http_request_body.c +585 -156
  75. data/vendor/nginx/src/http/ngx_http_spdy.c +2882 -0
  76. data/vendor/nginx/src/http/ngx_http_spdy.h +235 -0
  77. data/vendor/nginx/src/http/ngx_http_spdy_filter_module.c +999 -0
  78. data/vendor/nginx/src/http/ngx_http_spdy_module.c +351 -0
  79. data/vendor/nginx/src/http/ngx_http_spdy_module.h +36 -0
  80. data/vendor/nginx/src/http/ngx_http_special_response.c +3 -1
  81. data/vendor/nginx/src/http/ngx_http_upstream.c +415 -26
  82. data/vendor/nginx/src/http/ngx_http_upstream.h +11 -1
  83. data/vendor/nginx/src/http/ngx_http_upstream_round_robin.c +2 -45
  84. data/vendor/nginx/src/http/ngx_http_upstream_round_robin.h +0 -2
  85. data/vendor/nginx/src/http/ngx_http_variables.c +72 -12
  86. data/vendor/nginx/src/mail/ngx_mail.h +2 -2
  87. data/vendor/nginx/src/mail/ngx_mail_auth_http_module.c +35 -25
  88. data/vendor/nginx/src/mail/ngx_mail_core_module.c +5 -1
  89. metadata +9 -2
@@ -52,7 +52,7 @@ else
52
52
 
53
53
  # FreeBSD, Solaris 10
54
54
 
55
- ngx_feature="system md library"
55
+ ngx_feature="md5 in system md library"
56
56
  ngx_feature_name=NGX_HAVE_MD5
57
57
  ngx_feature_run=no
58
58
  ngx_feature_incs="#include <md5.h>"
@@ -67,7 +67,7 @@ else
67
67
 
68
68
  # Solaris 8/9
69
69
 
70
- ngx_feature="system md5 library"
70
+ ngx_feature="md5 in system md5 library"
71
71
  ngx_feature_libs="-lmd5"
72
72
  . auto/feature
73
73
 
@@ -78,7 +78,7 @@ else
78
78
 
79
79
  # OpenSSL crypto library
80
80
 
81
- ngx_feature="OpenSSL md5 crypto library"
81
+ ngx_feature="md5 in system OpenSSL crypto library"
82
82
  ngx_feature_name="NGX_OPENSSL_MD5"
83
83
  ngx_feature_incs="#include <openssl/md5.h>"
84
84
  ngx_feature_libs="-lcrypto"
@@ -40,6 +40,8 @@ if test -n "$NGX_PERL_VER"; then
40
40
 
41
41
  ngx_perl_ldopts=`$NGX_PERL -MExtUtils::Embed -e ldopts`
42
42
 
43
+ ngx_perl_dlext=`$NGX_PERL -MConfig -e 'print $Config{dlext}'`
44
+
43
45
  if $NGX_PERL -V:usemultiplicity | grep define > /dev/null; then
44
46
  have=NGX_HAVE_PERL_MULTIPLICITY . auto/have
45
47
  echo " + perl interpreter multiplicity found"
@@ -51,7 +53,7 @@ if test -n "$NGX_PERL_VER"; then
51
53
  fi
52
54
 
53
55
  CORE_LINK="$CORE_LINK $ngx_perl_ldopts"
54
- LINK_DEPS="$LINK_DEPS $NGX_OBJS/src/http/modules/perl/blib/arch/auto/nginx/nginx.so"
56
+ LINK_DEPS="$LINK_DEPS $NGX_OBJS/src/http/modules/perl/blib/arch/auto/nginx/nginx.$ngx_perl_dlext"
55
57
 
56
58
  if test -n "$NGX_PERL_MODULES"; then
57
59
  have=NGX_PERL_MODULES value="(u_char *) \"$NGX_PERL_MODULES\""
@@ -3,33 +3,38 @@
3
3
  # Copyright (C) Nginx, Inc.
4
4
 
5
5
 
6
+ v=`grep 'define NGINX_VERSION' src/core/nginx.h | sed -e 's/^.*"\(.*\)".*/\1/'`
7
+
8
+
6
9
  cat << END >> $NGX_MAKEFILE
7
10
 
8
- $NGX_OBJS/src/http/modules/perl/blib/arch/auto/nginx/nginx.so: \
9
- \$(CORE_DEPS) \$(HTTP_DEPS) \
10
- src/http/modules/perl/nginx.pm \
11
- src/http/modules/perl/nginx.xs \
12
- src/http/modules/perl/ngx_http_perl_module.h \
11
+ $NGX_OBJS/src/http/modules/perl/blib/arch/auto/nginx/nginx.$ngx_perl_dlext: \\
12
+ \$(CORE_DEPS) \$(HTTP_DEPS) \\
13
+ src/http/modules/perl/ngx_http_perl_module.h \\
13
14
  $NGX_OBJS/src/http/modules/perl/Makefile
14
- cp src/http/modules/perl/nginx.* $NGX_OBJS/src/http/modules/perl/
15
-
16
15
  cd $NGX_OBJS/src/http/modules/perl && \$(MAKE)
17
16
 
18
17
  rm -rf $NGX_OBJS/install_perl
19
18
 
20
19
 
21
- $NGX_OBJS/src/http/modules/perl/Makefile: \
22
- src/http/modules/perl/Makefile.PL \
23
- src/http/modules/perl/nginx.pm
24
- cp -p src/http/modules/perl/nginx.* $NGX_OBJS/src/http/modules/perl/
20
+ $NGX_OBJS/src/http/modules/perl/Makefile: \\
21
+ src/core/nginx.h \\
22
+ src/http/modules/perl/Makefile.PL \\
23
+ src/http/modules/perl/nginx.pm \\
24
+ src/http/modules/perl/nginx.xs \\
25
+ src/http/modules/perl/typemap
26
+ sed "s/%%VERSION%%/$v/" src/http/modules/perl/nginx.pm > \\
27
+ $NGX_OBJS/src/http/modules/perl/nginx.pm
28
+ cp -p src/http/modules/perl/nginx.xs $NGX_OBJS/src/http/modules/perl/
25
29
  cp -p src/http/modules/perl/typemap $NGX_OBJS/src/http/modules/perl/
26
30
  cp -p src/http/modules/perl/Makefile.PL $NGX_OBJS/src/http/modules/perl/
27
31
 
28
- cd $NGX_OBJS/src/http/modules/perl \
29
- && NGX_PM_CFLAGS="\$(NGX_PM_CFLAGS) -g $NGX_CC_OPT" \
30
- NGX_INCS="$CORE_INCS $NGX_OBJS $HTTP_INCS" \
31
- $NGX_PERL Makefile.PL \
32
- LIB=$NGX_PERL_MODULES \
32
+ cd $NGX_OBJS/src/http/modules/perl \\
33
+ && NGX_PM_CFLAGS="\$(NGX_PM_CFLAGS) -g $NGX_CC_OPT" \\
34
+ NGX_INCS="$CORE_INCS $NGX_OBJS $HTTP_INCS" \\
35
+ NGX_DEPS="\$(CORE_DEPS) \$(HTTP_DEPS)" \\
36
+ $NGX_PERL Makefile.PL \\
37
+ LIB=$NGX_PERL_MODULES \\
33
38
  INSTALLSITEMAN3DIR=$NGX_PERL_MODULES_MAN
34
39
 
35
40
  END
@@ -57,7 +57,7 @@ else
57
57
 
58
58
  # OpenSSL crypto library
59
59
 
60
- ngx_feature="OpenSSL sha1 crypto library"
60
+ ngx_feature="sha1 in system OpenSSL crypto library"
61
61
  ngx_feature_incs="#include <openssl/sha.h>"
62
62
  ngx_feature_libs="-lcrypto"
63
63
  . auto/feature
@@ -100,6 +100,7 @@ fi
100
100
  # ngx_http_write_filter
101
101
  # ngx_http_header_filter
102
102
  # ngx_http_chunked_filter
103
+ # ngx_http_spdy_filter
103
104
  # ngx_http_range_header_filter
104
105
  # ngx_http_gzip_filter
105
106
  # ngx_http_postpone_filter
@@ -109,6 +110,7 @@ fi
109
110
  # ngx_http_image_filter
110
111
  # ngx_http_sub_filter
111
112
  # ngx_http_addition_filter
113
+ # ngx_http_gunzip_filter
112
114
  # ngx_http_userid_filter
113
115
  # ngx_http_headers_filter
114
116
  # ngx_http_copy_filter
@@ -117,8 +119,13 @@ fi
117
119
 
118
120
  HTTP_FILTER_MODULES="$HTTP_WRITE_FILTER_MODULE \
119
121
  $HTTP_HEADER_FILTER_MODULE \
120
- $HTTP_CHUNKED_FILTER_MODULE \
121
- $HTTP_RANGE_HEADER_FILTER_MODULE"
122
+ $HTTP_CHUNKED_FILTER_MODULE"
123
+
124
+ if [ $HTTP_SPDY = YES ]; then
125
+ HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES $HTTP_SPDY_FILTER_MODULE"
126
+ fi
127
+
128
+ HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES $HTTP_RANGE_HEADER_FILTER_MODULE"
122
129
 
123
130
  if [ $HTTP_GZIP = YES ]; then
124
131
  have=NGX_HTTP_GZIP . auto/have
@@ -166,11 +173,27 @@ if [ $HTTP_ADDITION = YES ]; then
166
173
  HTTP_SRCS="$HTTP_SRCS $HTTP_ADDITION_SRCS"
167
174
  fi
168
175
 
176
+ if [ $HTTP_GUNZIP = YES ]; then
177
+ have=NGX_HTTP_GZIP . auto/have
178
+ USE_ZLIB=YES
179
+ HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES $HTTP_GUNZIP_FILTER_MODULE"
180
+ HTTP_SRCS="$HTTP_SRCS $HTTP_GUNZIP_SRCS"
181
+ fi
182
+
169
183
  if [ $HTTP_USERID = YES ]; then
170
184
  HTTP_FILTER_MODULES="$HTTP_FILTER_MODULES $HTTP_USERID_FILTER_MODULE"
171
185
  HTTP_SRCS="$HTTP_SRCS $HTTP_USERID_SRCS"
172
186
  fi
173
187
 
188
+
189
+ if [ $HTTP_SPDY = YES ]; then
190
+ have=NGX_HTTP_SPDY . auto/have
191
+ USE_ZLIB=YES
192
+ HTTP_MODULES="$HTTP_MODULES $HTTP_SPDY_MODULE"
193
+ HTTP_DEPS="$HTTP_DEPS $HTTP_SPDY_DEPS"
194
+ HTTP_SRCS="$HTTP_SRCS $HTTP_SPDY_SRCS"
195
+ fi
196
+
174
197
  HTTP_MODULES="$HTTP_MODULES $HTTP_STATIC_MODULE"
175
198
 
176
199
  if [ $HTTP_GZIP_STATIC = YES ]; then
@@ -234,7 +257,6 @@ if [ $HTTP_STATUS = YES ]; then
234
257
  fi
235
258
 
236
259
  if [ $HTTP_GEO = YES ]; then
237
- have=NGX_HTTP_GEO . auto/have
238
260
  have=NGX_HTTP_X_FORWARDED_FOR . auto/have
239
261
  HTTP_MODULES="$HTTP_MODULES $HTTP_GEO_MODULE"
240
262
  HTTP_SRCS="$HTTP_SRCS $HTTP_GEO_SRCS"
@@ -276,7 +298,6 @@ if [ $HTTP_SSL = YES ]; then
276
298
  fi
277
299
 
278
300
  if [ $HTTP_PROXY = YES ]; then
279
- have=NGX_HTTP_PROXY . auto/have
280
301
  have=NGX_HTTP_X_FORWARDED_FOR . auto/have
281
302
  #USE_MD5=YES
282
303
  HTTP_MODULES="$HTTP_MODULES $HTTP_PROXY_MODULE"
@@ -15,7 +15,7 @@ NGX_LOCK_PATH=
15
15
  NGX_USER=
16
16
  NGX_GROUP=
17
17
 
18
- CC=${CC:-gcc}
18
+ CC=${CC:-cc}
19
19
  CPP=
20
20
  NGX_OBJS=objs
21
21
 
@@ -60,6 +60,7 @@ HTTP_CACHE=YES
60
60
  HTTP_CHARSET=YES
61
61
  HTTP_GZIP=YES
62
62
  HTTP_SSL=NO
63
+ HTTP_SPDY=NO
63
64
  HTTP_SSI=YES
64
65
  HTTP_POSTPONE=NO
65
66
  HTTP_REALIP=NO
@@ -94,6 +95,7 @@ HTTP_SECURE_LINK=NO
94
95
  HTTP_DEGRADATION=NO
95
96
  HTTP_FLV=NO
96
97
  HTTP_MP4=NO
98
+ HTTP_GUNZIP=NO
97
99
  HTTP_GZIP_STATIC=NO
98
100
  HTTP_UPSTREAM_IP_HASH=YES
99
101
  HTTP_UPSTREAM_LEAST_CONN=YES
@@ -201,6 +203,7 @@ do
201
203
  --http-scgi-temp-path=*) NGX_HTTP_SCGI_TEMP_PATH="$value" ;;
202
204
 
203
205
  --with-http_ssl_module) HTTP_SSL=YES ;;
206
+ --with-http_spdy_module) HTTP_SPDY=YES ;;
204
207
  --with-http_realip_module) HTTP_REALIP=YES ;;
205
208
  --with-http_addition_module) HTTP_ADDITION=YES ;;
206
209
  --with-http_xslt_module) HTTP_XSLT=YES ;;
@@ -210,6 +213,7 @@ do
210
213
  --with-http_dav_module) HTTP_DAV=YES ;;
211
214
  --with-http_flv_module) HTTP_FLV=YES ;;
212
215
  --with-http_mp4_module) HTTP_MP4=YES ;;
216
+ --with-http_gunzip_module) HTTP_GUNZIP=YES ;;
213
217
  --with-http_gzip_static_module) HTTP_GZIP_STATIC=YES ;;
214
218
  --with-http_random_index_module) HTTP_RANDOM_INDEX=YES ;;
215
219
  --with-http_secure_link_module) HTTP_SECURE_LINK=YES ;;
@@ -347,6 +351,7 @@ cat << END
347
351
  --with-ipv6 enable IPv6 support
348
352
 
349
353
  --with-http_ssl_module enable ngx_http_ssl_module
354
+ --with-http_spdy_module enable ngx_http_spdy_module
350
355
  --with-http_realip_module enable ngx_http_realip_module
351
356
  --with-http_addition_module enable ngx_http_addition_module
352
357
  --with-http_xslt_module enable ngx_http_xslt_module
@@ -356,6 +361,7 @@ cat << END
356
361
  --with-http_dav_module enable ngx_http_dav_module
357
362
  --with-http_flv_module enable ngx_http_flv_module
358
363
  --with-http_mp4_module enable ngx_http_mp4_module
364
+ --with-http_gunzip_module enable ngx_http_gunzip_module
359
365
  --with-http_gzip_static_module enable ngx_http_gzip_static_module
360
366
  --with-http_random_index_module enable ngx_http_random_index_module
361
367
  --with-http_secure_link_module enable ngx_http_secure_link_module
@@ -77,7 +77,8 @@ REGEX_SRCS=src/core/ngx_regex.c
77
77
 
78
78
  OPENSSL_MODULE=ngx_openssl_module
79
79
  OPENSSL_DEPS=src/event/ngx_event_openssl.h
80
- OPENSSL_SRCS=src/event/ngx_event_openssl.c
80
+ OPENSSL_SRCS="src/event/ngx_event_openssl.c \
81
+ src/event/ngx_event_openssl_stapling.c"
81
82
 
82
83
 
83
84
  EVENT_MODULES="ngx_events_module ngx_event_core_module"
@@ -323,6 +324,15 @@ HTTP_POSTPONE_FILTER_SRCS=src/http/ngx_http_postpone_filter_module.c
323
324
  HTTP_FILE_CACHE_SRCS=src/http/ngx_http_file_cache.c
324
325
 
325
326
 
327
+ HTTP_SPDY_MODULE=ngx_http_spdy_module
328
+ HTTP_SPDY_FILTER_MODULE=ngx_http_spdy_filter_module
329
+ HTTP_SPDY_DEPS="src/http/ngx_http_spdy.h \
330
+ src/http/ngx_http_spdy_module.h"
331
+ HTTP_SPDY_SRCS="src/http/ngx_http_spdy.c \
332
+ src/http/ngx_http_spdy_module.c \
333
+ src/http/ngx_http_spdy_filter_module.c"
334
+
335
+
326
336
  HTTP_CHARSET_FILTER_MODULE=ngx_http_charset_filter_module
327
337
  HTTP_CHARSET_SRCS=src/http/modules/ngx_http_charset_filter_module.c
328
338
 
@@ -331,6 +341,10 @@ HTTP_GZIP_FILTER_MODULE=ngx_http_gzip_filter_module
331
341
  HTTP_GZIP_SRCS=src/http/modules/ngx_http_gzip_filter_module.c
332
342
 
333
343
 
344
+ HTTP_GUNZIP_FILTER_MODULE=ngx_http_gunzip_filter_module
345
+ HTTP_GUNZIP_SRCS=src/http/modules/ngx_http_gunzip_filter_module.c
346
+
347
+
334
348
  HTTP_SSI_FILTER_MODULE=ngx_http_ssi_filter_module
335
349
  HTTP_SSI_DEPS=src/http/modules/ngx_http_ssi_filter_module.h
336
350
  HTTP_SSI_SRCS=src/http/modules/ngx_http_ssi_filter_module.c
@@ -778,3 +778,17 @@ ngx_feature_test="struct stat sb;
778
778
  openat(AT_FDCWD, \".\", O_RDONLY|O_NOFOLLOW);
779
779
  fstatat(AT_FDCWD, \".\", &sb, AT_SYMLINK_NOFOLLOW);"
780
780
  . auto/feature
781
+
782
+
783
+ ngx_feature="getaddrinfo()"
784
+ ngx_feature_name="NGX_HAVE_GETADDRINFO"
785
+ ngx_feature_run=no
786
+ ngx_feature_incs="#include <sys/types.h>
787
+ #include <sys/socket.h>
788
+ #include <netdb.h>"
789
+ ngx_feature_path=
790
+ ngx_feature_libs=
791
+ ngx_feature_test='struct addrinfo *res;
792
+ if (getaddrinfo("localhost", NULL, NULL, &res) != 0) return 1;
793
+ freeaddrinfo(res)'
794
+ . auto/feature
@@ -9,8 +9,8 @@
9
9
  #define _NGINX_H_INCLUDED_
10
10
 
11
11
 
12
- #define nginx_version 1002008
13
- #define NGINX_VERSION "1.2.8"
12
+ #define nginx_version 1004000
13
+ #define NGINX_VERSION "1.4.0"
14
14
  #define NGINX_VER "nginx/" NGINX_VERSION
15
15
 
16
16
  #define NGINX_VAR "NGINX"
@@ -19,16 +19,10 @@ ngx_array_create(ngx_pool_t *p, ngx_uint_t n, size_t size)
19
19
  return NULL;
20
20
  }
21
21
 
22
- a->elts = ngx_palloc(p, n * size);
23
- if (a->elts == NULL) {
22
+ if (ngx_array_init(a, p, n, size) != NGX_OK) {
24
23
  return NULL;
25
24
  }
26
25
 
27
- a->nelts = 0;
28
- a->size = size;
29
- a->nalloc = n;
30
- a->pool = p;
31
-
32
26
  return a;
33
27
  }
34
28
 
@@ -13,13 +13,13 @@
13
13
  #include <ngx_core.h>
14
14
 
15
15
 
16
- struct ngx_array_s {
16
+ typedef struct {
17
17
  void *elts;
18
18
  ngx_uint_t nelts;
19
19
  size_t size;
20
20
  ngx_uint_t nalloc;
21
21
  ngx_pool_t *pool;
22
- };
22
+ } ngx_array_t;
23
23
 
24
24
 
25
25
  ngx_array_t *ngx_array_create(ngx_pool_t *p, ngx_uint_t n, size_t size);
@@ -336,10 +336,10 @@ ngx_open_listening_sockets(ngx_cycle_t *cycle)
336
336
 
337
337
  #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
338
338
 
339
- if (ls[i].sockaddr->sa_family == AF_INET6 && ls[i].ipv6only) {
339
+ if (ls[i].sockaddr->sa_family == AF_INET6) {
340
340
  int ipv6only;
341
341
 
342
- ipv6only = (ls[i].ipv6only == 1);
342
+ ipv6only = ls[i].ipv6only;
343
343
 
344
344
  if (setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY,
345
345
  (const void *) &ipv6only, sizeof(int))
@@ -900,11 +900,9 @@ ngx_close_connection(ngx_connection_t *c)
900
900
  c->read->closed = 1;
901
901
  c->write->closed = 1;
902
902
 
903
- if (c->single_connection) {
904
- ngx_unlock(&c->lock);
905
- c->read->locked = 0;
906
- c->write->locked = 0;
907
- }
903
+ ngx_unlock(&c->lock);
904
+ c->read->locked = 0;
905
+ c->write->locked = 0;
908
906
 
909
907
  ngx_mutex_unlock(ngx_posted_events_mutex);
910
908
 
@@ -972,6 +970,10 @@ ngx_reusable_connection(ngx_connection_t *c, ngx_uint_t reusable)
972
970
 
973
971
  if (c->reusable) {
974
972
  ngx_queue_remove(&c->queue);
973
+
974
+ #if (NGX_STAT_STUB)
975
+ (void) ngx_atomic_fetch_add(ngx_stat_waiting, -1);
976
+ #endif
975
977
  }
976
978
 
977
979
  c->reusable = reusable;
@@ -981,6 +983,10 @@ ngx_reusable_connection(ngx_connection_t *c, ngx_uint_t reusable)
981
983
 
982
984
  ngx_queue_insert_head(
983
985
  (ngx_queue_t *) &ngx_cycle->reusable_connections_queue, &c->queue);
986
+
987
+ #if (NGX_STAT_STUB)
988
+ (void) ngx_atomic_fetch_add(ngx_stat_waiting, 1);
989
+ #endif
984
990
  }
985
991
  }
986
992
 
@@ -64,7 +64,7 @@ struct ngx_listening_s {
64
64
  unsigned addr_ntop:1;
65
65
 
66
66
  #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
67
- unsigned ipv6only:2;
67
+ unsigned ipv6only:1;
68
68
  #endif
69
69
  unsigned keepalive:2;
70
70
 
@@ -152,7 +152,6 @@ struct ngx_connection_s {
152
152
 
153
153
  unsigned log_error:3; /* ngx_connection_log_error_e */
154
154
 
155
- unsigned single_connection:1;
156
155
  unsigned unexpected_eof:1;
157
156
  unsigned timedout:1;
158
157
  unsigned error:1;
@@ -15,7 +15,6 @@ typedef struct ngx_cycle_s ngx_cycle_t;
15
15
  typedef struct ngx_pool_s ngx_pool_t;
16
16
  typedef struct ngx_chain_s ngx_chain_t;
17
17
  typedef struct ngx_log_s ngx_log_t;
18
- typedef struct ngx_array_s ngx_array_t;
19
18
  typedef struct ngx_open_file_s ngx_open_file_t;
20
19
  typedef struct ngx_command_s ngx_command_t;
21
20
  typedef struct ngx_file_s ngx_file_t;
@@ -69,12 +68,12 @@ typedef void (*ngx_connection_handler_pt)(ngx_connection_t *c);
69
68
  #include <ngx_slab.h>
70
69
  #include <ngx_inet.h>
71
70
  #include <ngx_cycle.h>
71
+ #include <ngx_resolver.h>
72
72
  #if (NGX_OPENSSL)
73
73
  #include <ngx_event_openssl.h>
74
74
  #endif
75
75
  #include <ngx_process_cycle.h>
76
76
  #include <ngx_conf_file.h>
77
- #include <ngx_resolver.h>
78
77
  #include <ngx_open_file_cache.h>
79
78
  #include <ngx_os.h>
80
79
  #include <ngx_connection.h>
@@ -24,6 +24,8 @@ static ngx_int_t ngx_crypt_plain(ngx_pool_t *pool, u_char *key, u_char *salt,
24
24
 
25
25
  static ngx_int_t ngx_crypt_ssha(ngx_pool_t *pool, u_char *key, u_char *salt,
26
26
  u_char **encrypted);
27
+ static ngx_int_t ngx_crypt_sha(ngx_pool_t *pool, u_char *key, u_char *salt,
28
+ u_char **encrypted);
27
29
 
28
30
  #endif
29
31
 
@@ -43,6 +45,9 @@ ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt, u_char **encrypted)
43
45
  #if (NGX_HAVE_SHA1)
44
46
  } else if (ngx_strncmp(salt, "{SSHA}", sizeof("{SSHA}") - 1) == 0) {
45
47
  return ngx_crypt_ssha(pool, key, salt, encrypted);
48
+
49
+ } else if (ngx_strncmp(salt, "{SHA}", sizeof("{SHA}") - 1) == 0) {
50
+ return ngx_crypt_sha(pool, key, salt, encrypted);
46
51
  #endif
47
52
  }
48
53
 
@@ -241,6 +246,38 @@ ngx_crypt_ssha(ngx_pool_t *pool, u_char *key, u_char *salt, u_char **encrypted)
241
246
  return NGX_OK;
242
247
  }
243
248
 
249
+
250
+ static ngx_int_t
251
+ ngx_crypt_sha(ngx_pool_t *pool, u_char *key, u_char *salt, u_char **encrypted)
252
+ {
253
+ size_t len;
254
+ ngx_str_t encoded, decoded;
255
+ ngx_sha1_t sha1;
256
+ u_char digest[20];
257
+
258
+ /* "{SHA}" base64(SHA1(key)) */
259
+
260
+ decoded.len = sizeof(digest);
261
+ decoded.data = digest;
262
+
263
+ ngx_sha1_init(&sha1);
264
+ ngx_sha1_update(&sha1, key, ngx_strlen(key));
265
+ ngx_sha1_final(digest, &sha1);
266
+
267
+ len = sizeof("{SHA}") - 1 + ngx_base64_encoded_length(decoded.len) + 1;
268
+
269
+ *encrypted = ngx_pnalloc(pool, len);
270
+ if (*encrypted == NULL) {
271
+ return NGX_ERROR;
272
+ }
273
+
274
+ encoded.data = ngx_cpymem(*encrypted, "{SHA}", sizeof("{SHA}") - 1);
275
+ ngx_encode_base64(&encoded, &decoded);
276
+ encoded.data[encoded.len] = '\0';
277
+
278
+ return NGX_OK;
279
+ }
280
+
244
281
  #endif /* NGX_HAVE_SHA1 */
245
282
 
246
283
  #endif /* NGX_CRYPT */