From fafbbcd7103f7c81a6bf521f1fbd6105149face2 Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Thu, 15 Oct 2020 23:16:59 +0200 Subject: [PATCH] wip --- quinn/src/platform/unix.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/quinn/src/platform/unix.rs b/quinn/src/platform/unix.rs index e9b3bfd00..7eacac90f 100644 --- a/quinn/src/platform/unix.rs +++ b/quinn/src/platform/unix.rs @@ -38,14 +38,18 @@ impl super::UdpExt for UdpSocket { let addr = self.local_addr()?; // macos and ios do not support IP_RECVTOS on dual-stack sockets :( - if addr.is_ipv4() - || ((!cfg!(any(target_os = "macos", target_os = "ios"))) && !self.only_v6()?) - { + if addr.is_ipv4() { + let proto = if !cfg!(any(target_os = "macos", target_os = "ios")) && !self.only_v6()? { + libc::IPPROTO_IPV6 + } else { + libc::IPPROTO_IP + }; + let on: libc::c_int = 1; let rc = unsafe { libc::setsockopt( self.as_raw_fd(), - libc::IPPROTO_IP, + proto, libc::IP_RECVTOS, &on as *const _ as _, mem::size_of_val(&on) as _,