/** * Test case for spurious DNS A requests triggered by getaddrinfo() * * An issue was found ( ref. BZ #14307 http://sourceware.org/bugzilla/show_bug.cgi?id=14307 ) * which causes getaddrinfo() to send duplicate DNS requests for certain hostnames on x86_64 * hosts * * This self-contained program illustrates one such case: www.google.com * * The issue is due to a relatively small (512 bytes) temporary buffer allocated in * sysdeps/posix/getaddrinfo.c which is largely used up by a struct, the size of which varies * for x86 (208 bytes) and x86_64 (400 bytes) - which explains why this issue occurs * less frequently for x86 * * Authors: Siddhesh Poyarekar , Jeroen van Bemmel */ #include #include #include #include #include #include int main() { const char *host = "www.gmail.com"; struct addrinfo hints; struct addrinfo *result = NULL, *rp; int err = 0; memset(&hints, 0, sizeof(struct addrinfo)); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; // hints.ai_flags = AI_CANONNAME; if ((err = getaddrinfo(host, NULL, &hints, &result)) < 0) { fprintf(stderr, "Lookup: unable to create socket for %s:%s:: \n", host, port, gai_strerror(err)); return 1; } }