Mercurial > hg > nginx-mail
comparison src/core/ngx_cycle.c @ 487:76a79816b771 NGINX_0_7_36
nginx 0.7.36
*) Feature: a preliminary IPv6 support; the "listen" directive of the
HTTP module supports IPv6.
*) Bugfix: the $ancient_browser variable did not work for browsers
preset by a "modern_browser" directives.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Sat, 21 Feb 2009 00:00:00 +0300 |
parents | 6281966854a5 |
children | a8424ffa495c |
comparison
equal
deleted
inserted
replaced
486:40964c811e59 | 487:76a79816b771 |
---|---|
874 | 874 |
875 | 875 |
876 static ngx_int_t | 876 static ngx_int_t |
877 ngx_cmp_sockaddr(struct sockaddr *sa1, struct sockaddr *sa2) | 877 ngx_cmp_sockaddr(struct sockaddr *sa1, struct sockaddr *sa2) |
878 { | 878 { |
879 struct sockaddr_in *sin1, *sin2; | 879 struct sockaddr_in *sin1, *sin2; |
880 | 880 #if (NGX_HAVE_INET6) |
881 /* AF_INET only */ | 881 struct sockaddr_in6 *sin61, *sin62; |
882 | 882 #endif |
883 if (sa1->sa_family != AF_INET || sa2->sa_family != AF_INET) { | 883 |
884 if (sa1->sa_family != sa2->sa_family) { | |
884 return NGX_DECLINED; | 885 return NGX_DECLINED; |
885 } | 886 } |
886 | 887 |
887 sin1 = (struct sockaddr_in *) sa1; | 888 switch (sa1->sa_family) { |
888 sin2 = (struct sockaddr_in *) sa2; | 889 |
889 | 890 #if (NGX_HAVE_INET6) |
890 if (sin1->sin_addr.s_addr != sin2->sin_addr.s_addr) { | 891 case AF_INET6: |
891 return NGX_DECLINED; | 892 sin61 = (struct sockaddr_in6 *) sa1; |
892 } | 893 sin62 = (struct sockaddr_in6 *) sa2; |
893 | 894 |
894 if (sin1->sin_port != sin2->sin_port) { | 895 if (sin61->sin6_port != sin61->sin6_port) { |
895 return NGX_DECLINED; | 896 return NGX_DECLINED; |
897 } | |
898 | |
899 if (ngx_memcmp(&sin61->sin6_addr, &sin62->sin6_addr, 16) != 0) { | |
900 return NGX_DECLINED; | |
901 } | |
902 | |
903 break; | |
904 #endif | |
905 | |
906 default: /* AF_INET */ | |
907 | |
908 sin1 = (struct sockaddr_in *) sa1; | |
909 sin2 = (struct sockaddr_in *) sa2; | |
910 | |
911 if (sin1->sin_port != sin2->sin_port) { | |
912 return NGX_DECLINED; | |
913 } | |
914 | |
915 if (sin1->sin_addr.s_addr != sin2->sin_addr.s_addr) { | |
916 return NGX_DECLINED; | |
917 } | |
918 | |
919 break; | |
896 } | 920 } |
897 | 921 |
898 return NGX_OK; | 922 return NGX_OK; |
899 } | 923 } |
900 | 924 |