From 7d69943c17614bcf6733ff0b3206374d272e274b Mon Sep 17 00:00:00 2001 From: anon5 Date: Sun, 28 Feb 2021 18:54:41 +0000 Subject: rudp: fix errors returned by Peer.Recv other than net.ErrClosed when the Peer is closed --- rudp/process.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'rudp/process.go') diff --git a/rudp/process.go b/rudp/process.go index 70c04a2..c85aba4 100644 --- a/rudp/process.go +++ b/rudp/process.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "io" + "net" ) // A PktError is an error that occured while processing a packet. @@ -140,9 +141,7 @@ func (p *Peer) processRawPkt(pkt rawPkt) (err error) { case ctlDisco: defer errWrap("disco: %w") - if err := p.Close(); err != nil { - return fmt.Errorf("can't close: %w", err) - } + p.Close() if len(pkt.Data) > 1+1 { return TrailingDataError(pkt.Data[1+1:]) @@ -226,6 +225,9 @@ func (p *Peer) processRawPkt(pkt rawPkt) (err error) { Unrel: true, } if _, err := p.sendRaw(ack); err != nil { + if errors.Is(err, net.ErrClosed) { + return nil + } return fmt.Errorf("can't ack %d: %w", sn, err) } -- cgit v1.2.3