summaryrefslogtreecommitdiff
path: root/devel/electron4/files/patch-net_socket_udp__socket__posix.cc
diff options
context:
space:
mode:
authorAntoine Brodin <antoine@FreeBSD.org>2021-01-01 10:11:34 +0000
committerAntoine Brodin <antoine@FreeBSD.org>2021-01-01 10:11:34 +0000
commit26b4c8f71f91d22e081b27814782686edde0c90a (patch)
tree1c321c39372c25d8634e75b5c8e08edc676b296d /devel/electron4/files/patch-net_socket_udp__socket__posix.cc
parentNew port: math/py-optuna: A hyperparameter optimization framework (diff)
Revert r559792 to unbreak INDEX and bulk -a
It seems a lot of reverse dependencies were missed With hat: portmgr
Diffstat (limited to 'devel/electron4/files/patch-net_socket_udp__socket__posix.cc')
-rw-r--r--devel/electron4/files/patch-net_socket_udp__socket__posix.cc96
1 files changed, 96 insertions, 0 deletions
diff --git a/devel/electron4/files/patch-net_socket_udp__socket__posix.cc b/devel/electron4/files/patch-net_socket_udp__socket__posix.cc
new file mode 100644
index 000000000000..0cd590ef675b
--- /dev/null
+++ b/devel/electron4/files/patch-net_socket_udp__socket__posix.cc
@@ -0,0 +1,96 @@
+--- net/socket/udp_socket_posix.cc.orig 2019-03-15 06:37:30 UTC
++++ net/socket/udp_socket_posix.cc
+@@ -68,7 +68,7 @@ const int kActivityMonitorMinimumSamplesForThroughputE
+ const base::TimeDelta kActivityMonitorMsThreshold =
+ base::TimeDelta::FromMilliseconds(100);
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // When enabling multicast using setsockopt(IP_MULTICAST_IF) MacOS
+ // requires passing IPv4 address instead of interface index. This function
+ // resolves IPv4 address by interface index. The |address| is returned in
+@@ -97,7 +97,7 @@ int GetIPv4AddressFromIndex(int socket, uint32_t index
+ return OK;
+ }
+
+-#endif // OS_MACOSX
++#endif // OS_MACOSX || OS_BSD
+
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
+
+@@ -632,13 +632,13 @@ int UDPSocketPosix::SetDoNotFragment() {
+ }
+
+ void UDPSocketPosix::SetMsgConfirm(bool confirm) {
+-#if !defined(OS_MACOSX) && !defined(OS_IOS)
++#if !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD)
+ if (confirm) {
+ sendto_flags_ |= MSG_CONFIRM;
+ } else {
+ sendto_flags_ &= ~MSG_CONFIRM;
+ }
+-#endif // !defined(OS_MACOSX) && !defined(OS_IOS)
++#endif // !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD)
+ }
+
+ int UDPSocketPosix::AllowAddressReuse() {
+@@ -653,17 +653,20 @@ int UDPSocketPosix::SetBroadcast(bool broadcast) {
+ 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.
+ // 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);
+-#endif // defined(OS_MACOSX)
++#endif // defined(OS_MACOSX) || defined(OS_BSD)
+ rv = setsockopt(socket_, SOL_SOCKET, SO_BROADCAST, &value, sizeof(value));
+
+ return rv == 0 ? OK : MapSystemError(errno);
+@@ -901,19 +904,24 @@ int UDPSocketPosix::SetMulticastOptions() {
+ if (multicast_interface_ != 0) {
+ switch (addr_family_) {
+ case AF_INET: {
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || 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)
++#else // defined(OS_MACOSX) || defined(OS_BSD)
+ ip_mreqn mreq = {};
+ mreq.imr_ifindex = multicast_interface_;
+ mreq.imr_address.s_addr = htonl(INADDR_ANY);
+-#endif // !defined(OS_MACOSX)
++#endif // !defined(OS_MACOSX) || defined(OS_BSD)
+ int rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_IF,
++#ifdef 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;
+@@ -975,7 +983,7 @@ int UDPSocketPosix::JoinGroup(const IPAddress& group_a
+ if (addr_family_ != AF_INET)
+ return ERR_ADDRESS_INVALID;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ ip_mreq mreq = {};
+ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
+ &mreq.imr_interface.s_addr);