From af18946d769296d9efead825a0d1aa6a1a41fe74 Mon Sep 17 00:00:00 2001 From: Vladimir Homutov Date: Thu, 11 Jul 2013 16:07:25 +0400 Subject: Core: extended ngx_sock_ntop() with socklen parameter. On Linux, sockaddr length is required to process unix socket addresses properly due to unnamed sockets (which don't have sun_path set at all) and abstract namespace sockets. --- src/event/ngx_event_accept.c | 3 ++- src/event/ngx_event_acceptex.c | 3 ++- src/event/ngx_event_openssl_stapling.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src/event') diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c index 6087d60da..e3f828da8 100644 --- a/src/event/ngx_event_accept.c +++ b/src/event/ngx_event_accept.c @@ -275,7 +275,8 @@ ngx_event_accept(ngx_event_t *ev) return; } - c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data, + c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->socklen, + c->addr_text.data, ls->addr_text_max_len, 0); if (c->addr_text.len == 0) { ngx_close_accepted_connection(c); diff --git a/src/event/ngx_event_acceptex.c b/src/event/ngx_event_acceptex.c index 77fac6d3f..b7c4134b1 100644 --- a/src/event/ngx_event_acceptex.c +++ b/src/event/ngx_event_acceptex.c @@ -68,7 +68,8 @@ ngx_event_acceptex(ngx_event_t *rev) return; } - c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data, + c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->socklen, + c->addr_text.data, ls->addr_text_max_len, 0); if (c->addr_text.len == 0) { /* TODO: close socket */ diff --git a/src/event/ngx_event_openssl_stapling.c b/src/event/ngx_event_openssl_stapling.c index 23097f33d..77076141c 100644 --- a/src/event/ngx_event_openssl_stapling.c +++ b/src/event/ngx_event_openssl_stapling.c @@ -878,7 +878,8 @@ ngx_ssl_ocsp_resolve_handler(ngx_resolver_ctx_t *resolve) goto failed; } - len = ngx_sock_ntop((struct sockaddr *) sin, p, len, 1); + len = ngx_sock_ntop((struct sockaddr *) sin, sizeof(struct sockaddr_in), + p, len, 1); ctx->addrs[i].name.len = len; ctx->addrs[i].name.data = p; -- cgit