summaryrefslogtreecommitdiff
path: root/www/chromium/files/patch-net_socket_udp__socket__posix.cc
diff options
context:
space:
mode:
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.cc62
1 files changed, 34 insertions, 28 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 61a629e3f333..6516e22aaf92 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,15 @@
---- 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 @@
+--- net/socket/udp_socket_posix.cc.orig 2018-02-24 16:25:17.000000000 +0100
++++ net/socket/udp_socket_posix.cc 2018-03-04 03:08:15.161087000 +0100
+@@ -69,7 +69,7 @@
const base::TimeDelta kActivityMonitorMsThreshold =
base::TimeDelta::FromMilliseconds(100);
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_BSD)
+-#if defined(OS_MACOSX) || defined(OS_FUCHSIA)
++#if defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD)
- // Returns IPv4 address in network order.
- int GetIPv4AddressFromIndex(int socket, uint32_t index, uint32_t* address) {
-@@ -617,7 +617,7 @@
+ // When enabling multicast using setsockopt(IP_MULTICAST_IF) MacOS and Fuchsia
+ // require passing IPv4 address instead of interface index. This function
+@@ -647,13 +647,16 @@
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
int value = broadcast ? 1 : 0;
int rv;
@@ -18,26 +18,32 @@
// SO_REUSEPORT on OSX permits multiple processes to each receive
// UDP multicast or broadcast datagrams destined for the bound
// port.
-@@ -830,7 +830,7 @@
+ // This is only being set on OSX because its behavior is platform dependent
+ // and we are playing it safe by only setting it on platforms where things
+ // break.
++ rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
++ if (rv != 0)
++ return MapSystemError(errno);
+ rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEPORT, &value, sizeof(value));
+ if (rv != 0)
+ return MapSystemError(errno);
+@@ -860,19 +863,24 @@
if (multicast_interface_ != 0) {
switch (addr_family_) {
case AF_INET: {
--#if !defined(OS_MACOSX)
-+#if !defined(OS_MACOSX) && !defined(OS_BSD)
+-#if defined(OS_MACOSX) || defined(OS_FUCHSIA)
++#if defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ ip_mreq mreq;
+ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
+ &mreq.imr_interface.s_addr);
+ if (error != OK)
+ return error;
+-#else // defined(OS_MACOSX) || defined(OS_FUCHSIA)
++#else // defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD)
ip_mreqn mreq;
mreq.imr_ifindex = multicast_interface_;
mreq.imr_address.s_addr = htonl(INADDR_ANY);
-@@ -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
+ #endif // !defined(OS_MACOSX) && !defined(OS_FUCHSIA)
int rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_IF,
+#if defined(OS_BSD)
+ reinterpret_cast<const char*>(&mreq.imr_interface.s_addr),
@@ -48,12 +54,12 @@
if (rv)
return MapSystemError(errno);
break;
-@@ -905,7 +917,7 @@
+@@ -934,7 +942,7 @@
if (addr_family_ != AF_INET)
return ERR_ADDRESS_INVALID;
--#if !defined(OS_MACOSX)
-+#if !defined(OS_MACOSX) && !defined(OS_BSD)
- ip_mreqn mreq;
- mreq.imr_ifindex = multicast_interface_;
- mreq.imr_address.s_addr = htonl(INADDR_ANY);
+-#if defined(OS_MACOSX) || defined(OS_FUCHSIA)
++#if defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ ip_mreq mreq;
+ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
+ &mreq.imr_interface.s_addr);