comparison src/core/ngx_connection.c @ 6559:adf25b8d0431

Introduced the ngx_sockaddr_t type. It's properly aligned and can hold any supported sockaddr.
author Ruslan Ermilov <ru@nginx.com>
date Mon, 23 May 2016 16:37:20 +0300
parents 090a78da4f88
children 631753428ecb
comparison
equal deleted inserted replaced
6558:68854ce64ec7 6559:adf25b8d0431
149 #endif 149 #endif
150 150
151 ls = cycle->listening.elts; 151 ls = cycle->listening.elts;
152 for (i = 0; i < cycle->listening.nelts; i++) { 152 for (i = 0; i < cycle->listening.nelts; i++) {
153 153
154 ls[i].sockaddr = ngx_palloc(cycle->pool, NGX_SOCKADDRLEN); 154 ls[i].sockaddr = ngx_palloc(cycle->pool, sizeof(ngx_sockaddr_t));
155 if (ls[i].sockaddr == NULL) { 155 if (ls[i].sockaddr == NULL) {
156 return NGX_ERROR; 156 return NGX_ERROR;
157 } 157 }
158 158
159 ls[i].socklen = NGX_SOCKADDRLEN; 159 ls[i].socklen = sizeof(ngx_sockaddr_t);
160 if (getsockname(ls[i].fd, ls[i].sockaddr, &ls[i].socklen) == -1) { 160 if (getsockname(ls[i].fd, ls[i].sockaddr, &ls[i].socklen) == -1) {
161 ngx_log_error(NGX_LOG_CRIT, cycle->log, ngx_socket_errno, 161 ngx_log_error(NGX_LOG_CRIT, cycle->log, ngx_socket_errno,
162 "getsockname() of the inherited " 162 "getsockname() of the inherited "
163 "socket #%d failed", ls[i].fd); 163 "socket #%d failed", ls[i].fd);
164 ls[i].ignore = 1; 164 ls[i].ignore = 1;
1276 ngx_connection_local_sockaddr(ngx_connection_t *c, ngx_str_t *s, 1276 ngx_connection_local_sockaddr(ngx_connection_t *c, ngx_str_t *s,
1277 ngx_uint_t port) 1277 ngx_uint_t port)
1278 { 1278 {
1279 socklen_t len; 1279 socklen_t len;
1280 ngx_uint_t addr; 1280 ngx_uint_t addr;
1281 u_char sa[NGX_SOCKADDRLEN]; 1281 ngx_sockaddr_t sa;
1282 struct sockaddr_in *sin; 1282 struct sockaddr_in *sin;
1283 #if (NGX_HAVE_INET6) 1283 #if (NGX_HAVE_INET6)
1284 ngx_uint_t i; 1284 ngx_uint_t i;
1285 struct sockaddr_in6 *sin6; 1285 struct sockaddr_in6 *sin6;
1286 #endif 1286 #endif
1314 } 1314 }
1315 } 1315 }
1316 1316
1317 if (addr == 0) { 1317 if (addr == 0) {
1318 1318
1319 len = NGX_SOCKADDRLEN; 1319 len = sizeof(ngx_sockaddr_t);
1320 1320
1321 if (getsockname(c->fd, (struct sockaddr *) &sa, &len) == -1) { 1321 if (getsockname(c->fd, &sa.sockaddr, &len) == -1) {
1322 ngx_connection_error(c, ngx_socket_errno, "getsockname() failed"); 1322 ngx_connection_error(c, ngx_socket_errno, "getsockname() failed");
1323 return NGX_ERROR; 1323 return NGX_ERROR;
1324 } 1324 }
1325 1325
1326 c->local_sockaddr = ngx_palloc(c->pool, len); 1326 c->local_sockaddr = ngx_palloc(c->pool, len);