diff --git a/quic/happyeyeballs/QuicHappyEyeballsFunctions.cpp b/quic/happyeyeballs/QuicHappyEyeballsFunctions.cpp index 274bc4f21..ad42f1f9e 100644 --- a/quic/happyeyeballs/QuicHappyEyeballsFunctions.cpp +++ b/quic/happyeyeballs/QuicHappyEyeballsFunctions.cpp @@ -129,30 +129,7 @@ void happyEyeballsSetUpSocket( socket.bind(folly::SocketAddress("::", 0)); } if (transportSettings.turnoffPMTUD) { - // TODO: Clean this up or move this into AsyncUDPSocket once we have a - // better idea of how to handle PMTU -#if defined(IP_MTU_DISCOVER) && defined(IP_PMTUDISC_PROBE) - if (socket.address().getFamily() == AF_INET) { - int v4 = IP_PMTUDISC_PROBE; - folly::netops::setsockopt( - socket.getNetworkSocket(), - IPPROTO_IP, - IP_MTU_DISCOVER, - &v4, - sizeof(v4)); - } -#endif -#if defined(IPV6_MTU_DISCOVER) && defined(IPV6_PMTUDISC_PROBE) - if (socket.address().getFamily() == AF_INET6) { - int v6 = IPV6_PMTUDISC_PROBE; - folly::netops::setsockopt( - socket.getNetworkSocket(), - IPPROTO_IPV6, - IPV6_MTU_DISCOVER, - &v6, - sizeof(v6)); - } -#endif + socket.setDFAndTurnOffPMTU(); } else { socket.dontFragment(true); } diff --git a/quic/server/QuicServerWorker.cpp b/quic/server/QuicServerWorker.cpp index cc4079405..603ef1677 100644 --- a/quic/server/QuicServerWorker.cpp +++ b/quic/server/QuicServerWorker.cpp @@ -34,7 +34,7 @@ void QuicServerWorker::bind(const folly::SocketAddress& address) { DCHECK(!supportedVersions_.empty()); CHECK(socket_); socket_->bind(address); - socket_->dontFragment(true); + socket_->setDFAndTurnOffPMTU(); } void QuicServerWorker::setTransportSettingsOverrideFn( diff --git a/quic/server/QuicSharedUDPSocketFactory.h b/quic/server/QuicSharedUDPSocketFactory.h index 5628adfec..3d5bdd7b6 100644 --- a/quic/server/QuicSharedUDPSocketFactory.h +++ b/quic/server/QuicSharedUDPSocketFactory.h @@ -24,7 +24,7 @@ class QuicSharedUDPSocketFactory : public QuicUDPSocketFactory { sock->setFD( folly::NetworkSocket::fromFd(fd), folly::AsyncUDPSocket::FDOwnership::SHARED); - sock->dontFragment(true); + sock->setDFAndTurnOffPMTU(); } return sock; } diff --git a/quic/server/test/QuicServerTest.cpp b/quic/server/test/QuicServerTest.cpp index b6e79d492..29d757460 100644 --- a/quic/server/test/QuicServerTest.cpp +++ b/quic/server/test/QuicServerTest.cpp @@ -67,7 +67,7 @@ class SimpleQuicServerWorkerTest : public Test { folly::test::MockAsyncUDPSocket* rawSocket_{nullptr}; }; -TEST_F(SimpleQuicServerWorkerTest, DontFragment) { +TEST_F(SimpleQuicServerWorkerTest, TurnOffPMTU) { auto sock = std::make_unique(&eventbase_); rawSocket_ = sock.get(); DCHECK(sock->getEventBase()); @@ -79,7 +79,7 @@ TEST_F(SimpleQuicServerWorkerTest, DontFragment) { folly::SocketAddress addr("::1", 0); // We check versions in bind() worker_->setSupportedVersions({QuicVersion::MVFST}); - EXPECT_CALL(*rawSocket_, dontFragment(true)).Times(1); + EXPECT_CALL(*rawSocket_, setDFAndTurnOffPMTU()).Times(1); worker_->bind(addr); }