mirror of
https://github.com/moparisthebest/curl
synced 2025-01-11 05:58:01 -05:00
connect: on linux, enable reporting of all ICMP errors on UDP sockets
The linux kernel does not report all ICMP errors back to userspace due to historical reasons. IP*_RECVERR sockopt must be turned on to have the correct behaviour which is to pass all ICMP errors to userspace. See https://bugzilla.kernel.org/show_bug.cgi?id=202355 Closes #6341
This commit is contained in:
parent
a7696c7343
commit
d13179db3e
@ -1574,6 +1574,20 @@ CURLcode Curl_socket(struct connectdata *conn,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(__linux__) && defined(IP_RECVERR)
|
||||
if(addr->socktype == SOCK_DGRAM) {
|
||||
int one = 1;
|
||||
switch(addr->family) {
|
||||
case AF_INET:
|
||||
setsockopt(*sockfd, SOL_IP, IP_RECVERR, &one, sizeof(one));
|
||||
break;
|
||||
case AF_INET6:
|
||||
setsockopt(*sockfd, SOL_IPV6, IPV6_RECVERR, &one, sizeof(one));
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return CURLE_OK;
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user