comparison src/core/ngx_resolver.c @ 4287:7740d2a8d55b stable-1.0

Merge of r4268: Fixed compression pointer processing in DNS response greater than 255 bytes. Thanks to Ben Hawkes.
author Igor Sysoev <igor@sysoev.ru>
date Mon, 14 Nov 2011 16:12:25 +0000
parents 159b58f9c0bd
children 4919fb357a5d
comparison
equal deleted inserted replaced
4286:8d6c2f2c0d2a 4287:7740d2a8d55b
1920 name->data = dst; 1920 name->data = dst;
1921 1921
1922 n = *src++; 1922 n = *src++;
1923 1923
1924 for ( ;; ) { 1924 for ( ;; ) {
1925 if (n != 0xc0) { 1925 if (n & 0xc0) {
1926 n = ((n & 0x3f) << 8) + *src;
1927 src = &buf[n];
1928
1929 n = *src++;
1930
1931 } else {
1926 ngx_memcpy(dst, src, n); 1932 ngx_memcpy(dst, src, n);
1927 dst += n; 1933 dst += n;
1928 src += n; 1934 src += n;
1929 1935
1930 n = *src++; 1936 n = *src++;
1931 1937
1932 if (n != 0) { 1938 if (n != 0) {
1933 *dst++ = '.'; 1939 *dst++ = '.';
1934 } 1940 }
1935
1936 } else {
1937 n = ((n & 0x3f) << 8) + *src;
1938 src = &buf[n];
1939
1940 n = *src++;
1941 } 1941 }
1942 1942
1943 if (n == 0) { 1943 if (n == 0) {
1944 name->len = dst - name->data; 1944 name->len = dst - name->data;
1945 return NGX_OK; 1945 return NGX_OK;