handle Retry packets in a separate Go routine

This commit is contained in:
Marten Seemann
2018-11-27 14:11:09 +07:00
parent 7fecf8e478
commit 574126d0eb

View File

@@ -295,9 +295,7 @@ func (c *client) handlePacket(p *receivedPacket) {
} }
if p.hdr.Type == protocol.PacketTypeRetry { if p.hdr.Type == protocol.PacketTypeRetry {
c.mutex.Lock() go c.handleRetryPacket(p.hdr)
c.handleRetryPacket(p.hdr)
c.mutex.Unlock()
return return
} }
@@ -347,6 +345,9 @@ func (c *client) handleVersionNegotiationPacket(hdr *wire.Header) {
} }
func (c *client) handleRetryPacket(hdr *wire.Header) { func (c *client) handleRetryPacket(hdr *wire.Header) {
c.mutex.Lock()
defer c.mutex.Unlock()
c.logger.Debugf("<- Received Retry") c.logger.Debugf("<- Received Retry")
(&wire.ExtendedHeader{Header: *hdr}).Log(c.logger) (&wire.ExtendedHeader{Header: *hdr}).Log(c.logger)
if !hdr.OrigDestConnectionID.Equal(c.destConnID) { if !hdr.OrigDestConnectionID.Equal(c.destConnID) {