comparison src/stream/ngx_stream_core_module.c @ 6170:c13091e6292c

Stream: embed ngx_stream_listen_t into ngx_stream_conf_addr_t.
author Ruslan Ermilov <ru@nginx.com>
date Mon, 08 Jun 2015 23:11:42 +0300
parents 4f6efabcb09b
children 3e8cddcff381
comparison
equal deleted inserted replaced
6169:f654addf0eea 6170:c13091e6292c
270 270
271 ls = cmcf->listen.elts; 271 ls = cmcf->listen.elts;
272 272
273 for (i = 0; i < cmcf->listen.nelts; i++) { 273 for (i = 0; i < cmcf->listen.nelts; i++) {
274 274
275 sa = (struct sockaddr *) ls[i].sockaddr; 275 sa = &ls[i].u.sockaddr;
276 276
277 if (sa->sa_family != u.family) { 277 if (sa->sa_family != u.family) {
278 continue; 278 continue;
279 } 279 }
280 280
282 282
283 #if (NGX_HAVE_INET6) 283 #if (NGX_HAVE_INET6)
284 case AF_INET6: 284 case AF_INET6:
285 off = offsetof(struct sockaddr_in6, sin6_addr); 285 off = offsetof(struct sockaddr_in6, sin6_addr);
286 len = 16; 286 len = 16;
287 sin6 = (struct sockaddr_in6 *) sa; 287 sin6 = &ls[i].u.sockaddr_in6;
288 port = sin6->sin6_port; 288 port = sin6->sin6_port;
289 break; 289 break;
290 #endif 290 #endif
291 291
292 #if (NGX_HAVE_UNIX_DOMAIN) 292 #if (NGX_HAVE_UNIX_DOMAIN)
298 #endif 298 #endif
299 299
300 default: /* AF_INET */ 300 default: /* AF_INET */
301 off = offsetof(struct sockaddr_in, sin_addr); 301 off = offsetof(struct sockaddr_in, sin_addr);
302 len = 4; 302 len = 4;
303 sin = (struct sockaddr_in *) sa; 303 sin = &ls[i].u.sockaddr_in;
304 port = sin->sin_port; 304 port = sin->sin_port;
305 break; 305 break;
306 } 306 }
307 307
308 if (ngx_memcmp(ls[i].sockaddr + off, u.sockaddr + off, len) != 0) { 308 if (ngx_memcmp(ls[i].u.sockaddr_data + off, u.sockaddr + off, len)
309 != 0)
310 {
309 continue; 311 continue;
310 } 312 }
311 313
312 if (port != u.port) { 314 if (port != u.port) {
313 continue; 315 continue;
323 return NGX_CONF_ERROR; 325 return NGX_CONF_ERROR;
324 } 326 }
325 327
326 ngx_memzero(ls, sizeof(ngx_stream_listen_t)); 328 ngx_memzero(ls, sizeof(ngx_stream_listen_t));
327 329
328 ngx_memcpy(ls->sockaddr, u.sockaddr, u.socklen); 330 ngx_memcpy(&ls->u.sockaddr, u.sockaddr, u.socklen);
329 331
330 ls->socklen = u.socklen; 332 ls->socklen = u.socklen;
331 ls->wildcard = u.wildcard; 333 ls->wildcard = u.wildcard;
332 ls->ctx = cf->ctx; 334 ls->ctx = cf->ctx;
333 335
345 if (ngx_strncmp(value[i].data, "ipv6only=o", 10) == 0) { 347 if (ngx_strncmp(value[i].data, "ipv6only=o", 10) == 0) {
346 #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) 348 #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
347 struct sockaddr *sa; 349 struct sockaddr *sa;
348 u_char buf[NGX_SOCKADDR_STRLEN]; 350 u_char buf[NGX_SOCKADDR_STRLEN];
349 351
350 sa = (struct sockaddr *) ls->sockaddr; 352 sa = &ls->u.sockaddr;
351 353
352 if (sa->sa_family == AF_INET6) { 354 if (sa->sa_family == AF_INET6) {
353 355
354 if (ngx_strcmp(&value[i].data[10], "n") == 0) { 356 if (ngx_strcmp(&value[i].data[10], "n") == 0) {
355 ls->ipv6only = 1; 357 ls->ipv6only = 1;