summaryrefslogtreecommitdiff
path: root/lib/asyn-thread.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2014-01-10 08:37:43 +0100
committerDaniel Stenberg <daniel@haxx.se>2014-01-10 08:48:40 +0100
commit041d1e14d66916b7701991646ac88cf1f90a0cda (patch)
tree3243c13d23301223cdc3ea488ce1bd0e5ff13206 /lib/asyn-thread.c
parent21aa79f46399c39c1c64b9f53270cb41aa310f17 (diff)
downloadcurl-041d1e14d66916b7701991646ac88cf1f90a0cda.tar.gz
threaded-resolver: never use NULL hints with getaddrinfo
The net effect of this bug as it appeared to users, would be that libcurl would timeout in the connect phase. When disabling IPv6 use but still using getaddrinfo, libcurl would wrongly not init the "hints" struct field in init_thread_sync() which would subsequently lead to a getaddrinfo() invoke with a zeroed hints with ai_socktype set to 0 instead of SOCK_STREAM. This would lead to different behaviors on different platforms but basically incorrect output. This code was introduced in 483ff1ca75cbea, released in curl 7.20.0. This bug became a problem now due to the happy eyeballs code and how libcurl now traverses the getaddrinfo() results differently. Bug: http://curl.haxx.se/mail/lib-2014-01/0061.html Reported-by: Fabian Frank Debugged-by: Fabian Frank
Diffstat (limited to 'lib/asyn-thread.c')
-rw-r--r--lib/asyn-thread.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/asyn-thread.c b/lib/asyn-thread.c
index 4882c3720..c72c06431 100644
--- a/lib/asyn-thread.c
+++ b/lib/asyn-thread.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -209,7 +209,7 @@ int init_thread_sync_data(struct thread_sync_data * tsd,
memset(tsd, 0, sizeof(*tsd));
tsd->port = port;
-#ifdef CURLRES_IPV6
+#ifdef HAVE_GETADDRINFO
DEBUGASSERT(hints);
tsd->hints = *hints;
#else