diff --git a/main/network.c b/main/network.c index f0559953b227..75e2cc068883 100644 --- a/main/network.c +++ b/main/network.c @@ -919,6 +919,20 @@ php_socket_t php_network_connect_socket_to_host(const char *host, unsigned short setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char*)&val, sizeof(val)); } } +#endif +#ifdef __linux__ + if (socktype == SOCK_DGRAM) { + int val = 1; + switch (sa->sa_family) + { + case AF_INET: + setsockopt(sock, SOL_IP, IP_RECVERR, &val, sizeof (val)); + break; + case AF_INET6: + setsockopt(sock, SOL_IPV6, IPV6_RECVERR, &val, sizeof (val)); + break; + } + } #endif n = php_network_connect_socket(sock, sa, socklen, asynchronous, timeout ? &working_timeout : NULL,