forked from quic-go/quic-go
initialize the MTU discoverer when processing the transport parameters (#4514)
On the client side, we always use the configured packet size. This comes with the risk of failing the handshake if the path doesn't support this MTU. If the server sends a max_udp_payload_size that's smaller than this size, we can safely ignore this: Obviously, the server still processed the (fully padded) Initial packet, despite claiming that it wouldn't do so. On the server side, there's no downside to using 1200 bytes until we received the client's transport parameters: * If the first packet didn't contain the entire ClientHello, all we can do is ACK that packet. We don't need a lot of bytes for that. * If it did, we will have processed the transport parameters and initialized the MTU discoverer.
This commit is contained in:
@@ -29,8 +29,8 @@ var _ = Describe("MTU Discoverer", func() {
|
||||
rttStats = &utils.RTTStats{}
|
||||
rttStats.SetInitialRTT(rtt)
|
||||
Expect(rttStats.SmoothedRTT()).To(Equal(rtt))
|
||||
d = newMTUDiscoverer(rttStats, startMTU, func(s protocol.ByteCount) { discoveredMTU = s })
|
||||
d.Start(maxMTU)
|
||||
d = newMTUDiscoverer(rttStats, startMTU, maxMTU, func(s protocol.ByteCount) { discoveredMTU = s })
|
||||
d.Start()
|
||||
now = time.Now()
|
||||
})
|
||||
|
||||
@@ -78,7 +78,7 @@ var _ = Describe("MTU Discoverer", func() {
|
||||
})
|
||||
|
||||
It("doesn't do discovery before being started", func() {
|
||||
d := newMTUDiscoverer(rttStats, startMTU, func(s protocol.ByteCount) {})
|
||||
d := newMTUDiscoverer(rttStats, startMTU, protocol.MaxByteCount, func(s protocol.ByteCount) {})
|
||||
for i := 0; i < 5; i++ {
|
||||
Expect(d.ShouldSendProbe(time.Now())).To(BeFalse())
|
||||
}
|
||||
@@ -90,8 +90,8 @@ var _ = Describe("MTU Discoverer", func() {
|
||||
for i := 0; i < rep; i++ {
|
||||
maxMTU := protocol.ByteCount(rand.Intn(int(3000-startMTU))) + startMTU + 1
|
||||
currentMTU := startMTU
|
||||
d := newMTUDiscoverer(rttStats, startMTU, func(s protocol.ByteCount) { currentMTU = s })
|
||||
d.Start(maxMTU)
|
||||
d := newMTUDiscoverer(rttStats, startMTU, maxMTU, func(s protocol.ByteCount) { currentMTU = s })
|
||||
d.Start()
|
||||
now := time.Now()
|
||||
realMTU := protocol.ByteCount(rand.Intn(int(maxMTU-startMTU))) + startMTU
|
||||
t := now.Add(mtuProbeDelay * rtt)
|
||||
|
||||
Reference in New Issue
Block a user