Mercurial > hg > nginx-quic
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++) { |