mirror of
https://github.com/nginx/nginx.git
synced 2025-07-31 18:46:15 +08:00
Merge of r4813, r4814, r4818, r4819, r4820, r4823: mail fixes.
*) Corrected the directive name in the ngx_mail_auth_http_module error message. *) Don't let the well-known port in the "listen" directive to override the already set "protocol". *) Fixed sorting of listen addresses (ticket #187). For http module this problem was already fixed in r4756. *) Removed a stale "AF_INET only" comment. IPv6 client connections in mail modules have been supported since r2856. *) Fixed handling of AF_UNIX addresses in "listen". This makes AF_UNIX addresses in mail officially supported. *) Whitespace fix.
This commit is contained in:
parent
191e31938e
commit
9288e6587b
@ -263,6 +263,12 @@ ngx_mail_add_ports(ngx_conf_t *cf, ngx_array_t *ports,
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (NGX_HAVE_UNIX_DOMAIN)
|
||||||
|
case AF_UNIX:
|
||||||
|
p = 0;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
default: /* AF_INET */
|
default: /* AF_INET */
|
||||||
sin = (struct sockaddr_in *) sa;
|
sin = (struct sockaddr_in *) sa;
|
||||||
p = sin->sin_port;
|
p = sin->sin_port;
|
||||||
@ -539,6 +545,11 @@ ngx_mail_cmp_conf_addrs(const void *one, const void *two)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (second->wildcard) {
|
||||||
|
/* a wildcard must be the last resort, shift it to the end */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (first->bind && !second->bind) {
|
if (first->bind && !second->bind) {
|
||||||
/* shift explicit bind()ed addresses to the start */
|
/* shift explicit bind()ed addresses to the start */
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1332,7 +1332,7 @@ ngx_mail_auth_http_merge_conf(ngx_conf_t *cf, void *parent, void *child)
|
|||||||
|
|
||||||
if (conf->peer == NULL) {
|
if (conf->peer == NULL) {
|
||||||
ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
||||||
"no \"http_auth\" is defined for server in %s:%ui",
|
"no \"auth_http\" is defined for server in %s:%ui",
|
||||||
conf->file, conf->line);
|
conf->file, conf->line);
|
||||||
|
|
||||||
return NGX_CONF_ERROR;
|
return NGX_CONF_ERROR;
|
||||||
|
@ -340,6 +340,14 @@ ngx_mail_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (NGX_HAVE_UNIX_DOMAIN)
|
||||||
|
case AF_UNIX:
|
||||||
|
off = offsetof(struct sockaddr_un, sun_path);
|
||||||
|
len = sizeof(((struct sockaddr_un *) sa)->sun_path);
|
||||||
|
port = 0;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
default: /* AF_INET */
|
default: /* AF_INET */
|
||||||
off = offsetof(struct sockaddr_in, sin_addr);
|
off = offsetof(struct sockaddr_in, sin_addr);
|
||||||
len = 4;
|
len = 4;
|
||||||
@ -374,21 +382,23 @@ ngx_mail_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
ls->wildcard = u.wildcard;
|
ls->wildcard = u.wildcard;
|
||||||
ls->ctx = cf->ctx;
|
ls->ctx = cf->ctx;
|
||||||
|
|
||||||
for (m = 0; ngx_modules[m]; m++) {
|
if (cscf->protocol == NULL) {
|
||||||
if (ngx_modules[m]->type != NGX_MAIL_MODULE) {
|
for (m = 0; ngx_modules[m]; m++) {
|
||||||
continue;
|
if (ngx_modules[m]->type != NGX_MAIL_MODULE) {
|
||||||
}
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
module = ngx_modules[m]->ctx;
|
module = ngx_modules[m]->ctx;
|
||||||
|
|
||||||
if (module->protocol == NULL) {
|
if (module->protocol == NULL) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; module->protocol->port[i]; i++) {
|
for (i = 0; module->protocol->port[i]; i++) {
|
||||||
if (module->protocol->port[i] == u.port) {
|
if (module->protocol->port[i] == u.port) {
|
||||||
cscf->protocol = module->protocol;
|
cscf->protocol = module->protocol;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,8 +38,6 @@ ngx_mail_init_connection(ngx_connection_t *c)
|
|||||||
|
|
||||||
/* find the server configuration for the address:port */
|
/* find the server configuration for the address:port */
|
||||||
|
|
||||||
/* AF_INET only */
|
|
||||||
|
|
||||||
port = c->listening->servers;
|
port = c->listening->servers;
|
||||||
|
|
||||||
if (port->naddrs > 1) {
|
if (port->naddrs > 1) {
|
||||||
|
Loading…
Reference in New Issue
Block a user