diff options
author | Javier Blazquez <jblazquez@riotgames.com> | 2019-10-27 17:16:24 -0700 |
---|---|---|
committer | Jay Satiro <raysatiro@yahoo.com> | 2019-10-28 15:00:33 -0400 |
commit | 9f5b26d23fe0d666debc4526abe7a078601e20dc (patch) | |
tree | 6d640889452c3a9845d3deb34657dfcd93f9554f /lib/vquic/ngtcp2.c | |
parent | aeafa260cadd8fe6fe03ff090ab30786de9a27e4 (diff) | |
download | curl-9f5b26d23fe0d666debc4526abe7a078601e20dc.tar.gz |
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
Diffstat (limited to 'lib/vquic/ngtcp2.c')
-rw-r--r-- | lib/vquic/ngtcp2.c | 6 |
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; } |