]> git.lizzy.rs Git - mt.git/blobdiff - rudp/process.go
rudp: fix errors returned by Peer.Recv other than net.ErrClosed when the Peer is...
[mt.git] / rudp / process.go
index 70c04a23f3eb161428b15bbd13da47a3472e0e45..c85aba4edafec01fb008bc174a4c20b4c0e066a7 100644 (file)
@@ -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)
                }