From: Matt Joiner Date: Wed, 13 Sep 2017 14:25:29 +0000 (+1000) Subject: Fix panic when error occurs binding uTP socket X-Git-Tag: v1.0.0~399 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=5d3ee0a53149b7d07288dbe3dcc4bc417cbc919b;p=btrtrc.git Fix panic when error occurs binding uTP socket Fixes #187. --- diff --git a/client_test.go b/client_test.go index 91ea329c..b31720a3 100644 --- a/client_test.go +++ b/client_test.go @@ -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) +} diff --git a/utp_go.go b/utp_go.go index 31239022..849c17ba 100644 --- 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 + } } diff --git a/utp_libutp.go b/utp_libutp.go index 30bd69a7..73770123 100644 --- a/utp_libutp.go +++ b/utp_libutp.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 + } } diff --git a/utp_test.go b/utp_test.go new file mode 100644 index 00000000..b0917ecb --- /dev/null +++ b/utp_test.go @@ -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) + } +}