details: http://hg.nginx.org/nginx/rev/cebf5fed00bf branches: changeset: 6719:cebf5fed00bf user: Maxim Dounin <mdou...@mdounin.ru> date: Mon Oct 03 15:58:25 2016 +0300 description: Modules compatibility: removed unneeded IPV6_V6ONLY checks.
The IPV6_V6ONLY macro is now checked only while parsing appropriate flag and when using the macro. The ipv6only field in listen structures is always initialized to 1, even if not supported on a given platform. This is expected to prevent a module compiled without IPV6_V6ONLY from accidentally creating dual sockets if loaded into main binary with proper IPV6_V6ONLY support. diffstat: src/core/ngx_connection.h | 2 +- src/core/ngx_module.h | 4 - src/http/ngx_http.c | 134 ++++++++++++++++++------------------ src/http/ngx_http_core_module.c | 2 +- src/http/ngx_http_core_module.h | 2 +- src/mail/ngx_mail.c | 2 +- src/mail/ngx_mail.h | 2 +- src/mail/ngx_mail_core_module.c | 2 +- src/stream/ngx_stream.c | 2 +- src/stream/ngx_stream.h | 2 +- src/stream/ngx_stream_core_module.c | 2 +- 11 files changed, 76 insertions(+), 80 deletions(-) diffs (281 lines): diff -r bdf64ae3376b -r cebf5fed00bf src/core/ngx_connection.h --- a/src/core/ngx_connection.h Mon Oct 03 15:58:22 2016 +0300 +++ b/src/core/ngx_connection.h Mon Oct 03 15:58:25 2016 +0300 @@ -66,7 +66,7 @@ struct ngx_listening_s { unsigned addr_ntop:1; unsigned wildcard:1; -#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) +#if (NGX_HAVE_INET6) unsigned ipv6only:1; #endif #if (NGX_HAVE_REUSEPORT) diff -r bdf64ae3376b -r cebf5fed00bf src/core/ngx_module.h --- a/src/core/ngx_module.h Mon Oct 03 15:58:22 2016 +0300 +++ b/src/core/ngx_module.h Mon Oct 03 15:58:25 2016 +0300 @@ -71,11 +71,7 @@ #define NGX_MODULE_SIGNATURE_8 "0" #endif -#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) #define NGX_MODULE_SIGNATURE_9 "1" -#else -#define NGX_MODULE_SIGNATURE_9 "0" -#endif #if (NGX_HAVE_REUSEPORT) #define NGX_MODULE_SIGNATURE_10 "1" diff -r bdf64ae3376b -r cebf5fed00bf src/http/ngx_http.c --- a/src/http/ngx_http.c Mon Oct 03 15:58:22 2016 +0300 +++ b/src/http/ngx_http.c Mon Oct 03 15:58:25 2016 +0300 @@ -1756,7 +1756,7 @@ ngx_http_add_listening(ngx_conf_t *cf, n ls->deferred_accept = addr->opt.deferred_accept; #endif -#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) +#if (NGX_HAVE_INET6) ls->ipv6only = addr->opt.ipv6only; #endif @@ -1824,72 +1824,7 @@ ngx_http_add_addrs(ngx_conf_t *cf, ngx_h return NGX_ERROR; } - addrs[i].conf.virtual_names = vn; - - vn->names.hash = addr[i].hash; - vn->names.wc_head = addr[i].wc_head; - vn->names.wc_tail = addr[i].wc_tail; -#if (NGX_PCRE) - vn->nregex = addr[i].nregex; - vn->regex = addr[i].regex; -#endif - } - - return NGX_OK; -} - - -#if (NGX_HAVE_INET6) - -static ngx_int_t -ngx_http_add_addrs6(ngx_conf_t *cf, ngx_http_port_t *hport, - ngx_http_conf_addr_t *addr) -{ - ngx_uint_t i; - ngx_http_in6_addr_t *addrs6; - struct sockaddr_in6 *sin6; - ngx_http_virtual_names_t *vn; - - hport->addrs = ngx_pcalloc(cf->pool, - hport->naddrs * sizeof(ngx_http_in6_addr_t)); - if (hport->addrs == NULL) { - return NGX_ERROR; - } - - addrs6 = hport->addrs; - - for (i = 0; i < hport->naddrs; i++) { - - sin6 = &addr[i].opt.sockaddr.sockaddr_in6; - addrs6[i].addr6 = sin6->sin6_addr; - addrs6[i].conf.default_server = addr[i].default_server; -#if (NGX_HTTP_SSL) - addrs6[i].conf.ssl = addr[i].opt.ssl; -#endif -#if (NGX_HTTP_V2) - addrs6[i].conf.http2 = addr[i].opt.http2; -#endif - addrs6[i].conf.proxy_protocol = addr[i].opt.proxy_protocol; - - if (addr[i].hash.buckets == NULL - && (addr[i].wc_head == NULL - || addr[i].wc_head->hash.buckets == NULL) - && (addr[i].wc_tail == NULL - || addr[i].wc_tail->hash.buckets == NULL) -#if (NGX_PCRE) - && addr[i].nregex == 0 -#endif - ) - { - continue; - } - - vn = ngx_palloc(cf->pool, sizeof(ngx_http_virtual_names_t)); - if (vn == NULL) { - return NGX_ERROR; - } - - addrs6[i].conf.virtual_names = vn; + addrs[i].conf.virtual_names = vn; vn->names.hash = addr[i].hash; vn->names.wc_head = addr[i].wc_head; @@ -1903,6 +1838,71 @@ ngx_http_add_addrs6(ngx_conf_t *cf, ngx_ return NGX_OK; } + +#if (NGX_HAVE_INET6) + +static ngx_int_t +ngx_http_add_addrs6(ngx_conf_t *cf, ngx_http_port_t *hport, + ngx_http_conf_addr_t *addr) +{ + ngx_uint_t i; + ngx_http_in6_addr_t *addrs6; + struct sockaddr_in6 *sin6; + ngx_http_virtual_names_t *vn; + + hport->addrs = ngx_pcalloc(cf->pool, + hport->naddrs * sizeof(ngx_http_in6_addr_t)); + if (hport->addrs == NULL) { + return NGX_ERROR; + } + + addrs6 = hport->addrs; + + for (i = 0; i < hport->naddrs; i++) { + + sin6 = &addr[i].opt.sockaddr.sockaddr_in6; + addrs6[i].addr6 = sin6->sin6_addr; + addrs6[i].conf.default_server = addr[i].default_server; +#if (NGX_HTTP_SSL) + addrs6[i].conf.ssl = addr[i].opt.ssl; +#endif +#if (NGX_HTTP_V2) + addrs6[i].conf.http2 = addr[i].opt.http2; +#endif + addrs6[i].conf.proxy_protocol = addr[i].opt.proxy_protocol; + + if (addr[i].hash.buckets == NULL + && (addr[i].wc_head == NULL + || addr[i].wc_head->hash.buckets == NULL) + && (addr[i].wc_tail == NULL + || addr[i].wc_tail->hash.buckets == NULL) +#if (NGX_PCRE) + && addr[i].nregex == 0 +#endif + ) + { + continue; + } + + vn = ngx_palloc(cf->pool, sizeof(ngx_http_virtual_names_t)); + if (vn == NULL) { + return NGX_ERROR; + } + + addrs6[i].conf.virtual_names = vn; + + vn->names.hash = addr[i].hash; + vn->names.wc_head = addr[i].wc_head; + vn->names.wc_tail = addr[i].wc_tail; +#if (NGX_PCRE) + vn->nregex = addr[i].nregex; + vn->regex = addr[i].regex; +#endif + } + + return NGX_OK; +} + #endif diff -r bdf64ae3376b -r cebf5fed00bf src/http/ngx_http_core_module.c --- a/src/http/ngx_http_core_module.c Mon Oct 03 15:58:22 2016 +0300 +++ b/src/http/ngx_http_core_module.c Mon Oct 03 15:58:25 2016 +0300 @@ -3939,7 +3939,7 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx lsopt.fastopen = -1; #endif lsopt.wildcard = u.wildcard; -#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) +#if (NGX_HAVE_INET6) lsopt.ipv6only = 1; #endif diff -r bdf64ae3376b -r cebf5fed00bf src/http/ngx_http_core_module.h --- a/src/http/ngx_http_core_module.h Mon Oct 03 15:58:22 2016 +0300 +++ b/src/http/ngx_http_core_module.h Mon Oct 03 15:58:25 2016 +0300 @@ -69,7 +69,7 @@ typedef struct { unsigned ssl:1; #endif unsigned http2:1; -#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) +#if (NGX_HAVE_INET6) unsigned ipv6only:1; #endif #if (NGX_HAVE_REUSEPORT) diff -r bdf64ae3376b -r cebf5fed00bf src/mail/ngx_mail.c --- a/src/mail/ngx_mail.c Mon Oct 03 15:58:22 2016 +0300 +++ b/src/mail/ngx_mail.c Mon Oct 03 15:58:25 2016 +0300 @@ -341,7 +341,7 @@ ngx_mail_optimize_servers(ngx_conf_t *cf ls->keepcnt = addr[i].opt.tcp_keepcnt; #endif -#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) +#if (NGX_HAVE_INET6) ls->ipv6only = addr[i].opt.ipv6only; #endif diff -r bdf64ae3376b -r cebf5fed00bf src/mail/ngx_mail.h --- a/src/mail/ngx_mail.h Mon Oct 03 15:58:22 2016 +0300 +++ b/src/mail/ngx_mail.h Mon Oct 03 15:58:25 2016 +0300 @@ -38,7 +38,7 @@ typedef struct { #if (NGX_MAIL_SSL) unsigned ssl:1; #endif -#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) +#if (NGX_HAVE_INET6) unsigned ipv6only:1; #endif unsigned so_keepalive:2; diff -r bdf64ae3376b -r cebf5fed00bf src/mail/ngx_mail_core_module.c --- a/src/mail/ngx_mail_core_module.c Mon Oct 03 15:58:22 2016 +0300 +++ b/src/mail/ngx_mail_core_module.c Mon Oct 03 15:58:25 2016 +0300 @@ -353,7 +353,7 @@ ngx_mail_core_listen(ngx_conf_t *cf, ngx ls->wildcard = u.wildcard; ls->ctx = cf->ctx; -#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) +#if (NGX_HAVE_INET6) ls->ipv6only = 1; #endif diff -r bdf64ae3376b -r cebf5fed00bf src/stream/ngx_stream.c --- a/src/stream/ngx_stream.c Mon Oct 03 15:58:22 2016 +0300 +++ b/src/stream/ngx_stream.c Mon Oct 03 15:58:25 2016 +0300 @@ -506,7 +506,7 @@ ngx_stream_optimize_servers(ngx_conf_t * ls->keepcnt = addr[i].opt.tcp_keepcnt; #endif -#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) +#if (NGX_HAVE_INET6) ls->ipv6only = addr[i].opt.ipv6only; #endif diff -r bdf64ae3376b -r cebf5fed00bf src/stream/ngx_stream.h --- a/src/stream/ngx_stream.h Mon Oct 03 15:58:22 2016 +0300 +++ b/src/stream/ngx_stream.h Mon Oct 03 15:58:25 2016 +0300 @@ -52,7 +52,7 @@ typedef struct { #if (NGX_STREAM_SSL) unsigned ssl:1; #endif -#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) +#if (NGX_HAVE_INET6) unsigned ipv6only:1; #endif #if (NGX_HAVE_REUSEPORT) diff -r bdf64ae3376b -r cebf5fed00bf src/stream/ngx_stream_core_module.c --- a/src/stream/ngx_stream_core_module.c Mon Oct 03 15:58:22 2016 +0300 +++ b/src/stream/ngx_stream_core_module.c Mon Oct 03 15:58:25 2016 +0300 @@ -624,7 +624,7 @@ ngx_stream_core_listen(ngx_conf_t *cf, n ls->wildcard = u.wildcard; ls->ctx = cf->ctx; -#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) +#if (NGX_HAVE_INET6) ls->ipv6only = 1; #endif _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel