Merge of r4268:
Fixed compression pointer processing in DNS response greater than 255 bytes.
Thanks to Ben Hawkes.
Igor Sysoev
10 years ago
1921 | 1921 | n = *src++; |
1922 | 1922 | |
1923 | 1923 | for ( ;; ) { |
1924 | if (n != 0xc0) { | |
1924 | if (n & 0xc0) { | |
1925 | n = ((n & 0x3f) << 8) + *src; | |
1926 | src = &buf[n]; | |
1927 | ||
1928 | n = *src++; | |
1929 | ||
1930 | } else { | |
1925 | 1931 | ngx_memcpy(dst, src, n); |
1926 | 1932 | dst += n; |
1927 | 1933 | src += n; |
1931 | 1937 | if (n != 0) { |
1932 | 1938 | *dst++ = '.'; |
1933 | 1939 | } |
1934 | ||
1935 | } else { | |
1936 | n = ((n & 0x3f) << 8) + *src; | |
1937 | src = &buf[n]; | |
1938 | ||
1939 | n = *src++; | |
1940 | 1940 | } |
1941 | 1941 | |
1942 | 1942 | if (n == 0) { |