client_test.go | 12 ++++++++++++ utp_go.go | 7 ++++++- utp_libutp.go | 7 ++++++- utp_test.go | 15 +++++++++++++++ diff --git a/client_test.go b/client_test.go index 91ea329c93643ecea095e26da26dc2003524c0d8..b31720a39a51a74152e9d9d87eb21cb273f30b45 100644 --- a/client_test.go +++ b/client_test.go @@ -1102,3 +1102,15 @@ <-tr.GotInfo() 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 31239022eeaad12ea2da527870207e1b433b5b38..849c17ba8b763629dd82880cfdd22e403a60350f 100644 --- a/utp_go.go +++ b/utp_go.go @@ -7,5 +7,10 @@ "github.com/anacrolix/utp" ) 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 30bd69a774f7b0c076fafd68d3d8cbc5be66e1ae..73770123f60eef2c18543c1fba457008d619d036 100644 --- a/utp_libutp.go +++ b/utp_libutp.go @@ -7,5 +7,10 @@ "github.com/anacrolix/go-libutp" ) 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 0000000000000000000000000000000000000000..b0917ecb65d631614e68e1d08a39a45a886ae6b5 --- /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) + } +}