summaryrefslogtreecommitdiff
path: root/rudp/process.go
diff options
context:
space:
mode:
authoranon5 <anon5clam@protonmail.com>2021-02-28 18:54:41 +0000
committeranon5 <anon5clam@protonmail.com>2021-02-28 18:54:41 +0000
commit7d69943c17614bcf6733ff0b3206374d272e274b (patch)
tree29301ea544edf7b37442f79e0a6085a28d0cf7e3 /rudp/process.go
parent27c0776cb2f1084356df5c9f6080fecf20f8fddf (diff)
downloadmt-7d69943c17614bcf6733ff0b3206374d272e274b.tar.xz
rudp: fix errors returned by Peer.Recv other than net.ErrClosed when the Peer is closed
Diffstat (limited to 'rudp/process.go')
-rw-r--r--rudp/process.go8
1 files changed, 5 insertions, 3 deletions
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)
}