forked from quic-go/quic-go
simplify handling of Public Resets in the server
The server shouldn't receive any Public Resets. There is no need to attempt parsing them, since they are ignored anyway.
This commit is contained in:
12
server.go
12
server.go
@@ -334,17 +334,7 @@ func (s *server) handlePacket(pconn net.PacketConn, remoteAddr net.Addr, packet
|
||||
|
||||
// ignore all Public Reset packets
|
||||
if hdr.ResetFlag {
|
||||
if sessionKnown {
|
||||
var pr *wire.PublicReset
|
||||
pr, err = wire.ParsePublicReset(r)
|
||||
if err != nil {
|
||||
s.logger.Infof("Received a Public Reset for connection %s. An error occurred parsing the packet.", hdr.DestConnectionID)
|
||||
} else {
|
||||
s.logger.Infof("Received a Public Reset for connection %s, rejected packet number: 0x%x.", hdr.DestConnectionID, pr.RejectedPacketNumber)
|
||||
}
|
||||
} else {
|
||||
s.logger.Infof("Received Public Reset for unknown connection %s.", hdr.DestConnectionID)
|
||||
}
|
||||
s.logger.Infof("Received unexpected Public Reset for connection %s.", hdr.DestConnectionID)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -419,13 +419,7 @@ var _ = Describe("Server", func() {
|
||||
Expect(serv.sessions[string(connID)].(*mockSession).handledPackets[1].data).To(HaveLen(123))
|
||||
})
|
||||
|
||||
It("ignores public resets for unknown connections", func() {
|
||||
err := serv.handlePacket(nil, nil, wire.WritePublicReset([]byte{9, 9, 9, 9, 9, 9, 9, 9}, 1, 1337))
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(serv.sessions).To(BeEmpty())
|
||||
})
|
||||
|
||||
It("ignores public resets for known connections", func() {
|
||||
It("ignores Public Resets", func() {
|
||||
err := serv.handlePacket(nil, nil, firstPacket)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(serv.sessions).To(HaveLen(1))
|
||||
@@ -436,18 +430,6 @@ var _ = Describe("Server", func() {
|
||||
Expect(serv.sessions[string(connID)].(*mockSession).handledPackets).To(HaveLen(1))
|
||||
})
|
||||
|
||||
It("ignores invalid public resets for known connections", func() {
|
||||
err := serv.handlePacket(nil, nil, firstPacket)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(serv.sessions).To(HaveLen(1))
|
||||
Expect(serv.sessions[string(connID)].(*mockSession).handledPackets).To(HaveLen(1))
|
||||
data := wire.WritePublicReset(connID, 1, 1337)
|
||||
err = serv.handlePacket(nil, nil, data[:len(data)-2])
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(serv.sessions).To(HaveLen(1))
|
||||
Expect(serv.sessions[string(connID)].(*mockSession).handledPackets).To(HaveLen(1))
|
||||
})
|
||||
|
||||
It("doesn't try to process a packet after sending a gQUIC Version Negotiation Packet", func() {
|
||||
config.Versions = []protocol.VersionNumber{99}
|
||||
b := &bytes.Buffer{}
|
||||
|
||||
Reference in New Issue
Block a user