From 1849048d1da6d4d57835e1199d9d327bc0565190 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Sat, 27 May 2023 20:13:56 +1000 Subject: [PATCH] More Windows test fixes --- client_test.go | 7 +++++-- t.go | 2 +- tracker/udp/udp_test.go | 6 ++++-- tracker/udp/udp_unix.go | 14 ++++++++++++++ tracker/udp/udp_windows.go | 11 +++++++++++ 5 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 tracker/udp/udp_unix.go create mode 100644 tracker/udp/udp_windows.go diff --git a/client_test.go b/client_test.go index 1000c3b0..22281efd 100644 --- a/client_test.go +++ b/client_test.go @@ -788,13 +788,16 @@ func TestObfuscatedHeaderFallbackSeederRequiresLeecherPrefersNot(t *testing.T) { } func TestClientAddressInUse(t *testing.T) { - s, _ := NewUtpSocket("udp", ":50007", nil, log.Default) + s, _ := NewUtpSocket("udp", "localhost:50007", nil, log.Default) if s != nil { defer s.Close() } - cfg := TestingConfig(t).SetListenAddr(":50007") + cfg := TestingConfig(t).SetListenAddr("localhost:50007") cfg.DisableUTP = false cl, err := NewClient(cfg) + if err == nil { + assert.Nil(t, cl.Close()) + } require.Error(t, err) require.Nil(t, cl) } diff --git a/t.go b/t.go index af4fdec7..45856cc7 100644 --- a/t.go +++ b/t.go @@ -235,8 +235,8 @@ func (t *Torrent) Files() []*File { func (t *Torrent) AddPeers(pp []PeerInfo) (n int) { t.cl.lock() + defer t.cl.unlock() n = t.addPeers(pp) - t.cl.unlock() return } diff --git a/tracker/udp/udp_test.go b/tracker/udp/udp_test.go index 51f58e4c..64aeb80f 100644 --- a/tracker/udp/udp_test.go +++ b/tracker/udp/udp_test.go @@ -57,8 +57,10 @@ func TestLongWriteUDP(t *testing.T) { for msgLen := 1; ; msgLen *= 2 { n, err := c.Write(make([]byte, msgLen)) if err != nil { - require.Contains(t, err.Error(), "message too long") - return + if isErrMessageTooLong(err) { + return + } + t.Fatalf("expected message too long error: %v", err) } if n < msgLen { t.FailNow() diff --git a/tracker/udp/udp_unix.go b/tracker/udp/udp_unix.go new file mode 100644 index 00000000..6fcf9ed1 --- /dev/null +++ b/tracker/udp/udp_unix.go @@ -0,0 +1,14 @@ +//go:build !windows + +package udp + +import ( + "strings" +) + +func isErrMessageTooLong(err error) bool { + if err == nil { + return false + } + return strings.Contains(err.Error(), "message too long") +} diff --git a/tracker/udp/udp_windows.go b/tracker/udp/udp_windows.go new file mode 100644 index 00000000..a289e9ec --- /dev/null +++ b/tracker/udp/udp_windows.go @@ -0,0 +1,11 @@ +package udp + +import ( + "errors" + + "golang.org/x/sys/windows" +) + +func isErrMessageTooLong(err error) bool { + return errors.Is(err, windows.WSAEMSGSIZE) +} -- 2.44.0