summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNGINX team <nginx@nginx.org>2012-01-30 14:53:52 +0000
committerJonathan Kolb <jon@b0g.us>2012-01-30 14:53:52 +0000
commit01f0bd5ae6dffe914b2909caf428f565a1c60351 (patch)
tree3cdd9e3309e17c9e471cf05c73f683c5eaa3e6b7
parentb61802612732d1211d92a3a4f449fb4cd1d80d18 (diff)
downloadnginx-01f0bd5ae6dffe914b2909caf428f565a1c60351.tar.gz
Changes with nginx 1.1.14 30 Jan 2012v1.1.14
*) Feature: multiple "limit_req" limits may be used simultaneously. *) Bugfix: in error handling while connecting to a backend. Thanks to Piotr Sikora. *) Bugfix: in AIO error handling on FreeBSD. *) Bugfix: in the OpenSSL library initialization. *) Bugfix: the "proxy_redirect" directives might not be correctly inherited. *) Bugfix: memory leak during reconfiguration if the "pcre_jit" directive was used. Maxim Dounin _______________________________________________ nginx-announce mailing list nginx-announce@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-announce
-rw-r--r--CHANGES18
-rw-r--r--CHANGES.ru23
-rw-r--r--LICENSE1
-rw-r--r--auto/cc/acc1
-rw-r--r--auto/cc/bcc1
-rw-r--r--auto/cc/ccc1
-rw-r--r--auto/cc/conf1
-rw-r--r--auto/cc/gcc1
-rw-r--r--auto/cc/icc1
-rw-r--r--auto/cc/msvc1
-rw-r--r--auto/cc/name1
-rw-r--r--auto/cc/owc1
-rw-r--r--auto/cc/sunc1
-rw-r--r--auto/define1
-rw-r--r--auto/endianess1
-rw-r--r--auto/feature1
-rw-r--r--auto/have1
-rw-r--r--auto/have_headers1
-rw-r--r--auto/headers1
-rw-r--r--auto/include1
-rw-r--r--auto/init1
-rw-r--r--auto/install1
-rw-r--r--auto/lib/conf1
-rw-r--r--auto/lib/geoip/conf1
-rw-r--r--auto/lib/google-perftools/conf1
-rw-r--r--auto/lib/libatomic/conf1
-rw-r--r--auto/lib/libatomic/make1
-rw-r--r--auto/lib/libgd/conf1
-rw-r--r--auto/lib/libxslt/conf1
-rw-r--r--auto/lib/make1
-rw-r--r--auto/lib/md5/conf1
-rw-r--r--auto/lib/md5/make1
-rw-r--r--auto/lib/md5/makefile.bcc1
-rw-r--r--auto/lib/md5/makefile.msvc1
-rw-r--r--auto/lib/md5/makefile.owc1
-rw-r--r--auto/lib/openssl/conf1
-rw-r--r--auto/lib/openssl/make1
-rw-r--r--auto/lib/openssl/makefile.bcc1
-rw-r--r--auto/lib/openssl/makefile.msvc1
-rw-r--r--auto/lib/pcre/conf1
-rw-r--r--auto/lib/pcre/make1
-rw-r--r--auto/lib/pcre/makefile.bcc1
-rw-r--r--auto/lib/pcre/makefile.msvc1
-rw-r--r--auto/lib/pcre/makefile.owc1
-rw-r--r--auto/lib/perl/conf1
-rw-r--r--auto/lib/perl/make1
-rw-r--r--auto/lib/sha1/conf1
-rw-r--r--auto/lib/sha1/make1
-rw-r--r--auto/lib/sha1/makefile.bcc1
-rw-r--r--auto/lib/sha1/makefile.msvc1
-rw-r--r--auto/lib/sha1/makefile.owc1
-rw-r--r--auto/lib/test1
-rw-r--r--auto/lib/zlib/conf1
-rw-r--r--auto/lib/zlib/make1
-rw-r--r--auto/lib/zlib/makefile.bcc1
-rw-r--r--auto/lib/zlib/makefile.msvc1
-rw-r--r--auto/lib/zlib/makefile.owc1
-rw-r--r--auto/make1
-rw-r--r--auto/modules1
-rw-r--r--auto/nohave1
-rw-r--r--auto/options1
-rw-r--r--auto/os/conf1
-rw-r--r--auto/os/darwin1
-rw-r--r--auto/os/freebsd1
-rw-r--r--auto/os/linux1
-rw-r--r--auto/os/solaris1
-rw-r--r--auto/os/win321
-rw-r--r--auto/sources1
-rw-r--r--auto/stubs1
-rw-r--r--auto/summary1
-rw-r--r--auto/types/sizeof1
-rw-r--r--auto/types/typedef1
-rw-r--r--auto/types/uintptr_t1
-rw-r--r--auto/types/value1
-rwxr-xr-xauto/unix1
-rwxr-xr-xconfigure1
-rw-r--r--man/nginx.81
-rw-r--r--src/core/nginx.c1
-rw-r--r--src/core/nginx.h5
-rw-r--r--src/core/ngx_array.c1
-rw-r--r--src/core/ngx_array.h1
-rw-r--r--src/core/ngx_buf.c1
-rw-r--r--src/core/ngx_buf.h1
-rw-r--r--src/core/ngx_conf_file.c1
-rw-r--r--src/core/ngx_conf_file.h1
-rw-r--r--src/core/ngx_config.h1
-rw-r--r--src/core/ngx_connection.c1
-rw-r--r--src/core/ngx_connection.h1
-rw-r--r--src/core/ngx_core.h1
-rw-r--r--src/core/ngx_cpuinfo.c1
-rw-r--r--src/core/ngx_crc.h1
-rw-r--r--src/core/ngx_crc32.c1
-rw-r--r--src/core/ngx_crc32.h1
-rw-r--r--src/core/ngx_crypt.h1
-rw-r--r--src/core/ngx_cycle.c1
-rw-r--r--src/core/ngx_cycle.h1
-rw-r--r--src/core/ngx_file.c1
-rw-r--r--src/core/ngx_file.h1
-rw-r--r--src/core/ngx_hash.c1
-rw-r--r--src/core/ngx_hash.h1
-rw-r--r--src/core/ngx_inet.c1
-rw-r--r--src/core/ngx_inet.h1
-rw-r--r--src/core/ngx_list.c1
-rw-r--r--src/core/ngx_list.h1
-rw-r--r--src/core/ngx_log.c1
-rw-r--r--src/core/ngx_log.h1
-rw-r--r--src/core/ngx_md5.h1
-rw-r--r--src/core/ngx_murmurhash.h1
-rw-r--r--src/core/ngx_open_file_cache.c1
-rw-r--r--src/core/ngx_open_file_cache.h1
-rw-r--r--src/core/ngx_output_chain.c1
-rw-r--r--src/core/ngx_palloc.c1
-rw-r--r--src/core/ngx_palloc.h1
-rw-r--r--src/core/ngx_parse.c1
-rw-r--r--src/core/ngx_parse.h1
-rw-r--r--src/core/ngx_queue.c1
-rw-r--r--src/core/ngx_queue.h1
-rw-r--r--src/core/ngx_radix_tree.c1
-rw-r--r--src/core/ngx_radix_tree.h1
-rw-r--r--src/core/ngx_rbtree.c1
-rw-r--r--src/core/ngx_rbtree.h1
-rw-r--r--src/core/ngx_regex.c58
-rw-r--r--src/core/ngx_regex.h1
-rw-r--r--src/core/ngx_resolver.c1
-rw-r--r--src/core/ngx_resolver.h1
-rw-r--r--src/core/ngx_sha1.h1
-rw-r--r--src/core/ngx_shmtx.c1
-rw-r--r--src/core/ngx_shmtx.h1
-rw-r--r--src/core/ngx_slab.c1
-rw-r--r--src/core/ngx_slab.h1
-rw-r--r--src/core/ngx_spinlock.c1
-rw-r--r--src/core/ngx_string.c1
-rw-r--r--src/core/ngx_string.h1
-rw-r--r--src/core/ngx_times.c1
-rw-r--r--src/core/ngx_times.h1
-rw-r--r--src/event/modules/ngx_aio_module.c1
-rw-r--r--src/event/modules/ngx_devpoll_module.c1
-rw-r--r--src/event/modules/ngx_epoll_module.c1
-rw-r--r--src/event/modules/ngx_eventport_module.c1
-rw-r--r--src/event/modules/ngx_kqueue_module.c1
-rw-r--r--src/event/modules/ngx_poll_module.c1
-rw-r--r--src/event/modules/ngx_rtsig_module.c1
-rw-r--r--src/event/modules/ngx_select_module.c1
-rw-r--r--src/event/modules/ngx_win32_select_module.c1
-rw-r--r--src/event/ngx_event.c1
-rw-r--r--src/event/ngx_event.h1
-rw-r--r--src/event/ngx_event_accept.c1
-rw-r--r--src/event/ngx_event_busy_lock.c1
-rw-r--r--src/event/ngx_event_busy_lock.h1
-rw-r--r--src/event/ngx_event_connect.c12
-rw-r--r--src/event/ngx_event_connect.h1
-rw-r--r--src/event/ngx_event_mutex.c1
-rw-r--r--src/event/ngx_event_openssl.c3
-rw-r--r--src/event/ngx_event_openssl.h1
-rw-r--r--src/event/ngx_event_pipe.c1
-rw-r--r--src/event/ngx_event_pipe.h1
-rw-r--r--src/event/ngx_event_posted.c1
-rw-r--r--src/event/ngx_event_posted.h1
-rw-r--r--src/event/ngx_event_timer.c1
-rw-r--r--src/event/ngx_event_timer.h1
-rw-r--r--src/http/modules/ngx_http_access_module.c1
-rw-r--r--src/http/modules/ngx_http_addition_filter_module.c1
-rw-r--r--src/http/modules/ngx_http_auth_basic_module.c1
-rw-r--r--src/http/modules/ngx_http_autoindex_module.c1
-rw-r--r--src/http/modules/ngx_http_browser_module.c1
-rw-r--r--src/http/modules/ngx_http_charset_filter_module.c1
-rw-r--r--src/http/modules/ngx_http_chunked_filter_module.c1
-rw-r--r--src/http/modules/ngx_http_dav_module.c1
-rw-r--r--src/http/modules/ngx_http_degradation_module.c1
-rw-r--r--src/http/modules/ngx_http_empty_gif_module.c1
-rw-r--r--src/http/modules/ngx_http_fastcgi_module.c1
-rw-r--r--src/http/modules/ngx_http_flv_module.c1
-rw-r--r--src/http/modules/ngx_http_geo_module.c1
-rw-r--r--src/http/modules/ngx_http_geoip_module.c1
-rw-r--r--src/http/modules/ngx_http_gzip_filter_module.c1
-rw-r--r--src/http/modules/ngx_http_gzip_static_module.c1
-rw-r--r--src/http/modules/ngx_http_headers_filter_module.c1
-rw-r--r--src/http/modules/ngx_http_image_filter_module.c1
-rw-r--r--src/http/modules/ngx_http_index_module.c1
-rw-r--r--src/http/modules/ngx_http_limit_conn_module.c1
-rw-r--r--src/http/modules/ngx_http_limit_req_module.c423
-rw-r--r--src/http/modules/ngx_http_log_module.c1
-rw-r--r--src/http/modules/ngx_http_map_module.c1
-rw-r--r--src/http/modules/ngx_http_memcached_module.c1
-rw-r--r--src/http/modules/ngx_http_mp4_module.c1
-rw-r--r--src/http/modules/ngx_http_not_modified_filter_module.c1
-rw-r--r--src/http/modules/ngx_http_proxy_module.c3
-rw-r--r--src/http/modules/ngx_http_random_index_module.c1
-rw-r--r--src/http/modules/ngx_http_range_filter_module.c1
-rw-r--r--src/http/modules/ngx_http_realip_module.c1
-rw-r--r--src/http/modules/ngx_http_referer_module.c1
-rw-r--r--src/http/modules/ngx_http_rewrite_module.c1
-rw-r--r--src/http/modules/ngx_http_scgi_module.c1
-rw-r--r--src/http/modules/ngx_http_secure_link_module.c1
-rw-r--r--src/http/modules/ngx_http_split_clients_module.c1
-rw-r--r--src/http/modules/ngx_http_ssi_filter_module.c1
-rw-r--r--src/http/modules/ngx_http_ssi_filter_module.h1
-rw-r--r--src/http/modules/ngx_http_ssl_module.c1
-rw-r--r--src/http/modules/ngx_http_ssl_module.h1
-rw-r--r--src/http/modules/ngx_http_static_module.c1
-rw-r--r--src/http/modules/ngx_http_stub_status_module.c1
-rw-r--r--src/http/modules/ngx_http_sub_filter_module.c1
-rw-r--r--src/http/modules/ngx_http_upstream_ip_hash_module.c1
-rw-r--r--src/http/modules/ngx_http_upstream_keepalive_module.c1
-rw-r--r--src/http/modules/ngx_http_userid_filter_module.c1
-rw-r--r--src/http/modules/ngx_http_uwsgi_module.c1
-rw-r--r--src/http/modules/ngx_http_xslt_filter_module.c1
-rw-r--r--src/http/modules/perl/Makefile.PL1
-rw-r--r--src/http/modules/perl/nginx.pm3
-rw-r--r--src/http/modules/perl/nginx.xs1
-rw-r--r--src/http/modules/perl/ngx_http_perl_module.c1
-rw-r--r--src/http/modules/perl/ngx_http_perl_module.h1
-rw-r--r--src/http/ngx_http.c1
-rw-r--r--src/http/ngx_http.h1
-rw-r--r--src/http/ngx_http_busy_lock.c1
-rw-r--r--src/http/ngx_http_busy_lock.h1
-rw-r--r--src/http/ngx_http_cache.h1
-rw-r--r--src/http/ngx_http_config.h1
-rw-r--r--src/http/ngx_http_copy_filter_module.c3
-rw-r--r--src/http/ngx_http_core_module.c1
-rw-r--r--src/http/ngx_http_core_module.h1
-rw-r--r--src/http/ngx_http_file_cache.c1
-rw-r--r--src/http/ngx_http_header_filter_module.c1
-rw-r--r--src/http/ngx_http_parse.c1
-rw-r--r--src/http/ngx_http_parse_time.c1
-rw-r--r--src/http/ngx_http_postpone_filter_module.c1
-rw-r--r--src/http/ngx_http_request.c1
-rw-r--r--src/http/ngx_http_request.h1
-rw-r--r--src/http/ngx_http_request_body.c1
-rw-r--r--src/http/ngx_http_script.c1
-rw-r--r--src/http/ngx_http_script.h1
-rw-r--r--src/http/ngx_http_special_response.c1
-rw-r--r--src/http/ngx_http_upstream.c1
-rw-r--r--src/http/ngx_http_upstream.h1
-rw-r--r--src/http/ngx_http_upstream_round_robin.c1
-rw-r--r--src/http/ngx_http_upstream_round_robin.h1
-rw-r--r--src/http/ngx_http_variables.c1
-rw-r--r--src/http/ngx_http_variables.h1
-rw-r--r--src/http/ngx_http_write_filter_module.c1
-rw-r--r--src/mail/ngx_mail.c1
-rw-r--r--src/mail/ngx_mail.h1
-rw-r--r--src/mail/ngx_mail_auth_http_module.c1
-rw-r--r--src/mail/ngx_mail_core_module.c1
-rw-r--r--src/mail/ngx_mail_handler.c1
-rw-r--r--src/mail/ngx_mail_imap_handler.c1
-rw-r--r--src/mail/ngx_mail_imap_module.c1
-rw-r--r--src/mail/ngx_mail_imap_module.h1
-rw-r--r--src/mail/ngx_mail_parse.c1
-rw-r--r--src/mail/ngx_mail_pop3_handler.c1
-rw-r--r--src/mail/ngx_mail_pop3_module.c1
-rw-r--r--src/mail/ngx_mail_pop3_module.h1
-rw-r--r--src/mail/ngx_mail_proxy_module.c1
-rw-r--r--src/mail/ngx_mail_smtp_handler.c1
-rw-r--r--src/mail/ngx_mail_smtp_module.c1
-rw-r--r--src/mail/ngx_mail_smtp_module.h1
-rw-r--r--src/mail/ngx_mail_ssl_module.c1
-rw-r--r--src/mail/ngx_mail_ssl_module.h1
-rw-r--r--src/misc/ngx_google_perftools_module.c1
-rw-r--r--src/os/unix/ngx_aio_read.c1
-rw-r--r--src/os/unix/ngx_aio_read_chain.c1
-rw-r--r--src/os/unix/ngx_aio_write.c1
-rw-r--r--src/os/unix/ngx_aio_write_chain.c1
-rw-r--r--src/os/unix/ngx_alloc.c1
-rw-r--r--src/os/unix/ngx_alloc.h1
-rw-r--r--src/os/unix/ngx_atomic.h1
-rw-r--r--src/os/unix/ngx_channel.c1
-rw-r--r--src/os/unix/ngx_channel.h1
-rw-r--r--src/os/unix/ngx_daemon.c1
-rw-r--r--src/os/unix/ngx_darwin.h1
-rw-r--r--src/os/unix/ngx_darwin_config.h1
-rw-r--r--src/os/unix/ngx_darwin_init.c1
-rw-r--r--src/os/unix/ngx_darwin_sendfile_chain.c1
-rw-r--r--src/os/unix/ngx_errno.c1
-rw-r--r--src/os/unix/ngx_errno.h1
-rw-r--r--src/os/unix/ngx_file_aio_read.c28
-rw-r--r--src/os/unix/ngx_files.c1
-rw-r--r--src/os/unix/ngx_files.h1
-rw-r--r--src/os/unix/ngx_freebsd.h1
-rw-r--r--src/os/unix/ngx_freebsd_config.h1
-rw-r--r--src/os/unix/ngx_freebsd_init.c1
-rw-r--r--src/os/unix/ngx_freebsd_rfork_thread.c1
-rw-r--r--src/os/unix/ngx_freebsd_rfork_thread.h1
-rw-r--r--src/os/unix/ngx_freebsd_sendfile_chain.c1
-rw-r--r--src/os/unix/ngx_gcc_atomic_amd64.h1
-rw-r--r--src/os/unix/ngx_gcc_atomic_ppc.h1
-rw-r--r--src/os/unix/ngx_gcc_atomic_sparc64.h1
-rw-r--r--src/os/unix/ngx_gcc_atomic_x86.h1
-rw-r--r--src/os/unix/ngx_linux.h1
-rw-r--r--src/os/unix/ngx_linux_aio_read.c1
-rw-r--r--src/os/unix/ngx_linux_config.h1
-rw-r--r--src/os/unix/ngx_linux_init.c1
-rw-r--r--src/os/unix/ngx_linux_sendfile_chain.c1
-rw-r--r--src/os/unix/ngx_os.h1
-rw-r--r--src/os/unix/ngx_posix_config.h1
-rw-r--r--src/os/unix/ngx_posix_init.c1
-rw-r--r--src/os/unix/ngx_process.c1
-rw-r--r--src/os/unix/ngx_process.h1
-rw-r--r--src/os/unix/ngx_process_cycle.c1
-rw-r--r--src/os/unix/ngx_process_cycle.h1
-rw-r--r--src/os/unix/ngx_pthread_thread.c1
-rw-r--r--src/os/unix/ngx_readv_chain.c1
-rw-r--r--src/os/unix/ngx_recv.c1
-rw-r--r--src/os/unix/ngx_send.c1
-rw-r--r--src/os/unix/ngx_setproctitle.c1
-rw-r--r--src/os/unix/ngx_setproctitle.h1
-rw-r--r--src/os/unix/ngx_shmem.c1
-rw-r--r--src/os/unix/ngx_shmem.h1
-rw-r--r--src/os/unix/ngx_socket.c1
-rw-r--r--src/os/unix/ngx_socket.h1
-rw-r--r--src/os/unix/ngx_solaris.h1
-rw-r--r--src/os/unix/ngx_solaris_config.h1
-rw-r--r--src/os/unix/ngx_solaris_init.c1
-rw-r--r--src/os/unix/ngx_solaris_sendfilev_chain.c1
-rw-r--r--src/os/unix/ngx_sunpro_amd64.il1
-rw-r--r--src/os/unix/ngx_sunpro_atomic_sparc64.h1
-rw-r--r--src/os/unix/ngx_sunpro_sparc64.il1
-rw-r--r--src/os/unix/ngx_sunpro_x86.il1
-rw-r--r--src/os/unix/ngx_thread.h1
-rw-r--r--src/os/unix/ngx_time.c1
-rw-r--r--src/os/unix/ngx_time.h1
-rw-r--r--src/os/unix/ngx_udp_recv.c1
-rw-r--r--src/os/unix/ngx_user.c1
-rw-r--r--src/os/unix/ngx_user.h1
-rw-r--r--src/os/unix/ngx_writev_chain.c1
-rw-r--r--src/os/unix/rfork_thread.S1
325 files changed, 726 insertions, 167 deletions
diff --git a/CHANGES b/CHANGES
index 37af0bc26..8655769d9 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,22 @@
+Changes with nginx 1.1.14 30 Jan 2012
+
+ *) Feature: multiple "limit_req" limits may be used simultaneously.
+
+ *) Bugfix: in error handling while connecting to a backend.
+ Thanks to Piotr Sikora.
+
+ *) Bugfix: in AIO error handling on FreeBSD.
+
+ *) Bugfix: in the OpenSSL library initialization.
+
+ *) Bugfix: the "proxy_redirect" directives might not be correctly
+ inherited.
+
+ *) Bugfix: memory leak during reconfiguration if the "pcre_jit"
+ directive was used.
+
+
Changes with nginx 1.1.13 16 Jan 2012
*) Feature: the "TLSv1.1" and "TLSv1.2" parameters of the
diff --git a/CHANGES.ru b/CHANGES.ru
index cbfe0fc0c..8811c92f2 100644
--- a/CHANGES.ru
+++ b/CHANGES.ru
@@ -1,4 +1,23 @@
+Изменения в nginx 1.1.14 30.01.2012
+
+ *) Добавление: теперь можно указать несколько ограничений limit_req
+ одновременно.
+
+ *) Исправление: в обработке ошибок при соединении с бэкендом.
+ Спасибо Piotr Sikora.
+
+ *) Исправление: в обработке ошибок при использовании AIO на FreeBSD.
+
+ *) Исправление: в инициализации библиотеки OpenSSL.
+
+ *) Исправление: директивы proxy_redirect могли наследоваться
+ некорректно.
+
+ *) Исправление: утечки памяти при переконфигурации, если использовалась
+ директива pcre_jit.
+
+
Изменения в nginx 1.1.13 16.01.2012
*) Добавление: параметры TLSv1.1 и TLSv1.2 в директиве ssl_protocols.
@@ -7,10 +26,10 @@
ошибка появилась в 1.1.12.
*) Исправление: директива proxy_redirect некорректно обрабатывала
- заголовк Refresh при использовании регулярных выражений.
+ заголовок Refresh при использовании регулярных выражений.
*) Исправление: директива proxy_cache_use_stale с параметром error не
- возвращала ответ из кэша, если все бекенды были признаны
+ возвращала ответ из кэша, если все бэкенды были признаны
неработающими.
*) Исправление: директива worker_cpu_affinity могла не работать.
diff --git a/LICENSE b/LICENSE
index 520e9bae9..1bfc054da 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2002-2012 Igor Sysoev
+ * Copyright (C) 2011,2012 Nginx, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/auto/cc/acc b/auto/cc/acc
index f325bc56d..6baee672a 100644
--- a/auto/cc/acc
+++ b/auto/cc/acc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
# aCC: HP ANSI C++ B3910B A.03.55.02
diff --git a/auto/cc/bcc b/auto/cc/bcc
index 9570a3c47..ec82e60fb 100644
--- a/auto/cc/bcc
+++ b/auto/cc/bcc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
# Borland C++ 5.5
diff --git a/auto/cc/ccc b/auto/cc/ccc
index 298f31e99..c96404510 100644
--- a/auto/cc/ccc
+++ b/auto/cc/ccc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
# Compaq C V6.5-207
diff --git a/auto/cc/conf b/auto/cc/conf
index bdcce2c01..c9118f2fd 100644
--- a/auto/cc/conf
+++ b/auto/cc/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
LINK="\$(CC)"
diff --git a/auto/cc/gcc b/auto/cc/gcc
index 8ea1f5846..de666a34c 100644
--- a/auto/cc/gcc
+++ b/auto/cc/gcc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
# gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2
diff --git a/auto/cc/icc b/auto/cc/icc
index 77cf180df..1d83ed37a 100644
--- a/auto/cc/icc
+++ b/auto/cc/icc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
# Intel C++ compiler 7.1, 8.0, 8.1, 9.0, 11.1
diff --git a/auto/cc/msvc b/auto/cc/msvc
index 01d6f7f2f..a99d5a92c 100644
--- a/auto/cc/msvc
+++ b/auto/cc/msvc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
# MSVC 6.0 SP2
diff --git a/auto/cc/name b/auto/cc/name
index 8788bc662..598f879a0 100644
--- a/auto/cc/name
+++ b/auto/cc/name
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
if [ "$NGX_PLATFORM" != win32 ]; then
diff --git a/auto/cc/owc b/auto/cc/owc
index 39c180a26..22eb4c125 100644
--- a/auto/cc/owc
+++ b/auto/cc/owc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
# Open Watcom C 1.0, 1.2, 1.3
diff --git a/auto/cc/sunc b/auto/cc/sunc
index 69e6c2c71..dd9ccedfb 100644
--- a/auto/cc/sunc
+++ b/auto/cc/sunc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
# Sun C 5.7 Patch 117837-04 2005/05/11 Sun Studio 10
diff --git a/auto/define b/auto/define
index 971f99df2..b5a762259 100644
--- a/auto/define
+++ b/auto/define
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
cat << END >> $NGX_AUTO_CONFIG_H
diff --git a/auto/endianess b/auto/endianess
index 5ed22a8ec..452dd7c12 100644
--- a/auto/endianess
+++ b/auto/endianess
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
echo $ngx_n "checking for system endianess ...$ngx_c"
diff --git a/auto/feature b/auto/feature
index 98e757caf..c13e51dfb 100644
--- a/auto/feature
+++ b/auto/feature
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
echo $ngx_n "checking for $ngx_feature ...$ngx_c"
diff --git a/auto/have b/auto/have
index 1b644ad32..f8e3751c5 100644
--- a/auto/have
+++ b/auto/have
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
cat << END >> $NGX_AUTO_CONFIG_H
diff --git a/auto/have_headers b/auto/have_headers
index 526ac47d4..a3a75430a 100644
--- a/auto/have_headers
+++ b/auto/have_headers
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
cat << END >> $NGX_AUTO_HEADERS_H
diff --git a/auto/headers b/auto/headers
index 6f5225f81..5a2e6b902 100644
--- a/auto/headers
+++ b/auto/headers
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
ngx_include="unistd.h"; . auto/include
diff --git a/auto/include b/auto/include
index 3a047d303..3466fda15 100644
--- a/auto/include
+++ b/auto/include
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
echo $ngx_n "checking for $ngx_include ...$ngx_c"
diff --git a/auto/init b/auto/init
index 56ecb1908..910f5294b 100644
--- a/auto/init
+++ b/auto/init
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
NGX_MAKEFILE=$NGX_OBJS/Makefile
diff --git a/auto/install b/auto/install
index 2b1002472..c2c0ade59 100644
--- a/auto/install
+++ b/auto/install
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
if [ $USE_PERL = YES ]; then
diff --git a/auto/lib/conf b/auto/lib/conf
index 357e7810d..e1e447557 100644
--- a/auto/lib/conf
+++ b/auto/lib/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
if [ $USE_PCRE = YES -o $PCRE != NONE ]; then
diff --git a/auto/lib/geoip/conf b/auto/lib/geoip/conf
index 5647e9167..3764d7649 100644
--- a/auto/lib/geoip/conf
+++ b/auto/lib/geoip/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
ngx_feature="GeoIP library"
diff --git a/auto/lib/google-perftools/conf b/auto/lib/google-perftools/conf
index 67df9f8ac..398ddd05e 100644
--- a/auto/lib/google-perftools/conf
+++ b/auto/lib/google-perftools/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
ngx_feature="Google perftools"
diff --git a/auto/lib/libatomic/conf b/auto/lib/libatomic/conf
index 5cf16f381..d1e484ab3 100644
--- a/auto/lib/libatomic/conf
+++ b/auto/lib/libatomic/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
if [ $NGX_LIBATOMIC != YES ]; then
diff --git a/auto/lib/libatomic/make b/auto/lib/libatomic/make
index e1672e324..b84267b63 100644
--- a/auto/lib/libatomic/make
+++ b/auto/lib/libatomic/make
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
cat << END >> $NGX_MAKEFILE
diff --git a/auto/lib/libgd/conf b/auto/lib/libgd/conf
index 637872370..b0bc74c15 100644
--- a/auto/lib/libgd/conf
+++ b/auto/lib/libgd/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
ngx_feature="GD library"
diff --git a/auto/lib/libxslt/conf b/auto/lib/libxslt/conf
index 8c9ea8ba1..bc19d83dd 100644
--- a/auto/lib/libxslt/conf
+++ b/auto/lib/libxslt/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
ngx_feature="libxslt"
diff --git a/auto/lib/make b/auto/lib/make
index f22767eb4..58a84a34c 100644
--- a/auto/lib/make
+++ b/auto/lib/make
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
if [ $PCRE != NONE -a $PCRE != NO -a $PCRE != YES ]; then
diff --git a/auto/lib/md5/conf b/auto/lib/md5/conf
index 9afe5b8de..f9c1ed902 100644
--- a/auto/lib/md5/conf
+++ b/auto/lib/md5/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
if [ $MD5 != NONE ]; then
diff --git a/auto/lib/md5/make b/auto/lib/md5/make
index 60af28cca..81f138ab6 100644
--- a/auto/lib/md5/make
+++ b/auto/lib/md5/make
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
case "$NGX_CC_NAME" in
diff --git a/auto/lib/md5/makefile.bcc b/auto/lib/md5/makefile.bcc
index c02ef95bd..eb6fb6241 100644
--- a/auto/lib/md5/makefile.bcc
+++ b/auto/lib/md5/makefile.bcc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
CFLAGS = -q -O2 -tWM $(CPU_OPT) -DL_ENDIAN
diff --git a/auto/lib/md5/makefile.msvc b/auto/lib/md5/makefile.msvc
index 233da0fb5..90d62fac7 100644
--- a/auto/lib/md5/makefile.msvc
+++ b/auto/lib/md5/makefile.msvc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT) -D L_ENDIAN
diff --git a/auto/lib/md5/makefile.owc b/auto/lib/md5/makefile.owc
index c36c9369f..78c1e61dd 100644
--- a/auto/lib/md5/makefile.owc
+++ b/auto/lib/md5/makefile.owc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
CFLAGS = -zq -bt=nt -bm -ot -op -oi -oe -s $(CPU_OPT)
diff --git a/auto/lib/openssl/conf b/auto/lib/openssl/conf
index 8218a5b97..528ee1794 100644
--- a/auto/lib/openssl/conf
+++ b/auto/lib/openssl/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
if [ $OPENSSL != NONE ]; then
diff --git a/auto/lib/openssl/make b/auto/lib/openssl/make
index a2025bbd6..9090fcbfd 100644
--- a/auto/lib/openssl/make
+++ b/auto/lib/openssl/make
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
case "$CC" in
diff --git a/auto/lib/openssl/makefile.bcc b/auto/lib/openssl/makefile.bcc
index 5938cbf6b..6a94ff749 100644
--- a/auto/lib/openssl/makefile.bcc
+++ b/auto/lib/openssl/makefile.bcc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
all:
diff --git a/auto/lib/openssl/makefile.msvc b/auto/lib/openssl/makefile.msvc
index 379b95dc0..fc9e57864 100644
--- a/auto/lib/openssl/makefile.msvc
+++ b/auto/lib/openssl/makefile.msvc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
all:
diff --git a/auto/lib/pcre/conf b/auto/lib/pcre/conf
index fd98ee9f5..c56848d5d 100644
--- a/auto/lib/pcre/conf
+++ b/auto/lib/pcre/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
if [ $PCRE != NONE ]; then
diff --git a/auto/lib/pcre/make b/auto/lib/pcre/make
index a9be75e36..834779b9c 100644
--- a/auto/lib/pcre/make
+++ b/auto/lib/pcre/make
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
case "$NGX_CC_NAME" in
diff --git a/auto/lib/pcre/makefile.bcc b/auto/lib/pcre/makefile.bcc
index 40d579fb5..1c140d668 100644
--- a/auto/lib/pcre/makefile.bcc
+++ b/auto/lib/pcre/makefile.bcc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
CFLAGS = -q -O2 -tWM -w-8004 $(CPU_OPT)
diff --git a/auto/lib/pcre/makefile.msvc b/auto/lib/pcre/makefile.msvc
index 47ae6991a..7a8da7158 100644
--- a/auto/lib/pcre/makefile.msvc
+++ b/auto/lib/pcre/makefile.msvc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
CFLAGS = -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT)
diff --git a/auto/lib/pcre/makefile.owc b/auto/lib/pcre/makefile.owc
index b2f1d1297..bfb692068 100644
--- a/auto/lib/pcre/makefile.owc
+++ b/auto/lib/pcre/makefile.owc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
CFLAGS = -c -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT)
diff --git a/auto/lib/perl/conf b/auto/lib/perl/conf
index 3f7b90849..52c7084e9 100644
--- a/auto/lib/perl/conf
+++ b/auto/lib/perl/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
echo "checking for perl"
diff --git a/auto/lib/perl/make b/auto/lib/perl/make
index 49eb5cf34..f5d9ab501 100644
--- a/auto/lib/perl/make
+++ b/auto/lib/perl/make
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
cat << END >> $NGX_MAKEFILE
diff --git a/auto/lib/sha1/conf b/auto/lib/sha1/conf
index af3d3fba2..1e644c02f 100644
--- a/auto/lib/sha1/conf
+++ b/auto/lib/sha1/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
if [ $SHA1 != NONE ]; then
diff --git a/auto/lib/sha1/make b/auto/lib/sha1/make
index 6c89acf1b..fc10aaef3 100644
--- a/auto/lib/sha1/make
+++ b/auto/lib/sha1/make
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
case "$NGX_CC_NAME" in
diff --git a/auto/lib/sha1/makefile.bcc b/auto/lib/sha1/makefile.bcc
index 1d8b5e4c8..b0685fa45 100644
--- a/auto/lib/sha1/makefile.bcc
+++ b/auto/lib/sha1/makefile.bcc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
CFLAGS = -q -O2 -tWM $(CPU_OPT) -DL_ENDIAN
diff --git a/auto/lib/sha1/makefile.msvc b/auto/lib/sha1/makefile.msvc
index 4abd366ca..3cbd21b3d 100644
--- a/auto/lib/sha1/makefile.msvc
+++ b/auto/lib/sha1/makefile.msvc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT) -D L_ENDIAN
diff --git a/auto/lib/sha1/makefile.owc b/auto/lib/sha1/makefile.owc
index c1a3e0431..fc095cc98 100644
--- a/auto/lib/sha1/makefile.owc
+++ b/auto/lib/sha1/makefile.owc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
CFLAGS = -zq -bt=nt -bm -ot -op -oi -oe -s $(CPU_OPT)
diff --git a/auto/lib/test b/auto/lib/test
index 6821b51da..907e2353b 100644
--- a/auto/lib/test
+++ b/auto/lib/test
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
echo $ngx_n "checking for $ngx_lib ...$ngx_c"
diff --git a/auto/lib/zlib/conf b/auto/lib/zlib/conf
index 843dd5a55..cefc874b2 100644
--- a/auto/lib/zlib/conf
+++ b/auto/lib/zlib/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
if [ $ZLIB != NONE ]; then
diff --git a/auto/lib/zlib/make b/auto/lib/zlib/make
index b874b04ad..9401a1d1a 100644
--- a/auto/lib/zlib/make
+++ b/auto/lib/zlib/make
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
case "$NGX_CC_NAME" in
diff --git a/auto/lib/zlib/makefile.bcc b/auto/lib/zlib/makefile.bcc
index 69a728c76..56f835688 100644
--- a/auto/lib/zlib/makefile.bcc
+++ b/auto/lib/zlib/makefile.bcc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
CFLAGS = -q -O2 -tWM -w-8004 -w-8012 $(CPU_OPT)
diff --git a/auto/lib/zlib/makefile.msvc b/auto/lib/zlib/makefile.msvc
index d02f2b68e..2c7c1ae10 100644
--- a/auto/lib/zlib/makefile.msvc
+++ b/auto/lib/zlib/makefile.msvc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT)
diff --git a/auto/lib/zlib/makefile.owc b/auto/lib/zlib/makefile.owc
index 738e9a01b..f75e66d4f 100644
--- a/auto/lib/zlib/makefile.owc
+++ b/auto/lib/zlib/makefile.owc
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
CFLAGS = -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT)
diff --git a/auto/make b/auto/make
index 27f71ecdc..e7f549040 100644
--- a/auto/make
+++ b/auto/make
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
echo "creating $NGX_MAKEFILE"
diff --git a/auto/modules b/auto/modules
index 93e0de995..dab660f87 100644
--- a/auto/modules
+++ b/auto/modules
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
if [ $EVENT_SELECT = NO -a $EVENT_FOUND = NO ]; then
diff --git a/auto/nohave b/auto/nohave
index bb5632aaf..dfb171837 100644
--- a/auto/nohave
+++ b/auto/nohave
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
cat << END >> $NGX_AUTO_CONFIG_H
diff --git a/auto/options b/auto/options
index 2b040238e..393be4066 100644
--- a/auto/options
+++ b/auto/options
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
help=no
diff --git a/auto/os/conf b/auto/os/conf
index f4d08cb42..8c18a63fc 100644
--- a/auto/os/conf
+++ b/auto/os/conf
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
echo "checking for $NGX_SYSTEM specific features"
diff --git a/auto/os/darwin b/auto/os/darwin
index f9953b95c..590e03697 100644
--- a/auto/os/darwin
+++ b/auto/os/darwin
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
have=NGX_DARWIN . auto/have_headers
diff --git a/auto/os/freebsd b/auto/os/freebsd
index 082938800..88654ba60 100644
--- a/auto/os/freebsd
+++ b/auto/os/freebsd
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
have=NGX_FREEBSD . auto/have_headers
diff --git a/auto/os/linux b/auto/os/linux
index 394cd87bc..0b2173cae 100644
--- a/auto/os/linux
+++ b/auto/os/linux
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
have=NGX_LINUX . auto/have_headers
diff --git a/auto/os/solaris b/auto/os/solaris
index 333f0aebd..16da4b3fd 100644
--- a/auto/os/solaris
+++ b/auto/os/solaris
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
have=NGX_SOLARIS . auto/have_headers
diff --git a/auto/os/win32 b/auto/os/win32
index 02b261cea..21a54ba11 100644
--- a/auto/os/win32
+++ b/auto/os/win32
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
have=NGX_WIN32 . auto/have_headers
diff --git a/auto/sources b/auto/sources
index 38b3f40af..c48c3adf4 100644
--- a/auto/sources
+++ b/auto/sources
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
CORE_MODULES="ngx_core_module ngx_errlog_module ngx_conf_module"
diff --git a/auto/stubs b/auto/stubs
index 0031eaf87..d8bc1f0e0 100644
--- a/auto/stubs
+++ b/auto/stubs
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
have=NGX_SUPPRESS_WARN . auto/have
diff --git a/auto/summary b/auto/summary
index c65946c31..dcebec9f0 100644
--- a/auto/summary
+++ b/auto/summary
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
### STUB
diff --git a/auto/types/sizeof b/auto/types/sizeof
index 4d65dca16..e84a0905e 100644
--- a/auto/types/sizeof
+++ b/auto/types/sizeof
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
echo $ngx_n "checking for $ngx_type size ...$ngx_c"
diff --git a/auto/types/typedef b/auto/types/typedef
index 884ef25d7..f121e8fc2 100644
--- a/auto/types/typedef
+++ b/auto/types/typedef
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
echo $ngx_n "checking for $ngx_type ...$ngx_c"
diff --git a/auto/types/uintptr_t b/auto/types/uintptr_t
index 55024b820..07f7e7d7d 100644
--- a/auto/types/uintptr_t
+++ b/auto/types/uintptr_t
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
echo $ngx_n "checking for uintptr_t ...$ngx_c"
diff --git a/auto/types/value b/auto/types/value
index 698ba7d92..ac88a3919 100644
--- a/auto/types/value
+++ b/auto/types/value
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
cat << END >> $NGX_AUTO_CONFIG_H
diff --git a/auto/unix b/auto/unix
index 67b7a9083..398b9bec4 100755
--- a/auto/unix
+++ b/auto/unix
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
NGX_USER=${NGX_USER:-nobody}
diff --git a/configure b/configure
index 6be54f7b2..45ea15473 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,7 @@
#!/bin/sh
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
. auto/options
diff --git a/man/nginx.8 b/man/nginx.8
index aba20c1a3..587fb457f 100644
--- a/man/nginx.8
+++ b/man/nginx.8
@@ -1,5 +1,6 @@
.\"
.\" Copyright (c) 2010 Sergey A. Osokin
+.\" Copyright (c) 2011,2012 Nginx, Inc.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
diff --git a/src/core/nginx.c b/src/core/nginx.c
index 5de48351a..e8fcbaeba 100644
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/nginx.h b/src/core/nginx.h
index a67b6c2aa..3105fa349 100644
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
@@ -8,8 +9,8 @@
#define _NGINX_H_INCLUDED_
-#define nginx_version 1001013
-#define NGINX_VERSION "1.1.13"
+#define nginx_version 1001014
+#define NGINX_VERSION "1.1.14"
#define NGINX_VER "nginx/" NGINX_VERSION
#define NGINX_VAR "NGINX"
diff --git a/src/core/ngx_array.c b/src/core/ngx_array.c
index a536d87b5..4627a9912 100644
--- a/src/core/ngx_array.c
+++ b/src/core/ngx_array.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_array.h b/src/core/ngx_array.h
index 00206cb1b..6a60e3088 100644
--- a/src/core/ngx_array.h
+++ b/src/core/ngx_array.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_buf.c b/src/core/ngx_buf.c
index 53cd50cea..835c76ced 100644
--- a/src/core/ngx_buf.c
+++ b/src/core/ngx_buf.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_buf.h b/src/core/ngx_buf.h
index a6bf39ff3..ffc531094 100644
--- a/src/core/ngx_buf.h
+++ b/src/core/ngx_buf.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_conf_file.c b/src/core/ngx_conf_file.c
index 689b7e7a2..832650141 100644
--- a/src/core/ngx_conf_file.c
+++ b/src/core/ngx_conf_file.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_conf_file.h b/src/core/ngx_conf_file.h
index 86c60a43c..e92668cd4 100644
--- a/src/core/ngx_conf_file.h
+++ b/src/core/ngx_conf_file.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_config.h b/src/core/ngx_config.h
index 9762b18ca..b0cb17fca 100644
--- a/src/core/ngx_config.h
+++ b/src/core/ngx_config.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c
index 9dc551090..6e09eb80a 100644
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_connection.h b/src/core/ngx_connection.h
index 9e3ca52fb..34af12e4f 100644
--- a/src/core/ngx_connection.h
+++ b/src/core/ngx_connection.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_core.h b/src/core/ngx_core.h
index 9f1790153..1ae55163d 100644
--- a/src/core/ngx_core.h
+++ b/src/core/ngx_core.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_cpuinfo.c b/src/core/ngx_cpuinfo.c
index 39a6b05a0..72053192f 100644
--- a/src/core/ngx_cpuinfo.c
+++ b/src/core/ngx_cpuinfo.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_crc.h b/src/core/ngx_crc.h
index c77f037ab..35981bc15 100644
--- a/src/core/ngx_crc.h
+++ b/src/core/ngx_crc.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_crc32.c b/src/core/ngx_crc32.c
index 624510cee..a5b4017b8 100644
--- a/src/core/ngx_crc32.c
+++ b/src/core/ngx_crc32.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_crc32.h b/src/core/ngx_crc32.h
index 4435e4517..f6d6865b5 100644
--- a/src/core/ngx_crc32.h
+++ b/src/core/ngx_crc32.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_crypt.h b/src/core/ngx_crypt.h
index 45ef81d4b..386911428 100644
--- a/src/core/ngx_crypt.h
+++ b/src/core/ngx_crypt.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c
index 525ef41d7..2da0bf91a 100644
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_cycle.h b/src/core/ngx_cycle.h
index e14983d6f..dbc6e195e 100644
--- a/src/core/ngx_cycle.h
+++ b/src/core/ngx_cycle.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_file.c b/src/core/ngx_file.c
index 7704c3e17..ce3a0a282 100644
--- a/src/core/ngx_file.c
+++ b/src/core/ngx_file.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_file.h b/src/core/ngx_file.h
index 88035172d..7023e6778 100644
--- a/src/core/ngx_file.h
+++ b/src/core/ngx_file.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_hash.c b/src/core/ngx_hash.c
index 74d89b8b9..7d04f7484 100644
--- a/src/core/ngx_hash.c
+++ b/src/core/ngx_hash.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_hash.h b/src/core/ngx_hash.h
index beabcb7c3..abc3cbe5d 100644
--- a/src/core/ngx_hash.h
+++ b/src/core/ngx_hash.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_inet.c b/src/core/ngx_inet.c
index 4baa74aee..2785c8c8c 100644
--- a/src/core/ngx_inet.c
+++ b/src/core/ngx_inet.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_inet.h b/src/core/ngx_inet.h
index 0b42abd8a..c5a3d7677 100644
--- a/src/core/ngx_inet.h
+++ b/src/core/ngx_inet.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_list.c b/src/core/ngx_list.c
index 84bc00263..89ea82352 100644
--- a/src/core/ngx_list.c
+++ b/src/core/ngx_list.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_list.h b/src/core/ngx_list.h
index 75db86886..e0fe6436b 100644
--- a/src/core/ngx_list.h
+++ b/src/core/ngx_list.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_log.c b/src/core/ngx_log.c
index e7d597e7e..d7830fb4b 100644
--- a/src/core/ngx_log.c
+++ b/src/core/ngx_log.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_log.h b/src/core/ngx_log.h
index 9e00e30ee..323364786 100644
--- a/src/core/ngx_log.h
+++ b/src/core/ngx_log.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_md5.h b/src/core/ngx_md5.h
index 45a1011bb..18d09d6d5 100644
--- a/src/core/ngx_md5.h
+++ b/src/core/ngx_md5.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_murmurhash.h b/src/core/ngx_murmurhash.h
index ae40779d4..2b2b70d6c 100644
--- a/src/core/ngx_murmurhash.h
+++ b/src/core/ngx_murmurhash.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_open_file_cache.c b/src/core/ngx_open_file_cache.c
index 0d605b527..9ac552111 100644
--- a/src/core/ngx_open_file_cache.c
+++ b/src/core/ngx_open_file_cache.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_open_file_cache.h b/src/core/ngx_open_file_cache.h
index 638bc5dd1..436de3060 100644
--- a/src/core/ngx_open_file_cache.h
+++ b/src/core/ngx_open_file_cache.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_output_chain.c b/src/core/ngx_output_chain.c
index e45f0342d..3cb60ea73 100644
--- a/src/core/ngx_output_chain.c
+++ b/src/core/ngx_output_chain.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_palloc.c b/src/core/ngx_palloc.c
index 9eac114b7..efbc24452 100644
--- a/src/core/ngx_palloc.c
+++ b/src/core/ngx_palloc.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_palloc.h b/src/core/ngx_palloc.h
index 6e6612cca..d65282910 100644
--- a/src/core/ngx_palloc.h
+++ b/src/core/ngx_palloc.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_parse.c b/src/core/ngx_parse.c
index dff59ff60..da24f4c75 100644
--- a/src/core/ngx_parse.c
+++ b/src/core/ngx_parse.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_parse.h b/src/core/ngx_parse.h
index e770623fd..0c8114fb6 100644
--- a/src/core/ngx_parse.h
+++ b/src/core/ngx_parse.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_queue.c b/src/core/ngx_queue.c
index a49b5c663..3cacaf3a8 100644
--- a/src/core/ngx_queue.c
+++ b/src/core/ngx_queue.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_queue.h b/src/core/ngx_queue.h
index 9a1763d7b..038bf1211 100644
--- a/src/core/ngx_queue.h
+++ b/src/core/ngx_queue.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_radix_tree.c b/src/core/ngx_radix_tree.c
index f339e6fab..b95cbc013 100644
--- a/src/core/ngx_radix_tree.c
+++ b/src/core/ngx_radix_tree.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_radix_tree.h b/src/core/ngx_radix_tree.h
index 02a9f383b..65ee69b26 100644
--- a/src/core/ngx_radix_tree.h
+++ b/src/core/ngx_radix_tree.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_rbtree.c b/src/core/ngx_rbtree.c
index 749b601f2..6ae4d5c05 100644
--- a/src/core/ngx_rbtree.c
+++ b/src/core/ngx_rbtree.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_rbtree.h b/src/core/ngx_rbtree.h
index 8531afcea..6e47a5bbb 100644
--- a/src/core/ngx_rbtree.h
+++ b/src/core/ngx_rbtree.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_regex.c b/src/core/ngx_regex.c
index fc5296ac1..677f862bf 100644
--- a/src/core/ngx_regex.c
+++ b/src/core/ngx_regex.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
@@ -15,6 +16,9 @@ typedef struct {
static void * ngx_libc_cdecl ngx_regex_malloc(size_t size);
static void ngx_libc_cdecl ngx_regex_free(void *p);
+#if (NGX_HAVE_PCRE_JIT)
+static void ngx_pcre_free_studies(void *data);
+#endif
static ngx_int_t ngx_regex_module_init(ngx_cycle_t *cycle);
@@ -273,6 +277,41 @@ ngx_regex_free(void *p)
}
+#if (NGX_HAVE_PCRE_JIT)
+
+static void
+ngx_pcre_free_studies(void *data)
+{
+ ngx_list_t *studies = data;
+
+ ngx_uint_t i;
+ ngx_list_part_t *part;
+ ngx_regex_elt_t *elts;
+
+ part = &studies->part;
+ elts = part->elts;
+
+ for (i = 0 ; /* void */ ; i++) {
+
+ if (i >= part->nelts) {
+ if (part->next == NULL) {
+ break;
+ }
+
+ part = part->next;
+ elts = part->elts;
+ i = 0;
+ }
+
+ if (elts[i].regex->extra != NULL) {
+ pcre_free_study(elts[i].regex->extra);
+ }
+ }
+}
+
+#endif
+
+
static ngx_int_t
ngx_regex_module_init(ngx_cycle_t *cycle)
{
@@ -286,12 +325,27 @@ ngx_regex_module_init(ngx_cycle_t *cycle)
#if (NGX_HAVE_PCRE_JIT)
{
- ngx_regex_conf_t *rcf;
+ ngx_regex_conf_t *rcf;
+ ngx_pool_cleanup_t *cln;
rcf = (ngx_regex_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_regex_module);
if (rcf->pcre_jit) {
opt = PCRE_STUDY_JIT_COMPILE;
+
+ /*
+ * The PCRE JIT compiler uses mmap for its executable codes, so we
+ * have to explicitly call the pcre_free_study() function to free
+ * this memory.
+ */
+
+ cln = ngx_pool_cleanup_add(cycle->pool, 0);
+ if (cln == NULL) {
+ return NGX_ERROR;
+ }
+
+ cln->handler = ngx_pcre_free_studies;
+ cln->data = ngx_pcre_studies;
}
}
#endif
@@ -402,7 +456,7 @@ ngx_regex_pcre_jit(ngx_conf_t *cf, void *post, void *data)
}
#else
ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
- "nginx was build without PCRE JIT support");
+ "nginx was built without PCRE JIT support");
*fp = 0;
#endif
diff --git a/src/core/ngx_regex.h b/src/core/ngx_regex.h
index 52d059e5c..55bd331bb 100644
--- a/src/core/ngx_regex.h
+++ b/src/core/ngx_regex.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c
index d4af2f016..6ab0ddb51 100644
--- a/src/core/ngx_resolver.c
+++ b/src/core/ngx_resolver.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_resolver.h b/src/core/ngx_resolver.h
index a2ddbefae..ae34ca56d 100644
--- a/src/core/ngx_resolver.h
+++ b/src/core/ngx_resolver.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_sha1.h b/src/core/ngx_sha1.h
index f158fd4dc..81c909e2f 100644
--- a/src/core/ngx_sha1.h
+++ b/src/core/ngx_sha1.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_shmtx.c b/src/core/ngx_shmtx.c
index 8a3178e61..085294a91 100644
--- a/src/core/ngx_shmtx.c
+++ b/src/core/ngx_shmtx.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_shmtx.h b/src/core/ngx_shmtx.h
index 3ee7d3a79..830b6f5b1 100644
--- a/src/core/ngx_shmtx.h
+++ b/src/core/ngx_shmtx.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_slab.c b/src/core/ngx_slab.c
index c7b687649..3d5660377 100644
--- a/src/core/ngx_slab.c
+++ b/src/core/ngx_slab.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
#include <ngx_config.h>
diff --git a/src/core/ngx_slab.h b/src/core/ngx_slab.h
index 202fd9380..c5e420bfa 100644
--- a/src/core/ngx_slab.h
+++ b/src/core/ngx_slab.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_spinlock.c b/src/core/ngx_spinlock.c
index f6c80f769..9c93afaf1 100644
--- a/src/core/ngx_spinlock.c
+++ b/src/core/ngx_spinlock.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_string.c b/src/core/ngx_string.c
index f5e1d4bf3..1dec96cc4 100644
--- a/src/core/ngx_string.c
+++ b/src/core/ngx_string.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_string.h b/src/core/ngx_string.h
index 2b9c59a5e..fa386ca72 100644
--- a/src/core/ngx_string.h
+++ b/src/core/ngx_string.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_times.c b/src/core/ngx_times.c
index f1685aaf6..745a4bd1b 100644
--- a/src/core/ngx_times.c
+++ b/src/core/ngx_times.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/core/ngx_times.h b/src/core/ngx_times.h
index 7f2fafd54..c4b26a2ed 100644
--- a/src/core/ngx_times.h
+++ b/src/core/ngx_times.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/modules/ngx_aio_module.c b/src/event/modules/ngx_aio_module.c
index 71f7d40c6..c881319d1 100644
--- a/src/event/modules/ngx_aio_module.c
+++ b/src/event/modules/ngx_aio_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/modules/ngx_devpoll_module.c b/src/event/modules/ngx_devpoll_module.c
index e88c999b8..d09b5bc07 100644
--- a/src/event/modules/ngx_devpoll_module.c
+++ b/src/event/modules/ngx_devpoll_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/modules/ngx_epoll_module.c b/src/event/modules/ngx_epoll_module.c
index f4003af70..ddf178927 100644
--- a/src/event/modules/ngx_epoll_module.c
+++ b/src/event/modules/ngx_epoll_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/modules/ngx_eventport_module.c b/src/event/modules/ngx_eventport_module.c
index f4f0119a5..0bfb47e5c 100644
--- a/src/event/modules/ngx_eventport_module.c
+++ b/src/event/modules/ngx_eventport_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index d78e56259..c0f70752f 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/modules/ngx_poll_module.c b/src/event/modules/ngx_poll_module.c
index ea947b7e5..ed64bc51a 100644
--- a/src/event/modules/ngx_poll_module.c
+++ b/src/event/modules/ngx_poll_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/modules/ngx_rtsig_module.c b/src/event/modules/ngx_rtsig_module.c
index 4b011007b..2f0f9970f 100644
--- a/src/event/modules/ngx_rtsig_module.c
+++ b/src/event/modules/ngx_rtsig_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/modules/ngx_select_module.c b/src/event/modules/ngx_select_module.c
index 72dbe74bd..ed71368e9 100644
--- a/src/event/modules/ngx_select_module.c
+++ b/src/event/modules/ngx_select_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/modules/ngx_win32_select_module.c b/src/event/modules/ngx_win32_select_module.c
index 3d75d69a9..0a02ffca0 100644
--- a/src/event/modules/ngx_win32_select_module.c
+++ b/src/event/modules/ngx_win32_select_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index 7d297d96b..3d83b8e75 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event.h b/src/event/ngx_event.h
index 778da529d..aa2183a22 100644
--- a/src/event/ngx_event.h
+++ b/src/event/ngx_event.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c
index 2355d1bda..a45afeb1f 100644
--- a/src/event/ngx_event_accept.c
+++ b/src/event/ngx_event_accept.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event_busy_lock.c b/src/event/ngx_event_busy_lock.c
index 249e20563..fdac0da8f 100644
--- a/src/event/ngx_event_busy_lock.c
+++ b/src/event/ngx_event_busy_lock.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event_busy_lock.h b/src/event/ngx_event_busy_lock.h
index 3e767704a..254c233e7 100644
--- a/src/event/ngx_event_busy_lock.h
+++ b/src/event/ngx_event_busy_lock.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event_connect.c b/src/event/ngx_event_connect.c
index fb8fd2110..978f39b42 100644
--- a/src/event/ngx_event_connect.c
+++ b/src/event/ngx_event_connect.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
@@ -159,6 +160,9 @@ ngx_event_connect_peer(ngx_peer_connection_t *pc)
ngx_log_error(level, c->log, err, "connect() to %V failed",
pc->name);
+ ngx_close_connection(c);
+ pc->connection = NULL;
+
return NGX_DECLINED;
}
}
@@ -240,12 +244,8 @@ ngx_event_connect_peer(ngx_peer_connection_t *pc)
failed:
- ngx_free_connection(c);
-
- if (ngx_close_socket(s) == -1) {
- ngx_log_error(NGX_LOG_ALERT, pc->log, ngx_socket_errno,
- ngx_close_socket_n " failed");
- }
+ ngx_close_connection(c);
+ pc->connection = NULL;
return NGX_ERROR;
}
diff --git a/src/event/ngx_event_connect.h b/src/event/ngx_event_connect.h
index d64f1bb10..951c24f41 100644
--- a/src/event/ngx_event_connect.h
+++ b/src/event/ngx_event_connect.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event_mutex.c b/src/event/ngx_event_mutex.c
index 2335e5baf..2bdfd5b4e 100644
--- a/src/event/ngx_event_mutex.c
+++ b/src/event/ngx_event_mutex.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index 43d34a622..f393334ad 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
@@ -91,8 +92,6 @@ ngx_ssl_init(ngx_log_t *log)
SSL_library_init();
SSL_load_error_strings();
- ENGINE_load_builtin_engines();
-
OpenSSL_add_all_algorithms();
ngx_ssl_connection_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
diff --git a/src/event/ngx_event_openssl.h b/src/event/ngx_event_openssl.h
index 0b5b7c8de..cd6d88518 100644
--- a/src/event/ngx_event_openssl.h
+++ b/src/event/ngx_event_openssl.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event_pipe.c b/src/event/ngx_event_pipe.c
index c389f2eba..62358ead1 100644
--- a/src/event/ngx_event_pipe.c
+++ b/src/event/ngx_event_pipe.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event_pipe.h b/src/event/ngx_event_pipe.h
index 8f55431e8..f24e6d148 100644
--- a/src/event/ngx_event_pipe.h
+++ b/src/event/ngx_event_pipe.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event_posted.c b/src/event/ngx_event_posted.c
index a7b09fdd6..e548145ed 100644
--- a/src/event/ngx_event_posted.c
+++ b/src/event/ngx_event_posted.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event_posted.h b/src/event/ngx_event_posted.h
index f9c55e5a3..abd2e261d 100644
--- a/src/event/ngx_event_posted.h
+++ b/src/event/ngx_event_posted.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c
index 76a1a1f41..7a8107209 100644
--- a/src/event/ngx_event_timer.c
+++ b/src/event/ngx_event_timer.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/event/ngx_event_timer.h b/src/event/ngx_event_timer.h
index 61ffeaefe..ec9b316bd 100644
--- a/src/event/ngx_event_timer.h
+++ b/src/event/ngx_event_timer.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_access_module.c b/src/http/modules/ngx_http_access_module.c
index a28ebf7b7..84a75d777 100644
--- a/src/http/modules/ngx_http_access_module.c
+++ b/src/http/modules/ngx_http_access_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_addition_filter_module.c b/src/http/modules/ngx_http_addition_filter_module.c
index 9b22a0a12..24747c564 100644
--- a/src/http/modules/ngx_http_addition_filter_module.c
+++ b/src/http/modules/ngx_http_addition_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_auth_basic_module.c b/src/http/modules/ngx_http_auth_basic_module.c
index 45168de84..ec3b1cf95 100644
--- a/src/http/modules/ngx_http_auth_basic_module.c
+++ b/src/http/modules/ngx_http_auth_basic_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_autoindex_module.c b/src/http/modules/ngx_http_autoindex_module.c
index bd7388126..9b54d0cf9 100644
--- a/src/http/modules/ngx_http_autoindex_module.c
+++ b/src/http/modules/ngx_http_autoindex_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_browser_module.c b/src/http/modules/ngx_http_browser_module.c
index d400fec7f..13a714538 100644
--- a/src/http/modules/ngx_http_browser_module.c
+++ b/src/http/modules/ngx_http_browser_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_charset_filter_module.c b/src/http/modules/ngx_http_charset_filter_module.c
index a6f9afcae..27a00d09a 100644
--- a/src/http/modules/ngx_http_charset_filter_module.c
+++ b/src/http/modules/ngx_http_charset_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_chunked_filter_module.c b/src/http/modules/ngx_http_chunked_filter_module.c
index e6ae1c99d..94313a8f6 100644
--- a/src/http/modules/ngx_http_chunked_filter_module.c
+++ b/src/http/modules/ngx_http_chunked_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_dav_module.c b/src/http/modules/ngx_http_dav_module.c
index 3bd9d3e94..dbb17ac30 100644
--- a/src/http/modules/ngx_http_dav_module.c
+++ b/src/http/modules/ngx_http_dav_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_degradation_module.c b/src/http/modules/ngx_http_degradation_module.c
index a5f83bb20..0b1368f3b 100644
--- a/src/http/modules/ngx_http_degradation_module.c
+++ b/src/http/modules/ngx_http_degradation_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_empty_gif_module.c b/src/http/modules/ngx_http_empty_gif_module.c
index 7cef538ac..04114dc3f 100644
--- a/src/http/modules/ngx_http_empty_gif_module.c
+++ b/src/http/modules/ngx_http_empty_gif_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
#include <ngx_config.h>
diff --git a/src/http/modules/ngx_http_fastcgi_module.c b/src/http/modules/ngx_http_fastcgi_module.c
index 4a62f7197..78ebadc05 100644
--- a/src/http/modules/ngx_http_fastcgi_module.c
+++ b/src/http/modules/ngx_http_fastcgi_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_flv_module.c b/src/http/modules/ngx_http_flv_module.c
index 30af834ab..f6870235b 100644
--- a/src/http/modules/ngx_http_flv_module.c
+++ b/src/http/modules/ngx_http_flv_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
#include <ngx_config.h>
diff --git a/src/http/modules/ngx_http_geo_module.c b/src/http/modules/ngx_http_geo_module.c
index 7c5019605..1d7599e55 100644
--- a/src/http/modules/ngx_http_geo_module.c
+++ b/src/http/modules/ngx_http_geo_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_geoip_module.c b/src/http/modules/ngx_http_geoip_module.c
index 311a30ce3..60d67574d 100644
--- a/src/http/modules/ngx_http_geoip_module.c
+++ b/src/http/modules/ngx_http_geoip_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_gzip_filter_module.c b/src/http/modules/ngx_http_gzip_filter_module.c
index 18824059a..4429e01ba 100644
--- a/src/http/modules/ngx_http_gzip_filter_module.c
+++ b/src/http/modules/ngx_http_gzip_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_gzip_static_module.c b/src/http/modules/ngx_http_gzip_static_module.c
index 9e3b1ad66..18c28d8f5 100644
--- a/src/http/modules/ngx_http_gzip_static_module.c
+++ b/src/http/modules/ngx_http_gzip_static_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_headers_filter_module.c b/src/http/modules/ngx_http_headers_filter_module.c
index 754473355..daa17623c 100644
--- a/src/http/modules/ngx_http_headers_filter_module.c
+++ b/src/http/modules/ngx_http_headers_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_image_filter_module.c b/src/http/modules/ngx_http_image_filter_module.c
index 66ed34541..dd3c9cee5 100644
--- a/src/http/modules/ngx_http_image_filter_module.c
+++ b/src/http/modules/ngx_http_image_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_index_module.c b/src/http/modules/ngx_http_index_module.c
index 15aeaf9c6..0835a7cf8 100644
--- a/src/http/modules/ngx_http_index_module.c
+++ b/src/http/modules/ngx_http_index_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_limit_conn_module.c b/src/http/modules/ngx_http_limit_conn_module.c
index 40f05a22e..f98e7bc51 100644
--- a/src/http/modules/ngx_http_limit_conn_module.c
+++ b/src/http/modules/ngx_http_limit_conn_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_limit_req_module.c b/src/http/modules/ngx_http_limit_req_module.c
index 779b397c2..e4d90a98f 100644
--- a/src/http/modules/ngx_http_limit_req_module.c
+++ b/src/http/modules/ngx_http_limit_req_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
@@ -17,6 +18,7 @@ typedef struct {
ngx_msec_t last;
/* integer value, 1 corresponds to 0.001 r/s */
ngx_uint_t excess;
+ ngx_uint_t count;
u_char data[1];
} ngx_http_limit_req_node_t;
@@ -35,6 +37,7 @@ typedef struct {
ngx_uint_t rate;
ngx_int_t index;
ngx_str_t var;
+ ngx_http_limit_req_node_t *node;
} ngx_http_limit_req_ctx_t;
@@ -42,16 +45,23 @@ typedef struct {
ngx_shm_zone_t *shm_zone;
/* integer value, 1 corresponds to 0.001 r/s */
ngx_uint_t burst;
+ ngx_uint_t nodelay; /* unsigned nodelay:1 */
+} ngx_http_limit_req_limit_t;
+
+
+typedef struct {
+ ngx_array_t limits;
ngx_uint_t limit_log_level;
ngx_uint_t delay_log_level;
-
- ngx_uint_t nodelay; /* unsigned nodelay:1 */
} ngx_http_limit_req_conf_t;
static void ngx_http_limit_req_delay(ngx_http_request_t *r);
-static ngx_int_t ngx_http_limit_req_lookup(ngx_http_limit_req_conf_t *lrcf,
- ngx_uint_t hash, u_char *data, size_t len, ngx_uint_t *ep);
+static ngx_int_t ngx_http_limit_req_lookup(ngx_http_limit_req_limit_t *limit,
+ ngx_uint_t hash, u_char *data, size_t len, ngx_uint_t *ep,
+ ngx_uint_t account);
+static ngx_msec_t ngx_http_limit_req_account(ngx_http_limit_req_limit_t *limits,
+ ngx_uint_t n, ngx_uint_t *ep, ngx_http_limit_req_limit_t **limit);
static void ngx_http_limit_req_expire(ngx_http_limit_req_ctx_t *ctx,
ngx_uint_t n);
@@ -135,123 +145,124 @@ ngx_module_t ngx_http_limit_req_module = {
static ngx_int_t
ngx_http_limit_req_handler(ngx_http_request_t *r)
{
- size_t len, n;
- uint32_t hash;
- ngx_int_t rc;
- ngx_uint_t excess;
- ngx_time_t *tp;
- ngx_rbtree_node_t *node;
- ngx_http_variable_value_t *vv;
- ngx_http_limit_req_ctx_t *ctx;
- ngx_http_limit_req_node_t *lr;
- ngx_http_limit_req_conf_t *lrcf;
+ size_t len;
+ uint32_t hash;
+ ngx_int_t rc;
+ ngx_uint_t n, excess;
+ ngx_msec_t delay;
+ ngx_http_variable_value_t *vv;
+ ngx_http_limit_req_ctx_t *ctx;
+ ngx_http_limit_req_conf_t *lrcf;
+ ngx_http_limit_req_limit_t *limit, *limits;
if (r->main->limit_req_set) {
return NGX_DECLINED;
}
lrcf = ngx_http_get_module_loc_conf(r, ngx_http_limit_req_module);
+ limits = lrcf->limits.elts;
- if (lrcf->shm_zone == NULL) {
- return NGX_DECLINED;
- }
+ excess = 0;
- ctx = lrcf->shm_zone->data;
+ rc = NGX_DECLINED;
- vv = ngx_http_get_indexed_variable(r, ctx->index);
+#if (NGX_SUPPRESS_WARN)
+ limit = NULL;
+#endif
- if (vv == NULL || vv->not_found) {
- return NGX_DECLINED;
- }
+ for (n = 0; n < lrcf->limits.nelts; n++) {
- len = vv->len;
+ limit = &limits[n];
- if (len == 0) {
- return NGX_DECLINED;
- }
+ ctx = limit->shm_zone->data;
- if (len > 65535) {
- ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
- "the value of the \"%V\" variable "
- "is more than 65535 bytes: \"%v\"",
- &ctx->var, vv);
- return NGX_DECLINED;
- }
+ vv = ngx_http_get_indexed_variable(r, ctx->index);
- r->main->limit_req_set = 1;
-
- hash = ngx_crc32_short(vv->data, len);
+ if (vv == NULL || vv->not_found) {
+ continue;
+ }
- ngx_shmtx_lock(&ctx->shpool->mutex);
+ len = vv->len;
- ngx_http_limit_req_expire(ctx, 1);
+ if (len == 0) {
+ continue;
+ }
- rc = ngx_http_limit_req_lookup(lrcf, hash, vv->data, len, &excess);
+ if (len > 65535) {
+ ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
+ "the value of the \"%V\" variable "
+ "is more than 65535 bytes: \"%v\"",
+ &ctx->var, vv);
+ continue;
+ }
- ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
- "limit_req: %i %ui.%03ui", rc, excess / 1000, excess % 1000);
+ hash = ngx_crc32_short(vv->data, len);
- if (rc == NGX_DECLINED) {
+ ngx_shmtx_lock(&ctx->shpool->mutex);
- n = offsetof(ngx_rbtree_node_t, color)
- + offsetof(ngx_http_limit_req_node_t, data)
- + len;
+ rc = ngx_http_limit_req_lookup(limit, hash, vv->data, len, &excess,
+ (n == lrcf->limits.nelts - 1));
- node = ngx_slab_alloc_locked(ctx->shpool, n);
- if (node == NULL) {
+ ngx_shmtx_unlock(&ctx->shpool->mutex);
- ngx_http_limit_req_expire(ctx, 0);
+ ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "limit_req[%ui]: %i %ui.%03ui",
+ n, rc, excess / 1000, excess % 1000);
- node = ngx_slab_alloc_locked(ctx->shpool, n);
- if (node == NULL) {
- ngx_shmtx_unlock(&ctx->shpool->mutex);
- return NGX_HTTP_SERVICE_UNAVAILABLE;
- }
+ if (rc != NGX_AGAIN) {
+ break;
}
+ }
- lr = (ngx_http_limit_req_node_t *) &node->color;
+ if (rc == NGX_DECLINED) {
+ return NGX_DECLINED;
+ }
- node->key = hash;
- lr->len = (u_char) len;
+ r->main->limit_req_set = 1;
- tp = ngx_timeofday();
- lr->last = (ngx_msec_t) (tp->sec * 1000 + tp->msec);
+ if (rc == NGX_BUSY || rc == NGX_ERROR) {
- lr->excess = 0;
- ngx_memcpy(lr->data, vv->data, len);
+ if (rc == NGX_BUSY) {
+ ngx_log_error(lrcf->limit_log_level, r->connection->log, 0,
+ "limiting requests, excess: %ui.%03ui by zone \"%V\"",
+ excess / 1000, excess % 1000,
+ &limit->shm_zone->shm.name);
+ }
- ngx_rbtree_insert(&ctx->sh->rbtree, node);
+ while (n--) {
+ ctx = limits[n].shm_zone->data;
- ngx_queue_insert_head(&ctx->sh->queue, &lr->queue);
+ if (ctx->node == NULL) {
+ continue;
+ }
- ngx_shmtx_unlock(&ctx->shpool->mutex);
+ ngx_shmtx_lock(&ctx->shpool->mutex);
- return NGX_DECLINED;
- }
+ ctx->node->count--;
- ngx_shmtx_unlock(&ctx->shpool->mutex);
+ ngx_shmtx_unlock(&ctx->shpool->mutex);
- if (rc == NGX_OK) {
- return NGX_DECLINED;
+ ctx->node = NULL;
+ }
+
+ return NGX_HTTP_SERVICE_UNAVAILABLE;
}
- if (rc == NGX_BUSY) {
- ngx_log_error(lrcf->limit_log_level, r->connection->log, 0,
- "limiting requests, excess: %ui.%03ui by zone \"%V\"",
- excess / 1000, excess % 1000, &lrcf->shm_zone->shm.name);
+ /* rc == NGX_AGAIN || rc == NGX_OK */
- return NGX_HTTP_SERVICE_UNAVAILABLE;
+ if (rc == NGX_AGAIN) {
+ excess = 0;
}
- /* rc == NGX_AGAIN */
+ delay = ngx_http_limit_req_account(limits, n, &excess, &limit);
- if (lrcf->nodelay) {
+ if (!delay) {
return NGX_DECLINED;
}
ngx_log_error(lrcf->delay_log_level, r->connection->log, 0,
"delaying request, excess: %ui.%03ui, by zone \"%V\"",
- excess / 1000, excess % 1000, &lrcf->shm_zone->shm.name);
+ excess / 1000, excess % 1000, &limit->shm_zone->shm.name);
if (ngx_handle_read_event(r->connection->read, 0) != NGX_OK) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
@@ -259,8 +270,7 @@ ngx_http_limit_req_handler(ngx_http_request_t *r)
r->read_event_handler = ngx_http_test_reading;
r->write_event_handler = ngx_http_limit_req_delay;
- ngx_add_timer(r->connection->write,
- (ngx_msec_t) excess * 1000 / ctx->rate);
+ ngx_add_timer(r->connection->write, delay);
return NGX_AGAIN;
}
@@ -341,9 +351,10 @@ ngx_http_limit_req_rbtree_insert_value(ngx_rbtree_node_t *temp,
static ngx_int_t
-ngx_http_limit_req_lookup(ngx_http_limit_req_conf_t *lrcf, ngx_uint_t hash,
- u_char *data, size_t len, ngx_uint_t *ep)
+ngx_http_limit_req_lookup(ngx_http_limit_req_limit_t *limit, ngx_uint_t hash,
+ u_char *data, size_t len, ngx_uint_t *ep, ngx_uint_t account)
{
+ size_t size;
ngx_int_t rc, excess;
ngx_time_t *tp;
ngx_msec_t now;
@@ -352,7 +363,10 @@ ngx_http_limit_req_lookup(ngx_http_limit_req_conf_t *lrcf, ngx_uint_t hash,
ngx_http_limit_req_ctx_t *ctx;
ngx_http_limit_req_node_t *lr;
- ctx = lrcf->shm_zone->data;
+ tp = ngx_timeofday();
+ now = (ngx_msec_t) (tp->sec * 1000 + tp->msec);
+
+ ctx = limit->shm_zone->data;
node = ctx->sh->rbtree.root;
sentinel = ctx->sh->rbtree.sentinel;
@@ -380,9 +394,6 @@ ngx_http_limit_req_lookup(ngx_http_limit_req_conf_t *lrcf, ngx_uint_t hash,
ngx_queue_remove(&lr->queue);
ngx_queue_insert_head(&ctx->sh->queue, &lr->queue);
- tp = ngx_timeofday();
-
- now = (ngx_msec_t) (tp->sec * 1000 + tp->msec);
ms = (ngx_msec_int_t) (now - lr->last);
excess = lr->excess - ctx->rate * ngx_abs(ms) / 1000 + 1000;
@@ -393,18 +404,21 @@ ngx_http_limit_req_lookup(ngx_http_limit_req_conf_t *lrcf, ngx_uint_t hash,
*ep = excess;
- if ((ngx_uint_t) excess > lrcf->burst) {
+ if ((ngx_uint_t) excess > limit->burst) {
return NGX_BUSY;
}
- lr->excess = excess;
- lr->last = now;
-
- if (excess) {
- return NGX_AGAIN;
+ if (account) {
+ lr->excess = excess;
+ lr->last = now;
+ return NGX_OK;
}
- return NGX_OK;
+ lr->count++;
+
+ ctx->node = lr;
+
+ return NGX_AGAIN;
}
node = (rc < 0) ? node->left : node->right;
@@ -416,7 +430,115 @@ ngx_http_limit_req_lookup(ngx_http_limit_req_conf_t *lrcf, ngx_uint_t hash,
*ep = 0;
- return NGX_DECLINED;
+ size = offsetof(ngx_rbtree_node_t, color)
+ + offsetof(ngx_http_limit_req_node_t, data)
+ + len;
+
+ ngx_http_limit_req_expire(ctx, 1);
+
+ node = ngx_slab_alloc_locked(ctx->shpool, size);
+
+ if (node == NULL) {
+ ngx_http_limit_req_expire(ctx, 0);
+
+ node = ngx_slab_alloc_locked(ctx->shpool, size);
+ if (node == NULL) {
+ return NGX_ERROR;
+ }
+ }
+
+ node->key = hash;
+
+ ngx_rbtree_insert(&ctx->sh->rbtree, node);
+
+ lr = (ngx_http_limit_req_node_t *) &node->color;
+
+ ngx_queue_insert_head(&ctx->sh->queue, &lr->queue);
+
+ lr->len = (u_char) len;
+ lr->excess = 0;
+
+ ngx_memcpy(lr->data, data, len);
+
+ if (account) {
+ lr->last = now;
+ lr->count = 0;
+ return NGX_OK;
+ }
+
+ lr->last = 0;
+ lr->count = 1;
+
+ ctx->node = lr;
+
+ return NGX_AGAIN;
+}
+
+
+static ngx_msec_t
+ngx_http_limit_req_account(ngx_http_limit_req_limit_t *limits, ngx_uint_t n,
+ ngx_uint_t *ep, ngx_http_limit_req_limit_t **limit)
+{
+ ngx_int_t excess;
+ ngx_time_t *tp;
+ ngx_msec_t now, delay, max_delay;
+ ngx_msec_int_t ms;
+ ngx_http_limit_req_ctx_t *ctx;
+ ngx_http_limit_req_node_t *lr;
+
+ excess = *ep;
+
+ if (excess == 0 || (*limit)->nodelay) {
+ max_delay = 0;
+
+ } else {
+ ctx = (*limit)->shm_zone->data;
+ max_delay = excess * 1000 / ctx->rate;
+ }
+
+ while (n--) {
+ ctx = limits[n].shm_zone->data;
+ lr = ctx->node;
+
+ if (lr == NULL) {
+ continue;
+ }
+
+ ngx_shmtx_lock(&ctx->shpool->mutex);
+
+ tp = ngx_timeofday();
+
+ now = (ngx_msec_t) (tp->sec * 1000 + tp->msec);
+ ms = (ngx_msec_int_t) (now - lr->last);
+
+ excess = lr->excess - ctx->rate * ngx_abs(ms) / 1000 + 1000;
+
+ if (excess < 0) {
+ excess = 0;
+ }
+
+ lr->last = now;
+ lr->excess = excess;
+ lr->count--;
+
+ ngx_shmtx_unlock(&ctx->shpool->mutex);
+
+ ctx->node = NULL;
+
+ if (limits[n].nodelay) {
+ continue;
+ }
+
+ delay = excess * 1000 / ctx->rate;
+
+ if (delay > max_delay) {
+ max_delay = delay;
+ *ep = excess;
+ *limit = &limits[n];
+ }
+ }
+
+ return max_delay;
}
@@ -451,6 +573,16 @@ ngx_http_limit_req_expire(ngx_http_limit_req_ctx_t *ctx, ngx_uint_t n)
lr = ngx_queue_data(q, ngx_http_limit_req_node_t, queue);
+ if (lr->count) {
+
+ /*
+ * There is not much sense in looking further,
+ * because we bump nodes on the lookup stage.
+ */
+
+ return;
+ }
+
if (n++ != 0) {
ms = (ngx_msec_int_t) (now - lr->last);
@@ -551,9 +683,7 @@ ngx_http_limit_req_create_conf(ngx_conf_t *cf)
/*
* set by ngx_pcalloc():
*
- * conf->shm_zone = NULL;
- * conf->burst = 0;
- * conf->nodelay = 0;
+ * conf->limits.elts = NULL;
*/
conf->limit_log_level = NGX_CONF_UNSET_UINT;
@@ -568,10 +698,8 @@ ngx_http_limit_req_merge_conf(ngx_conf_t *cf, void *parent, void *child)
ngx_http_limit_req_conf_t *prev = parent;
ngx_http_limit_req_conf_t *conf = child;
- if (conf->shm_zone == NULL) {
- conf->shm_zone = prev->shm_zone;
- conf->burst = prev->burst;
- conf->nodelay = prev->nodelay;
+ if (conf->limits.elts == NULL) {
+ conf->limits = prev->limits;
}
ngx_conf_merge_uint_value(conf->limit_log_level, prev->limit_log_level,
@@ -588,7 +716,8 @@ static char *
ngx_http_limit_req_zone(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
u_char *p;
- size_t size, len;
+ size_t len;
+ ssize_t size;
ngx_str_t *value, name, s;
ngx_int_t rate, scale;
ngx_uint_t i;
@@ -611,25 +740,32 @@ ngx_http_limit_req_zone(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
p = (u_char *) ngx_strchr(name.data, ':');
- if (p) {
- *p = '\0';
+ if (p == NULL) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "invalid zone size \"%V\"", &value[i]);
+ return NGX_CONF_ERROR;
+ }
- name.len = p - name.data;
+ name.len = p - name.data;
- p++;
+ s.data = p + 1;
+ s.len = value[i].data + value[i].len - s.data;
- s.len = value[i].data + value[i].len - p;
- s.data = p;
+ size = ngx_parse_size(&s);
- size = ngx_parse_size(&s);
- if (size > 8191) {
- continue;
- }
+ if (size == NGX_ERROR) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "invalid zone size \"%V\"", &value[i]);
+ return NGX_CONF_ERROR;
}
- ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
- "invalid zone size \"%V\"", &value[i]);
- return NGX_CONF_ERROR;
+ if (size < (ssize_t) (8 * ngx_pagesize)) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "zone \"%V\" is too small", &value[i]);
+ return NGX_CONF_ERROR;
+ }
+
+ continue;
}
if (ngx_strncmp(value[i].data, "rate=", 5) == 0) {
@@ -681,7 +817,7 @@ ngx_http_limit_req_zone(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
return NGX_CONF_ERROR;
}
- if (name.len == 0 || size == 0) {
+ if (name.len == 0) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"\"%V\" must have \"zone\" parameter",
&cmd->name);
@@ -690,8 +826,8 @@ ngx_http_limit_req_zone(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
if (ctx == NULL) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
- "no variable is defined for limit_req_zone \"%V\"",
- &cmd->name);
+ "no variable is defined for %V \"%V\"",
+ &cmd->name, &name);
return NGX_CONF_ERROR;
}
@@ -707,8 +843,8 @@ ngx_http_limit_req_zone(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
ctx = shm_zone->data;
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
- "limit_req_zone \"%V\" is already bound to variable \"%V\"",
- &value[1], &ctx->var);
+ "%V \"%V\" is already bound to variable \"%V\"",
+ &cmd->name, &name, &ctx->var);
return NGX_CONF_ERROR;
}
@@ -724,17 +860,17 @@ ngx_http_limit_req(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
ngx_http_limit_req_conf_t *lrcf = conf;
- ngx_int_t burst;
- ngx_str_t *value, s;
- ngx_uint_t i;
-
- if (lrcf->shm_zone) {
- return "is duplicate";
- }
+ ngx_int_t burst;
+ ngx_str_t *value, s;
+ ngx_uint_t i, nodelay;
+ ngx_shm_zone_t *shm_zone;
+ ngx_http_limit_req_limit_t *limit, *limits;
value = cf->args->elts;
+ shm_zone = NULL;
burst = 0;
+ nodelay = 0;
for (i = 1; i < cf->args->nelts; i++) {
@@ -743,9 +879,9 @@ ngx_http_limit_req(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
s.len = value[i].len - 5;
s.data = value[i].data + 5;
- lrcf->shm_zone = ngx_shared_memory_add(cf, &s, 0,
- &ngx_http_limit_req_module);
- if (lrcf->shm_zone == NULL) {
+ shm_zone = ngx_shared_memory_add(cf, &s, 0,
+ &ngx_http_limit_req_module);
+ if (shm_zone == NULL) {
return NGX_CONF_ERROR;
}
@@ -765,7 +901,7 @@ ngx_http_limit_req(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
}
if (ngx_strncmp(value[i].data, "nodelay", 7) == 0) {
- lrcf->nodelay = 1;
+ nodelay = 1;
continue;
}
@@ -774,21 +910,42 @@ ngx_http_limit_req(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
return NGX_CONF_ERROR;
}
- if (lrcf->shm_zone == NULL) {
+ if (shm_zone == NULL) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"\"%V\" must have \"zone\" parameter",
&cmd->name);
return NGX_CONF_ERROR;
}
- if (lrcf->shm_zone->data == NULL) {
+ if (shm_zone->data == NULL) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"unknown limit_req_zone \"%V\"",
- &lrcf->shm_zone->shm.name);
+ &shm_zone->shm.name);
return NGX_CONF_ERROR;
}
- lrcf->burst = burst * 1000;
+ limits = lrcf->limits.elts;
+
+ if (limits == NULL) {
+ if (ngx_array_init(&lrcf->limits, cf->pool, 1,
+ sizeof(ngx_http_limit_req_limit_t))
+ != NGX_OK)
+ {
+ return NGX_CONF_ERROR;
+ }
+ }
+
+ for (i = 0; i < lrcf->limits.nelts; i++) {
+ if (shm_zone == limits[i].shm_zone) {
+ return "is duplicate";
+ }
+ }
+
+ limit = ngx_array_push(&lrcf->limits);
+
+ limit->shm_zone = shm_zone;
+ limit->burst = burst * 1000;
+ limit->nodelay = nodelay;
return NGX_CONF_OK;
}
diff --git a/src/http/modules/ngx_http_log_module.c b/src/http/modules/ngx_http_log_module.c
index cb9c77f6f..c55131772 100644
--- a/src/http/modules/ngx_http_log_module.c
+++ b/src/http/modules/ngx_http_log_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_map_module.c b/src/http/modules/ngx_http_map_module.c
index 6b724b304..2fe925f1c 100644
--- a/src/http/modules/ngx_http_map_module.c
+++ b/src/http/modules/ngx_http_map_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_memcached_module.c b/src/http/modules/ngx_http_memcached_module.c
index dbe0fe838..be45d4eeb 100644
--- a/src/http/modules/ngx_http_memcached_module.c
+++ b/src/http/modules/ngx_http_memcached_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_mp4_module.c b/src/http/modules/ngx_http_mp4_module.c
index 6de7c8fea..816cc4c83 100644
--- a/src/http/modules/ngx_http_mp4_module.c
+++ b/src/http/modules/ngx_http_mp4_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
#include <ngx_config.h>
diff --git a/src/http/modules/ngx_http_not_modified_filter_module.c b/src/http/modules/ngx_http_not_modified_filter_module.c
index a778c70dc..488c36b72 100644
--- a/src/http/modules/ngx_http_not_modified_filter_module.c
+++ b/src/http/modules/ngx_http_not_modified_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_proxy_module.c b/src/http/modules/ngx_http_proxy_module.c
index b6aa38b53..fb86f0106 100644
--- a/src/http/modules/ngx_http_proxy_module.c
+++ b/src/http/modules/ngx_http_proxy_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
@@ -3291,6 +3292,8 @@ ngx_http_proxy_redirect(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
return NGX_CONF_OK;
}
+ plcf->redirect = 1;
+
value = cf->args->elts;
if (cf->args->nelts == 2) {
diff --git a/src/http/modules/ngx_http_random_index_module.c b/src/http/modules/ngx_http_random_index_module.c
index 02bdc45f9..67f34f739 100644
--- a/src/http/modules/ngx_http_random_index_module.c
+++ b/src/http/modules/ngx_http_random_index_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_range_filter_module.c b/src/http/modules/ngx_http_range_filter_module.c
index 02d2bf925..3380e5e0e 100644
--- a/src/http/modules/ngx_http_range_filter_module.c
+++ b/src/http/modules/ngx_http_range_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_realip_module.c b/src/http/modules/ngx_http_realip_module.c
index b88b12242..bb606beb7 100644
--- a/src/http/modules/ngx_http_realip_module.c
+++ b/src/http/modules/ngx_http_realip_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_referer_module.c b/src/http/modules/ngx_http_referer_module.c
index cf2d744f1..d8a014c5b 100644
--- a/src/http/modules/ngx_http_referer_module.c
+++ b/src/http/modules/ngx_http_referer_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_rewrite_module.c b/src/http/modules/ngx_http_rewrite_module.c
index 2ef24405c..98da67f27 100644
--- a/src/http/modules/ngx_http_rewrite_module.c
+++ b/src/http/modules/ngx_http_rewrite_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_scgi_module.c b/src/http/modules/ngx_http_scgi_module.c
index 2ab9ee85c..538557377 100644
--- a/src/http/modules/ngx_http_scgi_module.c
+++ b/src/http/modules/ngx_http_scgi_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
* Copyright (C) Manlio Perillo (manlio.perillo@gmail.com)
*/
diff --git a/src/http/modules/ngx_http_secure_link_module.c b/src/http/modules/ngx_http_secure_link_module.c
index 6c4be6191..b69b5526f 100644
--- a/src/http/modules/ngx_http_secure_link_module.c
+++ b/src/http/modules/ngx_http_secure_link_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_split_clients_module.c b/src/http/modules/ngx_http_split_clients_module.c
index 0b726f777..f2160b149 100644
--- a/src/http/modules/ngx_http_split_clients_module.c
+++ b/src/http/modules/ngx_http_split_clients_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_ssi_filter_module.c b/src/http/modules/ngx_http_ssi_filter_module.c
index e33782166..b02300f39 100644
--- a/src/http/modules/ngx_http_ssi_filter_module.c
+++ b/src/http/modules/ngx_http_ssi_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_ssi_filter_module.h b/src/http/modules/ngx_http_ssi_filter_module.h
index 2b0018662..0bd01a067 100644
--- a/src/http/modules/ngx_http_ssi_filter_module.h
+++ b/src/http/modules/ngx_http_ssi_filter_module.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_ssl_module.c b/src/http/modules/ngx_http_ssl_module.c
index 17a5b8de2..d759489a6 100644
--- a/src/http/modules/ngx_http_ssl_module.c
+++ b/src/http/modules/ngx_http_ssl_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_ssl_module.h b/src/http/modules/ngx_http_ssl_module.h
index 0a5dd1d8d..58659ab95 100644
--- a/src/http/modules/ngx_http_ssl_module.h
+++ b/src/http/modules/ngx_http_ssl_module.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_static_module.c b/src/http/modules/ngx_http_static_module.c
index cea050a94..a0e302ad1 100644
--- a/src/http/modules/ngx_http_static_module.c
+++ b/src/http/modules/ngx_http_static_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_stub_status_module.c b/src/http/modules/ngx_http_stub_status_module.c
index 4b74eb884..f78086981 100644
--- a/src/http/modules/ngx_http_stub_status_module.c
+++ b/src/http/modules/ngx_http_stub_status_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_sub_filter_module.c b/src/http/modules/ngx_http_sub_filter_module.c
index ddc69ba52..be5e90c4e 100644
--- a/src/http/modules/ngx_http_sub_filter_module.c
+++ b/src/http/modules/ngx_http_sub_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_upstream_ip_hash_module.c b/src/http/modules/ngx_http_upstream_ip_hash_module.c
index 4c031eb47..100ea34dd 100644
--- a/src/http/modules/ngx_http_upstream_ip_hash_module.c
+++ b/src/http/modules/ngx_http_upstream_ip_hash_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_upstream_keepalive_module.c b/src/http/modules/ngx_http_upstream_keepalive_module.c
index 945f78b15..6fd9ac70a 100644
--- a/src/http/modules/ngx_http_upstream_keepalive_module.c
+++ b/src/http/modules/ngx_http_upstream_keepalive_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Maxim Dounin
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_userid_filter_module.c b/src/http/modules/ngx_http_userid_filter_module.c
index 195d9dc4f..894e2c14e 100644
--- a/src/http/modules/ngx_http_userid_filter_module.c
+++ b/src/http/modules/ngx_http_userid_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_uwsgi_module.c b/src/http/modules/ngx_http_uwsgi_module.c
index f28d9aa0f..73bbdda4d 100644
--- a/src/http/modules/ngx_http_uwsgi_module.c
+++ b/src/http/modules/ngx_http_uwsgi_module.c
@@ -3,6 +3,7 @@
* Copyright (C) Unbit S.a.s. 2009-2010
* Copyright (C) 2008 Manlio Perillo (manlio.perillo@gmail.com)
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/ngx_http_xslt_filter_module.c b/src/http/modules/ngx_http_xslt_filter_module.c
index d67ec8047..f86c30381 100644
--- a/src/http/modules/ngx_http_xslt_filter_module.c
+++ b/src/http/modules/ngx_http_xslt_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/perl/Makefile.PL b/src/http/modules/perl/Makefile.PL
index c33b1fc72..6575f284c 100644
--- a/src/http/modules/perl/Makefile.PL
+++ b/src/http/modules/perl/Makefile.PL
@@ -1,5 +1,6 @@
# Copyright (C) Igor Sysoev
+# Copyright (C) Nginx, Inc.
use 5.006001;
use ExtUtils::MakeMaker;
diff --git a/src/http/modules/perl/nginx.pm b/src/http/modules/perl/nginx.pm
index 01e977646..7f060d745 100644
--- a/src/http/modules/perl/nginx.pm
+++ b/src/http/modules/perl/nginx.pm
@@ -48,7 +48,7 @@ our @EXPORT = qw(
HTTP_INSUFFICIENT_STORAGE
);
-our $VERSION = '1.1.13';
+our $VERSION = '1.1.14';
require XSLoader;
XSLoader::load('nginx', $VERSION);
@@ -128,6 +128,7 @@ Igor Sysoev
=head1 COPYRIGHT AND LICENSE
Copyright (C) Igor Sysoev
+Copyright (C) Nginx, Inc.
=cut
diff --git a/src/http/modules/perl/nginx.xs b/src/http/modules/perl/nginx.xs
index e3a9dd5c9..dc69d509a 100644
--- a/src/http/modules/perl/nginx.xs
+++ b/src/http/modules/perl/nginx.xs
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/perl/ngx_http_perl_module.c b/src/http/modules/perl/ngx_http_perl_module.c
index d89e96a57..90e32e80e 100644
--- a/src/http/modules/perl/ngx_http_perl_module.c
+++ b/src/http/modules/perl/ngx_http_perl_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/modules/perl/ngx_http_perl_module.h b/src/http/modules/perl/ngx_http_perl_module.h
index 23969bcd4..5e60b031e 100644
--- a/src/http/modules/perl/ngx_http_perl_module.h
+++ b/src/http/modules/perl/ngx_http_perl_module.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http.c b/src/http/ngx_http.c
index e10dbc88d..27580f195 100644
--- a/src/http/ngx_http.c
+++ b/src/http/ngx_http.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http.h b/src/http/ngx_http.h
index 3c1a9d275..f152006a0 100644
--- a/src/http/ngx_http.h
+++ b/src/http/ngx_http.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_busy_lock.c b/src/http/ngx_http_busy_lock.c
index fd3824331..35a03acaa 100644
--- a/src/http/ngx_http_busy_lock.c
+++ b/src/http/ngx_http_busy_lock.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_busy_lock.h b/src/http/ngx_http_busy_lock.h
index d793e2966..c676382f2 100644
--- a/src/http/ngx_http_busy_lock.h
+++ b/src/http/ngx_http_busy_lock.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_cache.h b/src/http/ngx_http_cache.h
index ae8b8c376..2a2d72291 100644
--- a/src/http/ngx_http_cache.h
+++ b/src/http/ngx_http_cache.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_config.h b/src/http/ngx_http_config.h
index 435ce9a84..2208c601b 100644
--- a/src/http/ngx_http_config.h
+++ b/src/http/ngx_http_config.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_copy_filter_module.c b/src/http/ngx_http_copy_filter_module.c
index 0f9917e2e..d52fbebe8 100644
--- a/src/http/ngx_http_copy_filter_module.c
+++ b/src/http/ngx_http_copy_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
@@ -189,7 +190,7 @@ ngx_http_copy_filter(ngx_http_request_t *r, ngx_chain_t *in)
rc = n;
- if (file->aio) {
+ if (rc == NGX_AGAIN) {
file->aio->data = r;
file->aio->handler = ngx_http_copy_aio_sendfile_event_handler;
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 1d5ee5dc6..251f932fd 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_core_module.h b/src/http/ngx_http_core_module.h
index 73e39e3b9..38f58dfcb 100644
--- a/src/http/ngx_http_core_module.h
+++ b/src/http/ngx_http_core_module.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_file_cache.c b/src/http/ngx_http_file_cache.c
index dccbbac68..4840233ed 100644
--- a/src/http/ngx_http_file_cache.c
+++ b/src/http/ngx_http_file_cache.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_header_filter_module.c b/src/http/ngx_http_header_filter_module.c
index 2f8a38dad..1d8fee9d7 100644
--- a/src/http/ngx_http_header_filter_module.c
+++ b/src/http/ngx_http_header_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_parse.c b/src/http/ngx_http_parse.c
index 28842cf9d..956259eef 100644
--- a/src/http/ngx_http_parse.c
+++ b/src/http/ngx_http_parse.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_parse_time.c b/src/http/ngx_http_parse_time.c
index 2e7b40add..7d3aeaeff 100644
--- a/src/http/ngx_http_parse_time.c
+++ b/src/http/ngx_http_parse_time.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_postpone_filter_module.c b/src/http/ngx_http_postpone_filter_module.c
index 156401b32..cf49b2fa8 100644
--- a/src/http/ngx_http_postpone_filter_module.c
+++ b/src/http/ngx_http_postpone_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index fbb7915b3..2b3f0065b 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h
index e851efa03..220aa139b 100644
--- a/src/http/ngx_http_request.h
+++ b/src/http/ngx_http_request.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_request_body.c b/src/http/ngx_http_request_body.c
index 817b48e45..ac09d56f1 100644
--- a/src/http/ngx_http_request_body.c
+++ b/src/http/ngx_http_request_body.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_script.c b/src/http/ngx_http_script.c
index 6d81b4435..77ac9a629 100644
--- a/src/http/ngx_http_script.c
+++ b/src/http/ngx_http_script.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_script.h b/src/http/ngx_http_script.h
index c5b1e4066..46592ab01 100644
--- a/src/http/ngx_http_script.h
+++ b/src/http/ngx_http_script.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c
index d30b781e5..a07ebe28d 100644
--- a/src/http/ngx_http_special_response.c
+++ b/src/http/ngx_http_special_response.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c
index 781ef1f96..ba21c0135 100644
--- a/src/http/ngx_http_upstream.c
+++ b/src/http/ngx_http_upstream.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_upstream.h b/src/http/ngx_http_upstream.h
index 62cbf533e..d99b904fb 100644
--- a/src/http/ngx_http_upstream.h
+++ b/src/http/ngx_http_upstream.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_upstream_round_robin.c b/src/http/ngx_http_upstream_round_robin.c
index 138872c5f..410559d50 100644
--- a/src/http/ngx_http_upstream_round_robin.c
+++ b/src/http/ngx_http_upstream_round_robin.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_upstream_round_robin.h b/src/http/ngx_http_upstream_round_robin.h
index 195f4d8ca..4b70f2f5b 100644
--- a/src/http/ngx_http_upstream_round_robin.h
+++ b/src/http/ngx_http_upstream_round_robin.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_variables.c b/src/http/ngx_http_variables.c
index 840519ef9..d6bb92c98 100644
--- a/src/http/ngx_http_variables.c
+++ b/src/http/ngx_http_variables.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_variables.h b/src/http/ngx_http_variables.h
index b0114e300..d2bb4db88 100644
--- a/src/http/ngx_http_variables.h
+++ b/src/http/ngx_http_variables.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/http/ngx_http_write_filter_module.c b/src/http/ngx_http_write_filter_module.c
index a9660ee1f..72b1f9b2f 100644
--- a/src/http/ngx_http_write_filter_module.c
+++ b/src/http/ngx_http_write_filter_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail.c b/src/mail/ngx_mail.c
index 0234d18ef..49ec2e05b 100644
--- a/src/mail/ngx_mail.c
+++ b/src/mail/ngx_mail.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail.h b/src/mail/ngx_mail.h
index ca78d0553..1fceb4285 100644
--- a/src/mail/ngx_mail.h
+++ b/src/mail/ngx_mail.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_auth_http_module.c b/src/mail/ngx_mail_auth_http_module.c
index c82332690..c23c4bad7 100644
--- a/src/mail/ngx_mail_auth_http_module.c
+++ b/src/mail/ngx_mail_auth_http_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_core_module.c b/src/mail/ngx_mail_core_module.c
index 530bc5d49..2fb537a25 100644
--- a/src/mail/ngx_mail_core_module.c
+++ b/src/mail/ngx_mail_core_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_handler.c b/src/mail/ngx_mail_handler.c
index 0e37daf48..a1c4464f7 100644
--- a/src/mail/ngx_mail_handler.c
+++ b/src/mail/ngx_mail_handler.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_imap_handler.c b/src/mail/ngx_mail_imap_handler.c
index f15dbec80..57e2fb77d 100644
--- a/src/mail/ngx_mail_imap_handler.c
+++ b/src/mail/ngx_mail_imap_handler.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_imap_module.c b/src/mail/ngx_mail_imap_module.c
index daf2a433f..dc80b4fb4 100644
--- a/src/mail/ngx_mail_imap_module.c
+++ b/src/mail/ngx_mail_imap_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_imap_module.h b/src/mail/ngx_mail_imap_module.h
index c206ce05a..131b44597 100644
--- a/src/mail/ngx_mail_imap_module.h
+++ b/src/mail/ngx_mail_imap_module.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_parse.c b/src/mail/ngx_mail_parse.c
index 67f4d5edf..ae0f7e39a 100644
--- a/src/mail/ngx_mail_parse.c
+++ b/src/mail/ngx_mail_parse.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_pop3_handler.c b/src/mail/ngx_mail_pop3_handler.c
index 56726dbcf..0a073288d 100644
--- a/src/mail/ngx_mail_pop3_handler.c
+++ b/src/mail/ngx_mail_pop3_handler.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_pop3_module.c b/src/mail/ngx_mail_pop3_module.c
index 648c57ce8..b59747290 100644
--- a/src/mail/ngx_mail_pop3_module.c
+++ b/src/mail/ngx_mail_pop3_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_pop3_module.h b/src/mail/ngx_mail_pop3_module.h
index ce75c2a00..86947a772 100644
--- a/src/mail/ngx_mail_pop3_module.h
+++ b/src/mail/ngx_mail_pop3_module.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_proxy_module.c b/src/mail/ngx_mail_proxy_module.c
index 298e8d96a..4ea608cea 100644
--- a/src/mail/ngx_mail_proxy_module.c
+++ b/src/mail/ngx_mail_proxy_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_smtp_handler.c b/src/mail/ngx_mail_smtp_handler.c
index 0f69ce968..21714239f 100644
--- a/src/mail/ngx_mail_smtp_handler.c
+++ b/src/mail/ngx_mail_smtp_handler.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_smtp_module.c b/src/mail/ngx_mail_smtp_module.c
index 463bb6e0b..cdd4e5eb1 100644
--- a/src/mail/ngx_mail_smtp_module.c
+++ b/src/mail/ngx_mail_smtp_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_smtp_module.h b/src/mail/ngx_mail_smtp_module.h
index 21f2287be..04ffab60a 100644
--- a/src/mail/ngx_mail_smtp_module.h
+++ b/src/mail/ngx_mail_smtp_module.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_ssl_module.c b/src/mail/ngx_mail_ssl_module.c
index fa02409d2..dd6f2ac41 100644
--- a/src/mail/ngx_mail_ssl_module.c
+++ b/src/mail/ngx_mail_ssl_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/mail/ngx_mail_ssl_module.h b/src/mail/ngx_mail_ssl_module.h
index 61a275b36..7f59b38ae 100644
--- a/src/mail/ngx_mail_ssl_module.h
+++ b/src/mail/ngx_mail_ssl_module.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/misc/ngx_google_perftools_module.c b/src/misc/ngx_google_perftools_module.c
index 8be5b97ec..f2f8221b5 100644
--- a/src/misc/ngx_google_perftools_module.c
+++ b/src/misc/ngx_google_perftools_module.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_aio_read.c b/src/os/unix/ngx_aio_read.c
index 1e41bac5f..784988173 100644
--- a/src/os/unix/ngx_aio_read.c
+++ b/src/os/unix/ngx_aio_read.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_aio_read_chain.c b/src/os/unix/ngx_aio_read_chain.c
index 28b9c8fa9..8c831b951 100644
--- a/src/os/unix/ngx_aio_read_chain.c
+++ b/src/os/unix/ngx_aio_read_chain.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_aio_write.c b/src/os/unix/ngx_aio_write.c
index 9138af16a..f0d93918e 100644
--- a/src/os/unix/ngx_aio_write.c
+++ b/src/os/unix/ngx_aio_write.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_aio_write_chain.c b/src/os/unix/ngx_aio_write_chain.c
index 716789690..b0c25085d 100644
--- a/src/os/unix/ngx_aio_write_chain.c
+++ b/src/os/unix/ngx_aio_write_chain.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_alloc.c b/src/os/unix/ngx_alloc.c
index c71a10254..5c2f78702 100644
--- a/src/os/unix/ngx_alloc.c
+++ b/src/os/unix/ngx_alloc.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_alloc.h b/src/os/unix/ngx_alloc.h
index c7a31aa54..655db257f 100644
--- a/src/os/unix/ngx_alloc.h
+++ b/src/os/unix/ngx_alloc.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_atomic.h b/src/os/unix/ngx_atomic.h
index 57826ffcf..104ac376a 100644
--- a/src/os/unix/ngx_atomic.h
+++ b/src/os/unix/ngx_atomic.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_channel.c b/src/os/unix/ngx_channel.c
index a0bdc2b8e..29c69da40 100644
--- a/src/os/unix/ngx_channel.c
+++ b/src/os/unix/ngx_channel.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_channel.h b/src/os/unix/ngx_channel.h
index 365d4394b..d7a9f6b54 100644
--- a/src/os/unix/ngx_channel.h
+++ b/src/os/unix/ngx_channel.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_daemon.c b/src/os/unix/ngx_daemon.c
index 7255b7a7e..f18860bbe 100644
--- a/src/os/unix/ngx_daemon.c
+++ b/src/os/unix/ngx_daemon.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_darwin.h b/src/os/unix/ngx_darwin.h
index ebd8d355d..4d01b26ea 100644
--- a/src/os/unix/ngx_darwin.h
+++ b/src/os/unix/ngx_darwin.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_darwin_config.h b/src/os/unix/ngx_darwin_config.h
index 1717c690f..149778c29 100644
--- a/src/os/unix/ngx_darwin_config.h
+++ b/src/os/unix/ngx_darwin_config.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_darwin_init.c b/src/os/unix/ngx_darwin_init.c
index 6ca1ca750..e3cc5fe3e 100644
--- a/src/os/unix/ngx_darwin_init.c
+++ b/src/os/unix/ngx_darwin_init.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_darwin_sendfile_chain.c b/src/os/unix/ngx_darwin_sendfile_chain.c
index 59d46534b..c86976549 100644
--- a/src/os/unix/ngx_darwin_sendfile_chain.c
+++ b/src/os/unix/ngx_darwin_sendfile_chain.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_errno.c b/src/os/unix/ngx_errno.c
index faae47829..75176c49a 100644
--- a/src/os/unix/ngx_errno.c
+++ b/src/os/unix/ngx_errno.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_errno.h b/src/os/unix/ngx_errno.h
index 3d51f3cfc..092d05a0b 100644
--- a/src/os/unix/ngx_errno.h
+++ b/src/os/unix/ngx_errno.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_file_aio_read.c b/src/os/unix/ngx_file_aio_read.c
index 49662365f..0bb383de5 100644
--- a/src/os/unix/ngx_file_aio_read.c
+++ b/src/os/unix/ngx_file_aio_read.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
@@ -156,24 +157,15 @@ ngx_file_aio_result(ngx_file_t *file, ngx_event_aio_t *aio, ngx_event_t *ev)
return NGX_ERROR;
}
- if (n != 0) {
- if (n == NGX_EINPROGRESS) {
- if (ev->ready) {
- ev->ready = 0;
- ngx_log_error(NGX_LOG_ALERT, file->log, n,
- "aio_read(\"%V\") still in progress",
- &file->name);
- }
-
- return NGX_AGAIN;
+ if (n == NGX_EINPROGRESS) {
+ if (ev->ready) {
+ ev->ready = 0;
+ ngx_log_error(NGX_LOG_ALERT, file->log, n,
+ "aio_read(\"%V\") still in progress",
+ &file->name);
}
- aio->err = n;
- ev->ready = 0;
-
- ngx_log_error(NGX_LOG_CRIT, file->log, n,
- "aio_read(\"%V\") failed", &file->name);
- return NGX_ERROR;
+ return NGX_AGAIN;
}
n = aio_return(&aio->aiocb);
@@ -181,9 +173,9 @@ ngx_file_aio_result(ngx_file_t *file, ngx_event_aio_t *aio, ngx_event_t *ev)
if (n == -1) {
err = ngx_errno;
aio->err = err;
- ev->ready = 0;
+ ev->ready = 1;
- ngx_log_error(NGX_LOG_ALERT, file->log, err,
+ ngx_log_error(NGX_LOG_CRIT, file->log, err,
"aio_return(\"%V\") failed", &file->name);
return NGX_ERROR;
}
diff --git a/src/os/unix/ngx_files.c b/src/os/unix/ngx_files.c
index 196323727..ca5458104 100644
--- a/src/os/unix/ngx_files.c
+++ b/src/os/unix/ngx_files.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_files.h b/src/os/unix/ngx_files.h
index 7c7f1fcd3..abeb1570b 100644
--- a/src/os/unix/ngx_files.h
+++ b/src/os/unix/ngx_files.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_freebsd.h b/src/os/unix/ngx_freebsd.h
index a96f4eb1a..4f93da55c 100644
--- a/src/os/unix/ngx_freebsd.h
+++ b/src/os/unix/ngx_freebsd.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h
index 798f2eacd..460581a7b 100644
--- a/src/os/unix/ngx_freebsd_config.h
+++ b/src/os/unix/ngx_freebsd_config.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_freebsd_init.c b/src/os/unix/ngx_freebsd_init.c
index 8edce42f6..57af44a20 100644
--- a/src/os/unix/ngx_freebsd_init.c
+++ b/src/os/unix/ngx_freebsd_init.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_freebsd_rfork_thread.c b/src/os/unix/ngx_freebsd_rfork_thread.c
index 3c550fb8a..9506b9de3 100644
--- a/src/os/unix/ngx_freebsd_rfork_thread.c
+++ b/src/os/unix/ngx_freebsd_rfork_thread.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_freebsd_rfork_thread.h b/src/os/unix/ngx_freebsd_rfork_thread.h
index 9826822b2..2c238f79c 100644
--- a/src/os/unix/ngx_freebsd_rfork_thread.h
+++ b/src/os/unix/ngx_freebsd_rfork_thread.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_freebsd_sendfile_chain.c b/src/os/unix/ngx_freebsd_sendfile_chain.c
index 8c98f8e38..610697d77 100644
--- a/src/os/unix/ngx_freebsd_sendfile_chain.c
+++ b/src/os/unix/ngx_freebsd_sendfile_chain.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_gcc_atomic_amd64.h b/src/os/unix/ngx_gcc_atomic_amd64.h
index 1008a6017..159a29742 100644
--- a/src/os/unix/ngx_gcc_atomic_amd64.h
+++ b/src/os/unix/ngx_gcc_atomic_amd64.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_gcc_atomic_ppc.h b/src/os/unix/ngx_gcc_atomic_ppc.h
index e82e75574..45afc4b9e 100644
--- a/src/os/unix/ngx_gcc_atomic_ppc.h
+++ b/src/os/unix/ngx_gcc_atomic_ppc.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_gcc_atomic_sparc64.h b/src/os/unix/ngx_gcc_atomic_sparc64.h
index e5a6254ec..d26e1307c 100644
--- a/src/os/unix/ngx_gcc_atomic_sparc64.h
+++ b/src/os/unix/ngx_gcc_atomic_sparc64.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_gcc_atomic_x86.h b/src/os/unix/ngx_gcc_atomic_x86.h
index 1951d00e2..54e01aebf 100644
--- a/src/os/unix/ngx_gcc_atomic_x86.h
+++ b/src/os/unix/ngx_gcc_atomic_x86.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_linux.h b/src/os/unix/ngx_linux.h
index e871ba9b0..1b8bdac51 100644
--- a/src/os/unix/ngx_linux.h
+++ b/src/os/unix/ngx_linux.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_linux_aio_read.c b/src/os/unix/ngx_linux_aio_read.c
index d31c4a064..8273c13f9 100644
--- a/src/os/unix/ngx_linux_aio_read.c
+++ b/src/os/unix/ngx_linux_aio_read.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h
index d72cf26b6..2834032de 100644
--- a/src/os/unix/ngx_linux_config.h
+++ b/src/os/unix/ngx_linux_config.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_linux_init.c b/src/os/unix/ngx_linux_init.c
index 277be9537..b910380d7 100644
--- a/src/os/unix/ngx_linux_init.c
+++ b/src/os/unix/ngx_linux_init.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_linux_sendfile_chain.c b/src/os/unix/ngx_linux_sendfile_chain.c
index a2225d9c6..4f6fdf587 100644
--- a/src/os/unix/ngx_linux_sendfile_chain.c
+++ b/src/os/unix/ngx_linux_sendfile_chain.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_os.h b/src/os/unix/ngx_os.h
index 8f9622ed3..c646e2aa5 100644
--- a/src/os/unix/ngx_os.h
+++ b/src/os/unix/ngx_os.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_posix_config.h b/src/os/unix/ngx_posix_config.h
index e327d5460..a0a2c8ce8 100644
--- a/src/os/unix/ngx_posix_config.h
+++ b/src/os/unix/ngx_posix_config.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_posix_init.c b/src/os/unix/ngx_posix_init.c
index 2357ab31f..02642bd7c 100644
--- a/src/os/unix/ngx_posix_init.c
+++ b/src/os/unix/ngx_posix_init.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_process.c b/src/os/unix/ngx_process.c
index 3eba6ce23..038b5707f 100644
--- a/src/os/unix/ngx_process.c
+++ b/src/os/unix/ngx_process.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_process.h b/src/os/unix/ngx_process.h
index aba0b5169..bd0252bd8 100644
--- a/src/os/unix/ngx_process.h
+++ b/src/os/unix/ngx_process.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_process_cycle.c b/src/os/unix/ngx_process_cycle.c
index fbf18a5f2..080d40c1e 100644
--- a/src/os/unix/ngx_process_cycle.c
+++ b/src/os/unix/ngx_process_cycle.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_process_cycle.h b/src/os/unix/ngx_process_cycle.h
index e6cef6b3f..94747b85d 100644
--- a/src/os/unix/ngx_process_cycle.h
+++ b/src/os/unix/ngx_process_cycle.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_pthread_thread.c b/src/os/unix/ngx_pthread_thread.c
index 676c76098..1cf31c3bc 100644
--- a/src/os/unix/ngx_pthread_thread.c
+++ b/src/os/unix/ngx_pthread_thread.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_readv_chain.c b/src/os/unix/ngx_readv_chain.c
index b65a0d7b8..373c4027c 100644
--- a/src/os/unix/ngx_readv_chain.c
+++ b/src/os/unix/ngx_readv_chain.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_recv.c b/src/os/unix/ngx_recv.c
index 316e0516d..6a4a09966 100644
--- a/src/os/unix/ngx_recv.c
+++ b/src/os/unix/ngx_recv.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_send.c b/src/os/unix/ngx_send.c
index e0d690077..80995ab3a 100644
--- a/src/os/unix/ngx_send.c
+++ b/src/os/unix/ngx_send.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_setproctitle.c b/src/os/unix/ngx_setproctitle.c
index b814610b7..a61fe1b94 100644
--- a/src/os/unix/ngx_setproctitle.c
+++ b/src/os/unix/ngx_setproctitle.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_setproctitle.h b/src/os/unix/ngx_setproctitle.h
index 09973e990..2323408c4 100644
--- a/src/os/unix/ngx_setproctitle.h
+++ b/src/os/unix/ngx_setproctitle.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_shmem.c b/src/os/unix/ngx_shmem.c
index f7f831fdb..3ec7cbf1f 100644
--- a/src/os/unix/ngx_shmem.c
+++ b/src/os/unix/ngx_shmem.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_shmem.h b/src/os/unix/ngx_shmem.h
index b5f669701..566a7d330 100644
--- a/src/os/unix/ngx_shmem.h
+++ b/src/os/unix/ngx_shmem.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_socket.c b/src/os/unix/ngx_socket.c
index 27ae48dc5..3978f655c 100644
--- a/src/os/unix/ngx_socket.c
+++ b/src/os/unix/ngx_socket.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_socket.h b/src/os/unix/ngx_socket.h
index 9e6a859bb..fcc515335 100644
--- a/src/os/unix/ngx_socket.h
+++ b/src/os/unix/ngx_socket.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_solaris.h b/src/os/unix/ngx_solaris.h
index 44ce79679..7b167d830 100644
--- a/src/os/unix/ngx_solaris.h
+++ b/src/os/unix/ngx_solaris.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_solaris_config.h b/src/os/unix/ngx_solaris_config.h
index fe66026e5..8a86fe610 100644
--- a/src/os/unix/ngx_solaris_config.h
+++ b/src/os/unix/ngx_solaris_config.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_solaris_init.c b/src/os/unix/ngx_solaris_init.c
index 57a859e68..f2f3600da 100644
--- a/src/os/unix/ngx_solaris_init.c
+++ b/src/os/unix/ngx_solaris_init.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_solaris_sendfilev_chain.c b/src/os/unix/ngx_solaris_sendfilev_chain.c
index 3a9356cdb..d68220dc3 100644
--- a/src/os/unix/ngx_solaris_sendfilev_chain.c
+++ b/src/os/unix/ngx_solaris_sendfilev_chain.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_sunpro_amd64.il b/src/os/unix/ngx_sunpro_amd64.il
index c6519574d..dc454b20b 100644
--- a/src/os/unix/ngx_sunpro_amd64.il
+++ b/src/os/unix/ngx_sunpro_amd64.il
@@ -1,5 +1,6 @@
/
/ Copyright (C) Igor Sysoev
+/ Copyright (C) Nginx, Inc.
/
/ ngx_atomic_uint_t ngx_atomic_cmp_set(ngx_atomic_t *lock,
diff --git a/src/os/unix/ngx_sunpro_atomic_sparc64.h b/src/os/unix/ngx_sunpro_atomic_sparc64.h
index b12603009..5f280553c 100644
--- a/src/os/unix/ngx_sunpro_atomic_sparc64.h
+++ b/src/os/unix/ngx_sunpro_atomic_sparc64.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_sunpro_sparc64.il b/src/os/unix/ngx_sunpro_sparc64.il
index 2dd83204a..bdeef6125 100644
--- a/src/os/unix/ngx_sunpro_sparc64.il
+++ b/src/os/unix/ngx_sunpro_sparc64.il
@@ -1,5 +1,6 @@
/
/ Copyright (C) Igor Sysoev
+/ Copyright (C) Nginx, Inc.
/
diff --git a/src/os/unix/ngx_sunpro_x86.il b/src/os/unix/ngx_sunpro_x86.il
index e32ea8cc1..fd1cc0049 100644
--- a/src/os/unix/ngx_sunpro_x86.il
+++ b/src/os/unix/ngx_sunpro_x86.il
@@ -1,5 +1,6 @@
/
/ Copyright (C) Igor Sysoev
+/ Copyright (C) Nginx, Inc.
/
/ ngx_atomic_uint_t ngx_atomic_cmp_set(ngx_atomic_t *lock,
diff --git a/src/os/unix/ngx_thread.h b/src/os/unix/ngx_thread.h
index eec297a8c..49c5d5656 100644
--- a/src/os/unix/ngx_thread.h
+++ b/src/os/unix/ngx_thread.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_time.c b/src/os/unix/ngx_time.c
index 4ca8be672..cc760b2eb 100644
--- a/src/os/unix/ngx_time.c
+++ b/src/os/unix/ngx_time.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_time.h b/src/os/unix/ngx_time.h
index 5d9406cde..c128c9aa0 100644
--- a/src/os/unix/ngx_time.h
+++ b/src/os/unix/ngx_time.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_udp_recv.c b/src/os/unix/ngx_udp_recv.c
index fdcd7fa79..1c807a08b 100644
--- a/src/os/unix/ngx_udp_recv.c
+++ b/src/os/unix/ngx_udp_recv.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_user.c b/src/os/unix/ngx_user.c
index c46fb2bfd..cb452e62b 100644
--- a/src/os/unix/ngx_user.c
+++ b/src/os/unix/ngx_user.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_user.h b/src/os/unix/ngx_user.h
index 68d1c6e5f..6e82204f4 100644
--- a/src/os/unix/ngx_user.h
+++ b/src/os/unix/ngx_user.h
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/ngx_writev_chain.c b/src/os/unix/ngx_writev_chain.c
index 695cb4978..579fdecc8 100644
--- a/src/os/unix/ngx_writev_chain.c
+++ b/src/os/unix/ngx_writev_chain.c
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/
diff --git a/src/os/unix/rfork_thread.S b/src/os/unix/rfork_thread.S
index 161007d6b..e570349f9 100644
--- a/src/os/unix/rfork_thread.S
+++ b/src/os/unix/rfork_thread.S
@@ -1,6 +1,7 @@
/*
* Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
*/