forked from quic-go/quic-go
drop packets with version numbers that don't match the session's version
This commit is contained in:
@@ -711,6 +711,14 @@ func (s *session) handlePacketImpl(rp *receivedPacket) bool {
|
||||
break
|
||||
}
|
||||
|
||||
if hdr.IsLongHeader && hdr.Version != s.version {
|
||||
if s.qlogger != nil {
|
||||
s.qlogger.DroppedPacket(qlog.PacketTypeFromHeader(hdr), protocol.ByteCount(len(data)), qlog.PacketDropUnexpectedVersion)
|
||||
}
|
||||
s.logger.Debugf("Dropping packet with version %x. Expected %x.", hdr.Version, s.version)
|
||||
break
|
||||
}
|
||||
|
||||
if counter > 0 && !hdr.DestConnectionID.Equal(lastConnID) {
|
||||
if s.qlogger != nil {
|
||||
s.qlogger.DroppedPacket(qlog.PacketTypeFromHeader(hdr), protocol.ByteCount(len(data)), qlog.PacketDropUnknownConnectionID)
|
||||
|
||||
@@ -616,6 +616,28 @@ var _ = Describe("Session", func() {
|
||||
Expect(sess.handlePacketImpl(p)).To(BeFalse())
|
||||
})
|
||||
|
||||
It("drops packets with an unsupported version", func() {
|
||||
origSupportedVersions := make([]protocol.VersionNumber, len(protocol.SupportedVersions))
|
||||
copy(origSupportedVersions, protocol.SupportedVersions)
|
||||
defer func() {
|
||||
protocol.SupportedVersions = origSupportedVersions
|
||||
}()
|
||||
|
||||
protocol.SupportedVersions = append(protocol.SupportedVersions, sess.version+1)
|
||||
p := getPacket(&wire.ExtendedHeader{
|
||||
Header: wire.Header{
|
||||
IsLongHeader: true,
|
||||
Type: protocol.PacketTypeHandshake,
|
||||
DestConnectionID: destConnID,
|
||||
SrcConnectionID: srcConnID,
|
||||
Version: sess.version + 1,
|
||||
},
|
||||
PacketNumberLen: protocol.PacketNumberLen2,
|
||||
}, nil)
|
||||
qlogger.EXPECT().DroppedPacket(qlog.PacketTypeHandshake, protocol.ByteCount(len(p.data)), qlog.PacketDropUnexpectedVersion)
|
||||
Expect(sess.handlePacketImpl(p)).To(BeFalse())
|
||||
})
|
||||
|
||||
It("informs the ReceivedPacketHandler about non-ack-eliciting packets", func() {
|
||||
hdr := &wire.ExtendedHeader{
|
||||
Header: wire.Header{DestConnectionID: srcConnID},
|
||||
|
||||
Reference in New Issue
Block a user