forked from quic-go/quic-go
packet packer: don't try packing a 0-RTT packet with only an ACK (#3849)
0-RTT packets can't contain ACK frames. This was correctly reflected in the code path for packing a 0-RTT packet, but we would ignore the ACK-only flag when packing the coalesced packet, leading to a full-size 0-RTT packet being sent out when we're only allowed to send an ACK-only packet.
This commit is contained in:
@@ -417,7 +417,7 @@ func (p *packetPacker) PackCoalescedPacket(onlyAck bool, v protocol.VersionNumbe
|
||||
if oneRTTPayload.length > 0 {
|
||||
size += p.shortHeaderPacketLength(connID, oneRTTPacketNumberLen, oneRTTPayload) + protocol.ByteCount(oneRTTSealer.Overhead())
|
||||
}
|
||||
} else if p.perspective == protocol.PerspectiveClient { // 0-RTT
|
||||
} else if p.perspective == protocol.PerspectiveClient && !onlyAck { // 0-RTT packets can't contain ACK frames
|
||||
var err error
|
||||
zeroRTTSealer, err = p.cryptoSetup.Get0RTTSealer()
|
||||
if err != nil && err != handshake.ErrKeysDropped && err != handshake.ErrKeysNotYetAvailable {
|
||||
|
||||
Reference in New Issue
Block a user