]> git.lizzy.rs Git - mt.git/commitdiff
rudp: deprecate ErrClosed and replace with net.ErrClosed
authoranon5 <anon5clam@protonmail.com>
Sat, 20 Feb 2021 16:31:06 +0000 (16:31 +0000)
committeranon5 <anon5clam@protonmail.com>
Sat, 20 Feb 2021 16:31:06 +0000 (16:31 +0000)
go.mod
rudp/listen.go
rudp/net.go
rudp/peer.go
rudp/process.go
rudp/proxy/proxy.go
rudp/send.go

diff --git a/go.mod b/go.mod
index d31d7f9fd46c05e9abdd24f51a3328bea31c8008..1ea9adc94920bcb6e93d9664b864a0f03ba4821d 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -1,3 +1,3 @@
 module github.com/anon55555/mt
 
-go 1.15
+go 1.16
index 871a5912adcc18a0ad005c39f01454e0543cd98f..2eda819596798b9e3f7b15e1bba940bb54597dfc 100644 (file)
@@ -52,7 +52,7 @@ func Listen(conn net.PacketConn) *Listener {
 }
 
 // Accept waits for and returns a connecting Peer.
-// You should keep calling this until it returns ErrClosed
+// You should keep calling this until it returns net.ErrClosed
 // so it doesn't leak a goroutine.
 func (l *Listener) Accept() (*Peer, error) {
        select {
@@ -62,7 +62,7 @@ func (l *Listener) Accept() (*Peer, error) {
                        case err := <-l.errs:
                                return nil, err
                        default:
-                               return nil, ErrClosed
+                               return nil, net.ErrClosed
                        }
                }
                close(clt.accepted)
index 421a3e73ec9254147dbfb161fb3b30d627281120..e2e728978865bd2d38f6af4a0ef0143d9e67f15d 100644 (file)
@@ -3,11 +3,10 @@ package rudp
 import (
        "errors"
        "net"
-       "strings"
 )
 
-// TODO: Use net.ErrClosed when Go 1.16 is released.
-var ErrClosed = errors.New("use of closed peer")
+// ErrClosed is deprecated, use net.ErrClosed instead.
+var ErrClosed = net.ErrClosed
 
 /*
 netPkt.Data format (big endian):
@@ -27,9 +26,7 @@ func readNetPkts(conn net.PacketConn, pkts chan<- netPkt, errs chan<- error) {
                buf := make([]byte, MaxNetPktSize)
                n, addr, err := conn.ReadFrom(buf)
                if err != nil {
-                       // TODO: Change to this when Go 1.16 is released:
-                       // if errors.Is(err, net.ErrClosed) {
-                       if strings.Contains(err.Error(), "use of closed network connection") {
+                       if errors.Is(err, net.ErrClosed) {
                                break
                        }
 
index feb0ff98ef823a2fc32dcbe792d03c9f0332d442..9dca93d3a878eb3cf727a07e645dd1b5f1f0d2ea 100644 (file)
@@ -82,7 +82,7 @@ func (p *Peer) TimedOut() bool {
 }
 
 // Recv recieves a packet from the Peer.
-// You should keep calling this until it returns ErrClosed
+// You should keep calling this until it returns net.ErrClosed
 // so it doesn't leak a goroutine.
 func (p *Peer) Recv() (Pkt, error) {
        select {
@@ -92,7 +92,7 @@ func (p *Peer) Recv() (Pkt, error) {
                        case err := <-p.errs:
                                return Pkt{}, err
                        default:
-                               return Pkt{}, ErrClosed
+                               return Pkt{}, net.ErrClosed
                        }
                }
                return pkt, nil
@@ -108,7 +108,7 @@ func (p *Peer) Close() error {
 
        select {
        case <-p.Disco():
-               return ErrClosed
+               return net.ErrClosed
        default:
        }
 
index c36af81f7066a311b19f3ee06f1cd2c77e2a051d..70c04a23f3eb161428b15bbd13da47a3472e0e45 100644 (file)
@@ -2,7 +2,6 @@ package rudp
 
 import (
        "encoding/binary"
-       "encoding/hex"
        "errors"
        "fmt"
        "io"
@@ -16,9 +15,7 @@ type PktError struct {
 }
 
 func (e PktError) Error() string {
-       return "error processing " + e.Type + " pkt: " +
-               hex.EncodeToString(e.Data) + ": " +
-               e.Err.Error()
+       return fmt.Sprintf("error processing %s pkt: %x: %v", e.Type, e.Data, e.Err)
 }
 
 func (e PktError) Unwrap() error { return e.Err }
@@ -38,7 +35,7 @@ func (p *Peer) processNetPkts(pkts <-chan netPkt) {
 type TrailingDataError []byte
 
 func (e TrailingDataError) Error() string {
-       return "trailing data: " + hex.EncodeToString([]byte(e))
+       return fmt.Sprintf("trailing data: %x", []byte(e))
 }
 
 func (p *Peer) processNetPkt(pkt netPkt) (err error) {
index 6fc14ec014328ab2fcfd65f02bcc4344970a1247..833260b7db525ea307cf210a251e7cef6ef796a0 100644 (file)
@@ -15,7 +15,7 @@ import (
        "net"
        "os"
 
-       "github.com/anon55555/mt/rudp"
+       "mt/rudp"
 )
 
 func main() {
@@ -61,7 +61,7 @@ func proxy(src, dest *rudp.Peer) {
        for {
                pkt, err := src.Recv()
                if err != nil {
-                       if err == rudp.ErrClosed {
+                       if err == net.ErrClosed {
                                msg := src.Addr().String() + " disconnected"
                                if src.TimedOut() {
                                        msg += " (timed out)"
index 3cfcda42afc5ab4cdff45ebee7bc891525e9b4ed..2615c593681ed72330c0046068628799240f93b4 100644 (file)
@@ -126,7 +126,7 @@ func (p *Peer) sendRaw(pkt rawPkt) (ack <-chan struct{}, err error) {
 
        select {
        case <-p.Disco():
-               return nil, ErrClosed
+               return nil, net.ErrClosed
        default:
        }
 
@@ -201,12 +201,9 @@ func (p *Peer) sendRel(pkt rawPkt) (ack <-chan struct{}, err error) {
        }
 
        go func() {
-               resend := time.NewTicker(500 * time.Millisecond)
-               defer resend.Stop()
-
                for {
                        select {
-                       case <-resend.C:
+                       case <-time.After(500 * time.Millisecond):
                                if _, err := p.sendRaw(relpkt); err != nil {
                                        p.errs <- fmt.Errorf("failed to re-send timed out reliable seqnum: %d: %w", sn, err)
                                }