comparison src/http/ngx_http_core_module.c @ 4857:880dedfa4008 stable-1.2

Merge of r4829: fixed strict aliasing with ipv6 (ticket #201). Fixed strict aliasing bugs when dealing with IPv4-mapped IPv6 addresses.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 24 Sep 2012 19:06:48 +0000
parents 43b7b9572fe1
children 05beaa2d87b3
comparison
equal deleted inserted replaced
4856:43b7b9572fe1 4857:880dedfa4008
2731 else if (family == AF_INET6) { 2731 else if (family == AF_INET6) {
2732 inaddr6 = &((struct sockaddr_in6 *) addr->sockaddr)->sin6_addr; 2732 inaddr6 = &((struct sockaddr_in6 *) addr->sockaddr)->sin6_addr;
2733 2733
2734 if (IN6_IS_ADDR_V4MAPPED(inaddr6)) { 2734 if (IN6_IS_ADDR_V4MAPPED(inaddr6)) {
2735 family = AF_INET; 2735 family = AF_INET;
2736 inaddr = *(in_addr_t *) &inaddr6->s6_addr[12]; 2736
2737 p = inaddr6->s6_addr;
2738
2739 inaddr = p[12] << 24;
2740 inaddr += p[13] << 16;
2741 inaddr += p[14] << 8;
2742 inaddr += p[15];
2743
2744 inaddr = htonl(inaddr);
2737 } 2745 }
2738 } 2746 }
2739 #endif 2747 #endif
2740 2748
2741 for (cidr = proxies->elts, i = 0; i < proxies->nelts; i++) { 2749 for (cidr = proxies->elts, i = 0; i < proxies->nelts; i++) {