mirror of
https://github.com/refraction-networking/uquic.git
synced 2025-04-06 21:57:36 +03:00
disable Path MTU Discovery on Windows
This commit is contained in:
parent
3b46d7402c
commit
d410b590e9
8 changed files with 56 additions and 34 deletions
|
@ -9,6 +9,7 @@ import (
|
|||
"fmt"
|
||||
"io"
|
||||
"net"
|
||||
"runtime"
|
||||
"runtime/pprof"
|
||||
"strings"
|
||||
"time"
|
||||
|
@ -1681,33 +1682,35 @@ var _ = Describe("Session", func() {
|
|||
time.Sleep(50 * time.Millisecond)
|
||||
})
|
||||
|
||||
It("sends a Path MTU probe packet", func() {
|
||||
mtuDiscoverer := NewMockMtuDiscoverer(mockCtrl)
|
||||
sess.mtuDiscoverer = mtuDiscoverer
|
||||
sess.config.DisablePathMTUDiscovery = false
|
||||
sph.EXPECT().SentPacket(gomock.Any())
|
||||
sph.EXPECT().HasPacingBudget().Return(true).AnyTimes()
|
||||
sph.EXPECT().SendMode().Return(ackhandler.SendAny)
|
||||
sph.EXPECT().SendMode().Return(ackhandler.SendNone)
|
||||
written := make(chan struct{}, 1)
|
||||
sender.EXPECT().WouldBlock().AnyTimes()
|
||||
sender.EXPECT().Send(gomock.Any()).DoAndReturn(func(p *packetBuffer) { written <- struct{}{} })
|
||||
gomock.InOrder(
|
||||
mtuDiscoverer.EXPECT().NextProbeTime(),
|
||||
mtuDiscoverer.EXPECT().ShouldSendProbe(gomock.Any()).Return(true),
|
||||
mtuDiscoverer.EXPECT().NextProbeTime(),
|
||||
)
|
||||
ping := ackhandler.Frame{Frame: &wire.PingFrame{}}
|
||||
mtuDiscoverer.EXPECT().GetPing().Return(ping, protocol.ByteCount(1234))
|
||||
packer.EXPECT().PackMTUProbePacket(ping, protocol.ByteCount(1234)).Return(getPacket(1), nil)
|
||||
go func() {
|
||||
defer GinkgoRecover()
|
||||
cryptoSetup.EXPECT().RunHandshake().MaxTimes(1)
|
||||
sess.run()
|
||||
}()
|
||||
sess.scheduleSending()
|
||||
Eventually(written).Should(Receive())
|
||||
})
|
||||
if runtime.GOOS != "windows" { // Path MTU Discovery is disabled on Windows
|
||||
It("sends a Path MTU probe packet", func() {
|
||||
mtuDiscoverer := NewMockMtuDiscoverer(mockCtrl)
|
||||
sess.mtuDiscoverer = mtuDiscoverer
|
||||
sess.config.DisablePathMTUDiscovery = false
|
||||
sph.EXPECT().SentPacket(gomock.Any())
|
||||
sph.EXPECT().HasPacingBudget().Return(true).AnyTimes()
|
||||
sph.EXPECT().SendMode().Return(ackhandler.SendAny)
|
||||
sph.EXPECT().SendMode().Return(ackhandler.SendNone)
|
||||
written := make(chan struct{}, 1)
|
||||
sender.EXPECT().WouldBlock().AnyTimes()
|
||||
sender.EXPECT().Send(gomock.Any()).DoAndReturn(func(p *packetBuffer) { written <- struct{}{} })
|
||||
gomock.InOrder(
|
||||
mtuDiscoverer.EXPECT().NextProbeTime(),
|
||||
mtuDiscoverer.EXPECT().ShouldSendProbe(gomock.Any()).Return(true),
|
||||
mtuDiscoverer.EXPECT().NextProbeTime(),
|
||||
)
|
||||
ping := ackhandler.Frame{Frame: &wire.PingFrame{}}
|
||||
mtuDiscoverer.EXPECT().GetPing().Return(ping, protocol.ByteCount(1234))
|
||||
packer.EXPECT().PackMTUProbePacket(ping, protocol.ByteCount(1234)).Return(getPacket(1), nil)
|
||||
go func() {
|
||||
defer GinkgoRecover()
|
||||
cryptoSetup.EXPECT().RunHandshake().MaxTimes(1)
|
||||
sess.run()
|
||||
}()
|
||||
sess.scheduleSending()
|
||||
Eventually(written).Should(Receive())
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
Context("scheduling sending", func() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue