]> Sergey Matveev's repositories - btrtrc.git/commitdiff
More Windows test fixes
authorMatt Joiner <anacrolix@gmail.com>
Sat, 27 May 2023 10:13:56 +0000 (20:13 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Sat, 27 May 2023 14:41:36 +0000 (00:41 +1000)
client_test.go
t.go
tracker/udp/udp_test.go
tracker/udp/udp_unix.go [new file with mode: 0644]
tracker/udp/udp_windows.go [new file with mode: 0644]

index 1000c3b03ae289f6824ccdaa9aabfb0b93eff3e7..22281efd6cde9bf0eaa6a0b03d7f48150ee5a500 100644 (file)
@@ -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 af4fdec7f3c000cc6ab2fd36cb5204ac891c403a..45856cc7acbeaa5988074f74435d078a49111a57 100644 (file)
--- 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
 }
 
index 51f58e4c2c1cfa533d49be9d963408d91f17194e..64aeb80ff7426c514f5f63e7c2eab71fb1b5851b 100644 (file)
@@ -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 (file)
index 0000000..6fcf9ed
--- /dev/null
@@ -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 (file)
index 0000000..a289e9e
--- /dev/null
@@ -0,0 +1,11 @@
+package udp
+
+import (
+       "errors"
+
+       "golang.org/x/sys/windows"
+)
+
+func isErrMessageTooLong(err error) bool {
+       return errors.Is(err, windows.WSAEMSGSIZE)
+}