Mercurial > hg > nginx
comparison src/core/ngx_connection.c @ 5263:05ba5bce31e0
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.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Thu, 11 Jul 2013 16:07:25 +0400 |
parents | f941cf265cc5 |
children | b6ffe53f9c3d |
comparison
equal
deleted
inserted
replaced
5262:626f288fa5ed | 5263:05ba5bce31e0 |
---|---|
39 ngx_memcpy(sa, sockaddr, socklen); | 39 ngx_memcpy(sa, sockaddr, socklen); |
40 | 40 |
41 ls->sockaddr = sa; | 41 ls->sockaddr = sa; |
42 ls->socklen = socklen; | 42 ls->socklen = socklen; |
43 | 43 |
44 len = ngx_sock_ntop(sa, text, NGX_SOCKADDR_STRLEN, 1); | 44 len = ngx_sock_ntop(sa, socklen, text, NGX_SOCKADDR_STRLEN, 1); |
45 ls->addr_text.len = len; | 45 ls->addr_text.len = len; |
46 | 46 |
47 switch (ls->sockaddr->sa_family) { | 47 switch (ls->sockaddr->sa_family) { |
48 #if (NGX_HAVE_INET6) | 48 #if (NGX_HAVE_INET6) |
49 case AF_INET6: | 49 case AF_INET6: |
150 ls[i].addr_text.data = ngx_pnalloc(cycle->pool, len); | 150 ls[i].addr_text.data = ngx_pnalloc(cycle->pool, len); |
151 if (ls[i].addr_text.data == NULL) { | 151 if (ls[i].addr_text.data == NULL) { |
152 return NGX_ERROR; | 152 return NGX_ERROR; |
153 } | 153 } |
154 | 154 |
155 len = ngx_sock_ntop(ls[i].sockaddr, ls[i].addr_text.data, len, 1); | 155 len = ngx_sock_ntop(ls[i].sockaddr, ls[i].socklen, |
156 ls[i].addr_text.data, len, 1); | |
156 if (len == 0) { | 157 if (len == 0) { |
157 return NGX_ERROR; | 158 return NGX_ERROR; |
158 } | 159 } |
159 | 160 |
160 ls[i].addr_text.len = len; | 161 ls[i].addr_text.len = len; |
1066 | 1067 |
1067 if (s == NULL) { | 1068 if (s == NULL) { |
1068 return NGX_OK; | 1069 return NGX_OK; |
1069 } | 1070 } |
1070 | 1071 |
1071 s->len = ngx_sock_ntop(c->local_sockaddr, s->data, s->len, port); | 1072 s->len = ngx_sock_ntop(c->local_sockaddr, len, s->data, s->len, port); |
1072 | 1073 |
1073 return NGX_OK; | 1074 return NGX_OK; |
1074 } | 1075 } |
1075 | 1076 |
1076 | 1077 |