summaryrefslogtreecommitdiff
path: root/rudp/peer.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/peer.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/peer.go')
-rw-r--r--rudp/peer.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/rudp/peer.go b/rudp/peer.go
index 9dca93d..4d8df47 100644
--- a/rudp/peer.go
+++ b/rudp/peer.go
@@ -1,6 +1,7 @@
package rudp
import (
+ "errors"
"fmt"
"net"
"sync"
@@ -167,6 +168,9 @@ func (p *Peer) sendPings(ping <-chan time.Time) {
select {
case <-ping:
if _, err := p.sendRaw(pkt); err != nil {
+ if errors.Is(err, net.ErrClosed) {
+ return
+ }
p.errs <- fmt.Errorf("can't send ping: %w", err)
}
case <-p.Disco():
@@ -176,7 +180,7 @@ func (p *Peer) sendPings(ping <-chan time.Time) {
}
// Connect connects to the server on conn
-// and closes conn when the Peer disconnects.
+// and closes conn when the returned *Peer disconnects.
func Connect(conn net.PacketConn, addr net.Addr) *Peer {
srv := newPeer(conn, addr, PeerIDSrv, PeerIDNil)