forked from quic-go/quic-go
put back packet buffers after processing a packet
This introduces a reference counter in the packet buffer, which will be used to process coalesced packets.
This commit is contained in:
@@ -318,21 +318,27 @@ func (s *server) handlePacket(p *receivedPacket) {
|
||||
}
|
||||
if hdr.Type == protocol.PacketTypeInitial {
|
||||
go s.handleInitial(p)
|
||||
return
|
||||
}
|
||||
|
||||
putPacketBuffer(p.buffer)
|
||||
// TODO(#943): send Stateless Reset
|
||||
}
|
||||
|
||||
func (s *server) handleInitial(p *receivedPacket) {
|
||||
// TODO: add a check that DestConnID == SrcConnID
|
||||
s.logger.Debugf("<- Received Initial packet.")
|
||||
sess, connID, err := s.handleInitialImpl(p)
|
||||
if err != nil {
|
||||
putPacketBuffer(p.buffer)
|
||||
s.logger.Errorf("Error occurred handling initial packet: %s", err)
|
||||
return
|
||||
}
|
||||
if sess == nil { // a retry was done
|
||||
putPacketBuffer(p.buffer)
|
||||
return
|
||||
}
|
||||
// Don't put the packet buffer back if a new session was created.
|
||||
// The session will handle the packet and take of that.
|
||||
serverSession := newServerSession(sess, s.config, s.logger)
|
||||
s.sessionHandler.Add(connID, serverSession)
|
||||
}
|
||||
@@ -455,6 +461,7 @@ func (s *server) sendRetry(remoteAddr net.Addr, hdr *wire.Header) error {
|
||||
}
|
||||
|
||||
func (s *server) sendVersionNegotiationPacket(p *receivedPacket) {
|
||||
defer putPacketBuffer(p.buffer)
|
||||
hdr := p.hdr
|
||||
s.logger.Debugf("Client offered version %s, sending Version Negotiation", hdr.Version)
|
||||
data, err := wire.ComposeVersionNegotiation(hdr.SrcConnectionID, hdr.DestConnectionID, s.config.Versions)
|
||||
|
||||
Reference in New Issue
Block a user