]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Fix panic when error occurs binding uTP socket
authorMatt Joiner <anacrolix@gmail.com>
Wed, 13 Sep 2017 14:25:29 +0000 (00:25 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Wed, 13 Sep 2017 14:25:29 +0000 (00:25 +1000)
Fixes #187.

client_test.go
utp_go.go
utp_libutp.go
utp_test.go [new file with mode: 0644]

index 91ea329c93643ecea095e26da26dc2003524c0d8..b31720a39a51a74152e9d9d87eb21cb273f30b45 100644 (file)
@@ -1102,3 +1102,15 @@ func TestMultipleTorrentsWithEncryption(t *testing.T) {
        tr.DownloadAll()
        client.WaitAll()
 }
+
+func TestClientAddressInUse(t *testing.T) {
+       s, _ := NewUtpSocket("udp", ":50007")
+       if s != nil {
+               defer s.Close()
+       }
+       cfg := TestingConfig()
+       cfg.ListenAddr = ":50007"
+       cl, err := NewClient(cfg)
+       require.Error(t, err)
+       require.Nil(t, cl)
+}
index 31239022eeaad12ea2da527870207e1b433b5b38..849c17ba8b763629dd82880cfdd22e403a60350f 100644 (file)
--- a/utp_go.go
+++ b/utp_go.go
@@ -7,5 +7,10 @@ import (
 )
 
 func NewUtpSocket(network, addr string) (utpSocket, error) {
-       return utp.NewSocket(network, addr)
+       s, err := utp.NewSocket(network, addr)
+       if s == nil {
+               return nil, err
+       } else {
+               return s, err
+       }
 }
index 30bd69a774f7b0c076fafd68d3d8cbc5be66e1ae..73770123f60eef2c18543c1fba457008d619d036 100644 (file)
@@ -7,5 +7,10 @@ import (
 )
 
 func NewUtpSocket(network, addr string) (utpSocket, error) {
-       return utp.NewSocket(network, addr)
+       s, err := utp.NewSocket(network, addr)
+       if s == nil {
+               return nil, err
+       } else {
+               return s, err
+       }
 }
diff --git a/utp_test.go b/utp_test.go
new file mode 100644 (file)
index 0000000..b0917ec
--- /dev/null
@@ -0,0 +1,15 @@
+package torrent
+
+import (
+       "testing"
+
+       "github.com/stretchr/testify/assert"
+)
+
+func TestNewUtpSocketErrorNilInterface(t *testing.T) {
+       s, err := NewUtpSocket("fix", "your:language")
+       assert.Error(t, err)
+       if s != nil {
+               t.Fatalf("expected nil, got %#v", s)
+       }
+}