Mercurial > hg > nginx
comparison src/core/ngx_string.c @ 3116:98e288c6dac3
If .domain.com, .sub.domain.com, and .domain-some.com were defined,
then .sub.domain.com was matched by .domain.com: wildcard names hash
was built incorrectly due to sorting order issue of "." vs "-".
They were sorted as
com.domain com.domain-some com.domain.sub
while they should be sorted as
com.domain com.domain.sub com.domain-some
for correct hash building
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sat, 12 Sep 2009 09:28:37 +0000 |
parents | 204ea173234f |
children | b344b68da8c5 |
comparison
equal
deleted
inserted
replaced
3115:204ea173234f | 3116:98e288c6dac3 |
---|---|
818 return z; | 818 return z; |
819 } | 819 } |
820 | 820 |
821 | 821 |
822 ngx_int_t | 822 ngx_int_t |
823 ngx_dns_strcmp(u_char *s1, u_char *s2) | |
824 { | |
825 ngx_uint_t c1, c2; | |
826 | |
827 for ( ;; ) { | |
828 c1 = (ngx_uint_t) *s1++; | |
829 c2 = (ngx_uint_t) *s2++; | |
830 | |
831 c1 = (c1 >= 'A' && c1 <= 'Z') ? (c1 | 0x20) : c1; | |
832 c2 = (c2 >= 'A' && c2 <= 'Z') ? (c2 | 0x20) : c2; | |
833 | |
834 if (c1 == c2) { | |
835 | |
836 if (c1) { | |
837 continue; | |
838 } | |
839 | |
840 return 0; | |
841 } | |
842 | |
843 /* in ASCII '.' > '-', but we need '.' to be the lowest character */ | |
844 | |
845 c1 = (c1 == '.') ? ' ' : c1; | |
846 c2 = (c2 == '.') ? ' ' : c2; | |
847 | |
848 return c1 - c2; | |
849 } | |
850 } | |
851 | |
852 | |
853 ngx_int_t | |
823 ngx_atoi(u_char *line, size_t n) | 854 ngx_atoi(u_char *line, size_t n) |
824 { | 855 { |
825 ngx_int_t value; | 856 ngx_int_t value; |
826 | 857 |
827 if (n == 0) { | 858 if (n == 0) { |