From 08a65b10fbbee20926211a9deb99b1ce8328d91a Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 11 Jan 2011 00:14:36 +0100 Subject: [PATCH] connect: use UDP correctly The idea that the protocol and socktype is part of name resolving in the libc functions is nuts. We keep the name resolver functions assume TCP/STREAM and we make sure that when we want to connect to a UDP service we use the correct UDP/DGRAM set instead. This bug was because the ->protocol field was not always set correctly. This bug was only affecting ipv6-disabled non-cares non-threaded builds. Bug: http://curl.haxx.se/bug/view.cgi?id=3154436 Reported by: "dperham" --- lib/connect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/connect.c b/lib/connect.c index 604bb2a1a5..bcc1ed74ab 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -857,7 +857,7 @@ singleipconnect(struct connectdata *conn, addr.family = ai->ai_family; addr.socktype = conn->socktype; - addr.protocol = ai->ai_protocol; + addr.protocol = conn->socktype==SOCK_DGRAM?IPPROTO_UDP:ai->ai_protocol; addr.addrlen = ai->ai_addrlen; if(addr.addrlen > sizeof(struct Curl_sockaddr_storage))