diff options
Diffstat (limited to 'www/chromium/files/patch-net_socket_udp__socket__posix.cc')
-rw-r--r-- | www/chromium/files/patch-net_socket_udp__socket__posix.cc | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/www/chromium/files/patch-net_socket_udp__socket__posix.cc b/www/chromium/files/patch-net_socket_udp__socket__posix.cc index 96b22bf317e4..61a629e3f333 100644 --- a/www/chromium/files/patch-net_socket_udp__socket__posix.cc +++ b/www/chromium/files/patch-net_socket_udp__socket__posix.cc @@ -1,15 +1,24 @@ ---- net/socket/udp_socket_posix.cc.orig 2017-06-05 19:03:10 UTC -+++ net/socket/udp_socket_posix.cc -@@ -60,7 +60,7 @@ const int kBindRetries = 10; - const int kPortStart = 1024; - const int kPortEnd = 65535; +--- net/socket/udp_socket_posix.cc.orig 2018-01-04 21:05:56.000000000 +0100 ++++ net/socket/udp_socket_posix.cc 2018-01-21 13:53:16.974899000 +0100 +@@ -64,7 +64,7 @@ + const base::TimeDelta kActivityMonitorMsThreshold = + base::TimeDelta::FromMilliseconds(100); -#if defined(OS_MACOSX) +#if defined(OS_MACOSX) || defined(OS_BSD) // Returns IPv4 address in network order. int GetIPv4AddressFromIndex(int socket, uint32_t index, uint32_t* address) { -@@ -759,7 +759,7 @@ int UDPSocketPosix::SetMulticastOptions() { +@@ -617,7 +617,7 @@ + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + int value = broadcast ? 1 : 0; + int rv; +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + // SO_REUSEPORT on OSX permits multiple processes to each receive + // UDP multicast or broadcast datagrams destined for the bound + // port. +@@ -830,7 +830,7 @@ if (multicast_interface_ != 0) { switch (addr_family_) { case AF_INET: { @@ -18,7 +27,28 @@ ip_mreqn mreq; mreq.imr_ifindex = multicast_interface_; mreq.imr_address.s_addr = htonl(INADDR_ANY); -@@ -834,7 +834,7 @@ int UDPSocketPosix::JoinGroup(const IPAddress& group_a +@@ -841,8 +841,20 @@ + if (error != OK) + return error; + #endif ++#if defined(OS_BSD) ++ int value = 1; ++ if (setsockopt(socket_, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value)) != 0) ++ return MapSystemError(errno); ++ if (setsockopt(socket_, SOL_SOCKET, SO_REUSEPORT, &value, sizeof(value)) != 0) ++ return MapSystemError(errno); ++#endif + int rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_IF, ++#if defined(OS_BSD) ++ reinterpret_cast<const char*>(&mreq.imr_interface.s_addr), ++ sizeof(mreq.imr_interface.s_addr)); ++#else + reinterpret_cast<const char*>(&mreq), sizeof(mreq)); ++#endif + if (rv) + return MapSystemError(errno); + break; +@@ -905,7 +917,7 @@ if (addr_family_ != AF_INET) return ERR_ADDRESS_INVALID; |