summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Blazquez <jblazquez@riotgames.com>2019-10-27 17:16:24 -0700
committerJay Satiro <raysatiro@yahoo.com>2019-10-28 15:00:33 -0400
commit9f5b26d23fe0d666debc4526abe7a078601e20dc (patch)
tree6d640889452c3a9845d3deb34657dfcd93f9554f
parentaeafa260cadd8fe6fe03ff090ab30786de9a27e4 (diff)
downloadgnurl-9f5b26d23fe0d666debc4526abe7a078601e20dc.tar.gz
gnurl-9f5b26d23fe0d666debc4526abe7a078601e20dc.tar.bz2
gnurl-9f5b26d23fe0d666debc4526abe7a078601e20dc.zip
HTTP3: fix invalid use of sendto for connected UDP socket
On macOS/BSD, trying to call sendto on a connected UDP socket fails with a EISCONN error. Because the singleipconnect has already called connect on the socket when we're trying to use it for QUIC transfers we need to use plain send instead. Fixes #4529 Closes https://github.com/curl/curl/pull/4533
-rw-r--r--lib/vquic/ngtcp2.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/vquic/ngtcp2.c b/lib/vquic/ngtcp2.c
index 864751101..c0f9b16e3 100644
--- a/lib/vquic/ngtcp2.c
+++ b/lib/vquic/ngtcp2.c
@@ -1544,9 +1544,7 @@ static CURLcode ng_flush_egress(struct connectdata *conn, int sockfd,
}
memcpy(&remote_addr, ps.path.remote.addr, ps.path.remote.addrlen);
- while((sent = sendto(sockfd, out, outlen, 0,
- (struct sockaddr *)&remote_addr,
- (socklen_t)ps.path.remote.addrlen)) == -1 &&
+ while((sent = send(sockfd, out, outlen, 0)) == -1 &&
SOCKERRNO == EINTR)
;
@@ -1556,7 +1554,7 @@ static CURLcode ng_flush_egress(struct connectdata *conn, int sockfd,
break;
}
else {
- failf(conn->data, "sendto() returned %zd (errno %d)\n", sent,
+ failf(conn->data, "send() returned %zd (errno %d)\n", sent,
SOCKERRNO);
return CURLE_SEND_ERROR;
}