mirror of
https://github.com/nginx/nginx.git
synced 2024-12-03 04:39:00 +08:00
Mail: fixed passing of IPv6 client address in XCLIENT.
This commit is contained in:
parent
0bfb68eea0
commit
8b7fe56e95
@ -542,17 +542,40 @@ ngx_mail_proxy_smtp_handler(ngx_event_t *rev)
|
|||||||
CRLF) - 1
|
CRLF) - 1
|
||||||
+ s->connection->addr_text.len + s->login.len + s->host.len;
|
+ s->connection->addr_text.len + s->login.len + s->host.len;
|
||||||
|
|
||||||
|
#if (NGX_HAVE_INET6)
|
||||||
|
if (s->connection->sockaddr->sa_family == AF_INET6) {
|
||||||
|
line.len += sizeof("IPV6:") - 1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
line.data = ngx_pnalloc(c->pool, line.len);
|
line.data = ngx_pnalloc(c->pool, line.len);
|
||||||
if (line.data == NULL) {
|
if (line.data == NULL) {
|
||||||
ngx_mail_proxy_internal_server_error(s);
|
ngx_mail_proxy_internal_server_error(s);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
line.len = ngx_sprintf(line.data,
|
p = ngx_cpymem(line.data, "XCLIENT ADDR=", sizeof("XCLIENT ADDR=") - 1);
|
||||||
"XCLIENT ADDR=%V%s%V NAME=%V" CRLF,
|
|
||||||
&s->connection->addr_text,
|
#if (NGX_HAVE_INET6)
|
||||||
(s->login.len ? " LOGIN=" : ""), &s->login, &s->host)
|
if (s->connection->sockaddr->sa_family == AF_INET6) {
|
||||||
- line.data;
|
p = ngx_cpymem(p, "IPV6:", sizeof("IPV6:") - 1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
p = ngx_copy(p, s->connection->addr_text.data,
|
||||||
|
s->connection->addr_text.len);
|
||||||
|
|
||||||
|
if (s->login.len) {
|
||||||
|
p = ngx_cpymem(p, " LOGIN=", sizeof(" LOGIN=") - 1);
|
||||||
|
p = ngx_copy(p, s->login.data, s->login.len);
|
||||||
|
}
|
||||||
|
|
||||||
|
p = ngx_cpymem(p, " NAME=", sizeof(" NAME=") - 1);
|
||||||
|
p = ngx_copy(p, s->host.data, s->host.len);
|
||||||
|
|
||||||
|
*p++ = CR; *p++ = LF;
|
||||||
|
|
||||||
|
line.len = p - line.data;
|
||||||
|
|
||||||
if (s->smtp_helo.len) {
|
if (s->smtp_helo.len) {
|
||||||
s->mail_state = ngx_smtp_xclient_helo;
|
s->mail_state = ngx_smtp_xclient_helo;
|
||||||
|
Loading…
Reference in New Issue
Block a user