ut-holepunching_test.go | 10 ++++++++++ diff --git a/ut-holepunching_test.go b/ut-holepunching_test.go index 6ce5589ba62e602c98a81e97f27a3dd62a881e25..ef7cda6ba7770455c22576466e0083cc7cf81c6d 100644 --- a/ut-holepunching_test.go +++ b/ut-holepunching_test.go @@ -310,6 +310,7 @@ // Show that uTP doesn't implement simultaneous open. When two sockets dial each other, they both // get separate connections. This means that holepunch connect may result in an accept (and dial) // for one or both peers involved. func TestUtpSimultaneousOpen(t *testing.T) { + t.Parallel() c := qt.New(t) const network = "udp" ctx := context.Background() @@ -347,6 +348,7 @@ } if errors.Is(err, errMsgNotReceived) { return } + skipGoUtpDialIssue(t, err) t.Log(err) time.Sleep(time.Second) } @@ -358,9 +360,16 @@ go writeMsg(w) return readMsg(r) } +func skipGoUtpDialIssue(t *testing.T, err error) { + if err.Error() == "timed out waiting for ack" { + t.Skip("anacrolix go utp implementation has issues. Use anacrolix/go-libutp by enabling CGO.") + } +} + // Show that dialling one socket and accepting from the other results in them having ends of the // same connection. func TestUtpDirectDialMsg(t *testing.T) { + t.Parallel() c := qt.New(t) const network = "udp4" ctx := context.Background() @@ -390,6 +399,7 @@ }() if err == nil { return } + skipGoUtpDialIssue(t, err) t.Log(err) time.Sleep(time.Second) }