nginxtra 1.2.6.8 → 1.2.7.8

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 (54) 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 +72 -0
  5. data/vendor/nginx/CHANGES.ru +76 -0
  6. data/vendor/nginx/LICENSE +2 -2
  7. data/vendor/nginx/auto/cc/msvc +0 -3
  8. data/vendor/nginx/auto/lib/geoip/conf +17 -2
  9. data/vendor/nginx/auto/lib/libgd/conf +1 -1
  10. data/vendor/nginx/auto/lib/pcre/conf +1 -0
  11. data/vendor/nginx/auto/lib/perl/make +1 -3
  12. data/vendor/nginx/auto/lib/zlib/conf +4 -1
  13. data/vendor/nginx/man/nginx.8 +2 -2
  14. data/vendor/nginx/src/core/nginx.h +2 -2
  15. data/vendor/nginx/src/core/ngx_conf_file.c +4 -19
  16. data/vendor/nginx/src/core/ngx_conf_file.h +1 -10
  17. data/vendor/nginx/src/core/ngx_cycle.c +2 -19
  18. data/vendor/nginx/src/core/ngx_file.c +4 -4
  19. data/vendor/nginx/src/core/ngx_inet.c +1 -1
  20. data/vendor/nginx/src/core/ngx_inet.h +1 -1
  21. data/vendor/nginx/src/core/ngx_radix_tree.c +202 -5
  22. data/vendor/nginx/src/core/ngx_radix_tree.h +9 -0
  23. data/vendor/nginx/src/event/modules/ngx_poll_module.c +2 -2
  24. data/vendor/nginx/src/event/ngx_event.c +4 -0
  25. data/vendor/nginx/src/event/ngx_event_openssl.c +27 -13
  26. data/vendor/nginx/src/http/modules/ngx_http_auth_basic_module.c +38 -49
  27. data/vendor/nginx/src/http/modules/ngx_http_fastcgi_module.c +44 -59
  28. data/vendor/nginx/src/http/modules/ngx_http_geo_module.c +310 -103
  29. data/vendor/nginx/src/http/modules/ngx_http_geoip_module.c +145 -15
  30. data/vendor/nginx/src/http/modules/ngx_http_gzip_filter_module.c +5 -1
  31. data/vendor/nginx/src/http/modules/ngx_http_headers_filter_module.c +1 -0
  32. data/vendor/nginx/src/http/modules/ngx_http_image_filter_module.c +27 -13
  33. data/vendor/nginx/src/http/modules/ngx_http_log_module.c +378 -40
  34. data/vendor/nginx/src/http/modules/ngx_http_map_module.c +7 -0
  35. data/vendor/nginx/src/http/modules/ngx_http_proxy_module.c +9 -7
  36. data/vendor/nginx/src/http/modules/ngx_http_scgi_module.c +1 -1
  37. data/vendor/nginx/src/http/modules/ngx_http_secure_link_module.c +15 -2
  38. data/vendor/nginx/src/http/modules/ngx_http_split_clients_module.c +1 -1
  39. data/vendor/nginx/src/http/modules/ngx_http_sub_filter_module.c +2 -2
  40. data/vendor/nginx/src/http/modules/ngx_http_upstream_keepalive_module.c +4 -0
  41. data/vendor/nginx/src/http/modules/ngx_http_upstream_least_conn_module.c +3 -1
  42. data/vendor/nginx/src/http/modules/ngx_http_uwsgi_module.c +1 -1
  43. data/vendor/nginx/src/http/modules/ngx_http_xslt_filter_module.c +2 -2
  44. data/vendor/nginx/src/http/modules/perl/Makefile.PL +3 -14
  45. data/vendor/nginx/src/http/modules/perl/nginx.pm +2 -2
  46. data/vendor/nginx/src/http/ngx_http_core_module.c +2 -1
  47. data/vendor/nginx/src/http/ngx_http_script.c +3 -7
  48. data/vendor/nginx/src/http/ngx_http_upstream.c +9 -0
  49. data/vendor/nginx/src/http/ngx_http_upstream_round_robin.c +3 -1
  50. data/vendor/nginx/src/http/ngx_http_variables.c +114 -0
  51. data/vendor/nginx/src/http/ngx_http_write_filter_module.c +1 -1
  52. data/vendor/nginx/src/os/unix/ngx_files.c +1 -1
  53. data/vendor/nginx/src/os/unix/ngx_user.c +13 -14
  54. metadata +2 -2
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "rubygems"
3
- gem "nginxtra", "= 1.2.6.8"
3
+ gem "nginxtra", "= 1.2.7.8"
4
4
  gem "thor", "~> 0.16.0"
5
5
  require "nginxtra"
6
6
  Nginxtra::CLI.start
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "rubygems"
3
- gem "nginxtra", "= 1.2.6.8"
3
+ gem "nginxtra", "= 1.2.7.8"
4
4
  gem "thor", "~> 0.16.0"
5
5
  require "nginxtra"
6
6
  Nginxtra::Rails::CLI.start
@@ -6,7 +6,7 @@ module Nginxtra
6
6
  end
7
7
 
8
8
  def to_s
9
- "1.2.6.8"
9
+ "1.2.7.8"
10
10
  end
11
11
  end
12
12
  end
@@ -1,4 +1,76 @@
1
1
 
2
+ Changes with nginx 1.2.7 12 Feb 2013
3
+
4
+ *) Change: now if the "include" directive with mask is used on Unix
5
+ systems, included files are sorted in alphabetical order.
6
+
7
+ *) Change: the "add_header" directive adds headers to 201 responses.
8
+
9
+ *) Feature: the "geo" directive now supports IPv6 addresses in CIDR
10
+ notation.
11
+
12
+ *) Feature: the "flush" and "gzip" parameters of the "access_log"
13
+ directive.
14
+
15
+ *) Feature: variables support in the "auth_basic" directive.
16
+
17
+ *) Feature: the $pipe, $request_length, $time_iso8601, and $time_local
18
+ variables can now be used not only in the "log_format" directive.
19
+ Thanks to Kiril Kalchev.
20
+
21
+ *) Feature: IPv6 support in the ngx_http_geoip_module.
22
+ Thanks to Gregor Kališnik.
23
+
24
+ *) Bugfix: nginx could not be built with the ngx_http_perl_module in
25
+ some cases.
26
+
27
+ *) Bugfix: a segmentation fault might occur in a worker process if the
28
+ ngx_http_xslt_module was used.
29
+
30
+ *) Bugfix: nginx could not be built on MacOSX in some cases.
31
+ Thanks to Piotr Sikora.
32
+
33
+ *) Bugfix: the "limit_rate" directive with high rates might result in
34
+ truncated responses on 32-bit platforms.
35
+ Thanks to Alexey Antropov.
36
+
37
+ *) Bugfix: a segmentation fault might occur in a worker process if the
38
+ "if" directive was used.
39
+ Thanks to Piotr Sikora.
40
+
41
+ *) Bugfix: a "100 Continue" response was issued with "413 Request Entity
42
+ Too Large" responses.
43
+
44
+ *) Bugfix: the "image_filter", "image_filter_jpeg_quality" and
45
+ "image_filter_sharpen" directives might be inherited incorrectly.
46
+ Thanks to Ian Babrou.
47
+
48
+ *) Bugfix: "crypt_r() failed" errors might appear if the "auth_basic"
49
+ directive was used on Linux.
50
+
51
+ *) Bugfix: in backup servers handling.
52
+ Thanks to Thomas Chen.
53
+
54
+ *) Bugfix: proxied HEAD requests might return incorrect response if the
55
+ "gzip" directive was used.
56
+
57
+ *) Bugfix: a segmentation fault occurred on start or during
58
+ reconfiguration if the "keepalive" directive was specified more than
59
+ once in a single upstream block.
60
+
61
+ *) Bugfix: in the "proxy_method" directive.
62
+
63
+ *) Bugfix: a segmentation fault might occur in a worker process if
64
+ resolver was used with the poll method.
65
+
66
+ *) Bugfix: nginx might hog CPU during SSL handshake with a backend if
67
+ the select, poll, or /dev/poll methods were used.
68
+
69
+ *) Bugfix: the "[crit] SSL_write() failed (SSL:)" error.
70
+
71
+ *) Bugfix: in the "fastcgi_keep_conn" directive.
72
+
73
+
2
74
  Changes with nginx 1.2.6 11 Dec 2012
3
75
 
4
76
  *) Feature: the $request_time and $msec variables can now be used not
@@ -1,4 +1,80 @@
1
1
 
2
+ Изменения в nginx 1.2.7 12.02.2013
3
+
4
+ *) Изменение: теперь при использовании директивы include с маской на
5
+ Unix-системах включаемые файлы сортируются в алфавитном порядке.
6
+
7
+ *) Изменение: директива add_header добавляет строки в ответы с кодом
8
+ 201.
9
+
10
+ *) Добавление: директива geo теперь поддерживает IPv6 адреса в формате
11
+ CIDR.
12
+
13
+ *) Добавление: параметры flush и gzip в директиве access_log.
14
+
15
+ *) Добавление: директива auth_basic поддерживает переменные.
16
+
17
+ *) Добавление: переменные $pipe, $request_length, $time_iso8601 и
18
+ $time_local теперь можно использовать не только в директиве
19
+ log_format.
20
+ Спасибо Kiril Kalchev.
21
+
22
+ *) Добавление: поддержка IPv6 в модуле ngx_http_geoip_module.
23
+ Спасибо Gregor Kališnik.
24
+
25
+ *) Исправление: nginx в некоторых случаях не собирался с модулем
26
+ ngx_http_perl_module.
27
+
28
+ *) Исправление: в рабочем процессе мог произойти segmentation fault,
29
+ если использовался модуль ngx_http_xslt_module.
30
+
31
+ *) Исправление: nginx мог не собираться на MacOSX.
32
+ Спасибо Piotr Sikora.
33
+
34
+ *) Исправление: при использовании директивы limit_rate с большими
35
+ значениями скорости на 32-битных системах ответ мог возвращаться не
36
+ целиком.
37
+ Спасибо Алексею Антропову.
38
+
39
+ *) Исправление: в рабочем процессе мог произойти segmentation fault,
40
+ если использовалась директива if.
41
+ Спасибо Piotr Sikora.
42
+
43
+ *) Исправление: ответ "100 Continue" выдавался вместе с ответом "413
44
+ Request Entity Too Large".
45
+
46
+ *) Исправление: директивы image_filter, image_filter_jpeg_quality и
47
+ image_filter_sharpen могли наследоваться некорректно.
48
+ Спасибо Ивану Боброву.
49
+
50
+ *) Исправление: при использовании директивы auth_basic под Linux могли
51
+ возникать ошибки "crypt_r() failed".
52
+
53
+ *) Исправление: в обработке backup-серверов.
54
+ Спасибо Thomas Chen.
55
+
56
+ *) Исправление: при проксировании HEAD-запросов мог возвращаться
57
+ некорректный ответ, если использовалась директива gzip.
58
+
59
+ *) Исправление: на старте или во время переконфигурации происходил
60
+ segmentation fault, если директива keepalive была указана несколько
61
+ раз в одном блоке upstream.
62
+
63
+ *) Исправление: директива proxy_method работала неверно, если была
64
+ указана на уровне http.
65
+
66
+ *) Исправление: в рабочем процессе мог произойти segmentation fault,
67
+ если использовался resolver и метод poll.
68
+
69
+ *) Исправление: nginx мог нагружать процессор во время SSL handshake с
70
+ бэкендом при использовании методов обработки соединений select, poll
71
+ и /dev/poll.
72
+
73
+ *) Исправление: ошибка "[crit] SSL_write() failed (SSL:)".
74
+
75
+ *) Исправление: в директиве fastcgi_keep_conn.
76
+
77
+
2
78
  Изменения в nginx 1.2.6 11.12.2012
3
79
 
4
80
  *) Добавление: переменные $request_time и $msec теперь можно
@@ -1,6 +1,6 @@
1
1
  /*
2
- * Copyright (C) 2002-2012 Igor Sysoev
3
- * Copyright (C) 2011,2012 Nginx, Inc.
2
+ * Copyright (C) 2002-2013 Igor Sysoev
3
+ * Copyright (C) 2011-2013 Nginx, Inc.
4
4
  * All rights reserved.
5
5
  *
6
6
  * Redistribution and use in source and binary forms, with or without
@@ -73,9 +73,6 @@ CFLAGS="$CFLAGS -WX"
73
73
  # disable logo
74
74
  CFLAGS="$CFLAGS -nologo"
75
75
 
76
-
77
- LINK="\$(CC)"
78
-
79
76
  # the link flags
80
77
  CORE_LINK="$CORE_LINK -link -verbose:lib"
81
78
 
@@ -6,7 +6,7 @@
6
6
  ngx_feature="GeoIP library"
7
7
  ngx_feature_name=
8
8
  ngx_feature_run=no
9
- ngx_feature_incs=
9
+ ngx_feature_incs="#include <GeoIP.h>"
10
10
  ngx_feature_path=
11
11
  ngx_feature_libs="-lGeoIP"
12
12
  ngx_feature_test="GeoIP_open(NULL, 0)"
@@ -18,6 +18,7 @@ if [ $ngx_found = no ]; then
18
18
  # FreeBSD port
19
19
 
20
20
  ngx_feature="GeoIP library in /usr/local/"
21
+ ngx_feature_path="/usr/local/include"
21
22
 
22
23
  if [ $NGX_RPATH = YES ]; then
23
24
  ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lGeoIP"
@@ -34,7 +35,7 @@ if [ $ngx_found = no ]; then
34
35
  # NetBSD port
35
36
 
36
37
  ngx_feature="GeoIP library in /usr/pkg/"
37
- ngx_feature_path="/usr/pkg/include/"
38
+ ngx_feature_path="/usr/pkg/include"
38
39
 
39
40
  if [ $NGX_RPATH = YES ]; then
40
41
  ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lGeoIP"
@@ -64,8 +65,22 @@ fi
64
65
 
65
66
 
66
67
  if [ $ngx_found = yes ]; then
68
+
69
+ CORE_INCS="$CORE_INCS $ngx_feature_path"
67
70
  CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
68
71
 
72
+ if [ $NGX_IPV6 = YES ]; then
73
+ ngx_feature="GeoIP IPv6 support"
74
+ ngx_feature_name="NGX_HAVE_GEOIP_V6"
75
+ ngx_feature_run=no
76
+ ngx_feature_incs="#include <stdio.h>
77
+ #include <GeoIP.h>"
78
+ #ngx_feature_path=
79
+ #ngx_feature_libs=
80
+ ngx_feature_test="printf(\"%d\", GEOIP_CITY_EDITION_REV0_V6);"
81
+ . auto/feature
82
+ fi
83
+
69
84
  else
70
85
 
71
86
  cat << END
@@ -35,7 +35,7 @@ if [ $ngx_found = no ]; then
35
35
  # NetBSD port
36
36
 
37
37
  ngx_feature="GD library in /usr/pkg/"
38
- ngx_feature_path="/usr/pkg/include/"
38
+ ngx_feature_path="/usr/pkg/include"
39
39
 
40
40
  if [ $NGX_RPATH = YES ]; then
41
41
  ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lgd"
@@ -172,6 +172,7 @@ else
172
172
  ngx_feature="PCRE JIT support"
173
173
  ngx_feature_name="NGX_HAVE_PCRE_JIT"
174
174
  ngx_feature_test="int jit = 0;
175
+ pcre_free_study(NULL);
175
176
  pcre_config(PCRE_CONFIG_JIT, &jit);
176
177
  if (jit != 1) return 1;"
177
178
  . auto/feature
@@ -26,9 +26,7 @@ $NGX_OBJS/src/http/modules/perl/Makefile: \
26
26
 
27
27
  cd $NGX_OBJS/src/http/modules/perl \
28
28
  && NGX_PM_CFLAGS="\$(NGX_PM_CFLAGS) -g $NGX_CC_OPT" \
29
- NGX_PCRE=$PCRE \
30
- NGX_OBJS=$NGX_OBJS \
31
- NGX_OPENSSL=$OPENSSL \
29
+ NGX_INCS="$CORE_INCS $NGX_OBJS $HTTP_INCS" \
32
30
  $NGX_PERL Makefile.PL \
33
31
  LIB=$NGX_PERL_MODULES \
34
32
  INSTALLSITEMAN3DIR=$NGX_PERL_MODULES_MAN
@@ -9,11 +9,13 @@ if [ $ZLIB != NONE ]; then
9
9
  case "$NGX_CC_NAME" in
10
10
 
11
11
  msvc* | owc* | bcc)
12
+ have=NGX_ZLIB . auto/have
12
13
  LINK_DEPS="$LINK_DEPS $ZLIB/zlib.lib"
13
14
  CORE_LIBS="$CORE_LIBS $ZLIB/zlib.lib"
14
15
  ;;
15
16
 
16
17
  icc*)
18
+ have=NGX_ZLIB . auto/have
17
19
  LINK_DEPS="$LINK_DEPS $ZLIB/libz.a"
18
20
 
19
21
  # to allow -ipo optimization we link with the *.o but not library
@@ -30,6 +32,7 @@ if [ $ZLIB != NONE ]; then
30
32
  ;;
31
33
 
32
34
  *)
35
+ have=NGX_ZLIB . auto/have
33
36
  LINK_DEPS="$LINK_DEPS $ZLIB/libz.a"
34
37
  CORE_LIBS="$CORE_LIBS $ZLIB/libz.a"
35
38
  #CORE_LIBS="$CORE_LIBS -L $ZLIB -lz"
@@ -45,7 +48,7 @@ else
45
48
  # FreeBSD, Solaris, Linux
46
49
 
47
50
  ngx_feature="zlib library"
48
- ngx_feature_name=
51
+ ngx_feature_name="NGX_ZLIB"
49
52
  ngx_feature_run=no
50
53
  ngx_feature_incs="#include <zlib.h>"
51
54
  ngx_feature_path=
@@ -1,6 +1,6 @@
1
1
  .\"
2
- .\" Copyright (c) 2010 Sergey A. Osokin
3
- .\" Copyright (c) 2011,2012 Nginx, Inc.
2
+ .\" Copyright (C) 2010 Sergey A. Osokin
3
+ .\" Copyright (C) Nginx, Inc.
4
4
  .\" All rights reserved.
5
5
  .\"
6
6
  .\" Redistribution and use in source and binary forms, with or without
@@ -9,8 +9,8 @@
9
9
  #define _NGINX_H_INCLUDED_
10
10
 
11
11
 
12
- #define nginx_version 1002006
13
- #define NGINX_VERSION "1.2.6"
12
+ #define nginx_version 1002007
13
+ #define NGINX_VERSION "1.2.7"
14
14
  #define NGINX_VER "nginx/" NGINX_VERSION
15
15
 
16
16
  #define NGINX_VAR "NGINX"
@@ -945,7 +945,8 @@ ngx_conf_open_file(ngx_cycle_t *cycle, ngx_str_t *name)
945
945
  file->name = *name;
946
946
  }
947
947
 
948
- file->buffer = NULL;
948
+ file->flush = NULL;
949
+ file->data = NULL;
949
950
 
950
951
  return file;
951
952
  }
@@ -954,7 +955,6 @@ ngx_conf_open_file(ngx_cycle_t *cycle, ngx_str_t *name)
954
955
  static void
955
956
  ngx_conf_flush_files(ngx_cycle_t *cycle)
956
957
  {
957
- ssize_t n, len;
958
958
  ngx_uint_t i;
959
959
  ngx_list_part_t *part;
960
960
  ngx_open_file_t *file;
@@ -975,23 +975,8 @@ ngx_conf_flush_files(ngx_cycle_t *cycle)
975
975
  i = 0;
976
976
  }
977
977
 
978
- len = file[i].pos - file[i].buffer;
979
-
980
- if (file[i].buffer == NULL || len == 0) {
981
- continue;
982
- }
983
-
984
- n = ngx_write_fd(file[i].fd, file[i].buffer, len);
985
-
986
- if (n == NGX_FILE_ERROR) {
987
- ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
988
- ngx_write_fd_n " to \"%s\" failed",
989
- file[i].name.data);
990
-
991
- } else if (n != len) {
992
- ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
993
- ngx_write_fd_n " to \"%s\" was incomplete: %z of %uz",
994
- file[i].name.data, n, len);
978
+ if (file[i].flush) {
979
+ file[i].flush(&file[i], cycle->log);
995
980
  }
996
981
  }
997
982
  }
@@ -91,17 +91,8 @@ struct ngx_open_file_s {
91
91
  ngx_fd_t fd;
92
92
  ngx_str_t name;
93
93
 
94
- u_char *buffer;
95
- u_char *pos;
96
- u_char *last;
97
-
98
- #if 0
99
- /* e.g. append mode, error_log */
100
- ngx_uint_t flags;
101
- /* e.g. reopen db file */
102
- ngx_uint_t (*handler)(void *data, ngx_open_file_t *file);
94
+ void (*flush)(ngx_open_file_t *file, ngx_log_t *log);
103
95
  void *data;
104
- #endif
105
96
  };
106
97
 
107
98
 
@@ -1115,7 +1115,6 @@ ngx_test_lockfile(u_char *file, ngx_log_t *log)
1115
1115
  void
1116
1116
  ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user)
1117
1117
  {
1118
- ssize_t n, len;
1119
1118
  ngx_fd_t fd;
1120
1119
  ngx_uint_t i;
1121
1120
  ngx_list_part_t *part;
@@ -1139,24 +1138,8 @@ ngx_reopen_files(ngx_cycle_t *cycle, ngx_uid_t user)
1139
1138
  continue;
1140
1139
  }
1141
1140
 
1142
- len = file[i].pos - file[i].buffer;
1143
-
1144
- if (file[i].buffer && len != 0) {
1145
-
1146
- n = ngx_write_fd(file[i].fd, file[i].buffer, len);
1147
-
1148
- if (n == NGX_FILE_ERROR) {
1149
- ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
1150
- ngx_write_fd_n " to \"%s\" failed",
1151
- file[i].name.data);
1152
-
1153
- } else if (n != len) {
1154
- ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
1155
- ngx_write_fd_n " to \"%s\" was incomplete: %z of %uz",
1156
- file[i].name.data, n, len);
1157
- }
1158
-
1159
- file[i].pos = file[i].buffer;
1141
+ if (file[i].flush) {
1142
+ file[i].flush(&file[i], cycle->log);
1160
1143
  }
1161
1144
 
1162
1145
  fd = ngx_open_file(file[i].name.data, NGX_FILE_APPEND,
@@ -732,14 +732,14 @@ ngx_copy_file(u_char *from, u_char *to, ngx_copy_file_t *cf)
732
732
 
733
733
  n = ngx_read_fd(fd, buf, len);
734
734
 
735
- if (n == NGX_FILE_ERROR) {
735
+ if (n == -1) {
736
736
  ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
737
737
  ngx_read_fd_n " \"%s\" failed", from);
738
738
  goto failed;
739
739
  }
740
740
 
741
741
  if ((size_t) n != len) {
742
- ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
742
+ ngx_log_error(NGX_LOG_ALERT, cf->log, 0,
743
743
  ngx_read_fd_n " has read only %z of %uz from %s",
744
744
  n, size, from);
745
745
  goto failed;
@@ -747,14 +747,14 @@ ngx_copy_file(u_char *from, u_char *to, ngx_copy_file_t *cf)
747
747
 
748
748
  n = ngx_write_fd(nfd, buf, len);
749
749
 
750
- if (n == NGX_FILE_ERROR) {
750
+ if (n == -1) {
751
751
  ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
752
752
  ngx_write_fd_n " \"%s\" failed", to);
753
753
  goto failed;
754
754
  }
755
755
 
756
756
  if ((size_t) n != len) {
757
- ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
757
+ ngx_log_error(NGX_LOG_ALERT, cf->log, 0,
758
758
  ngx_write_fd_n " has written only %z of %uz to %s",
759
759
  n, size, to);
760
760
  goto failed;