don't send packets after receiving a CONNECTION_CLOSE

This commit is contained in:
Marten Seemann
2020-02-24 15:50:10 +07:00
parent 8aeb510dd2
commit d50f935319
2 changed files with 35 additions and 0 deletions

View File

@@ -535,6 +535,12 @@ runLoop:
if wasProcessed := s.handlePacketImpl(p); !wasProcessed {
continue
}
// Don't set timers and send packets if the packet made us close the session.
select {
case closeErr = <-s.closeChan:
break runLoop
default:
}
case <-s.handshakeCompleteChan:
s.handleHandshakeComplete()
}
@@ -1105,6 +1111,7 @@ func (s *session) closeForRecreating() protocol.PacketNumber {
func (s *session) closeRemote(e error) {
s.closeOnce.Do(func() {
s.logger.Errorf("Peer closed session with error: %s", e)
s.logger.Debugf("sending to close chan")
s.closeChan <- closeError{err: e, immediate: true, remote: true}
})
}