]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.18] crypto/x509: skip WSATRY_AGAIN errors when dialing badssl...
authorBryan C. Mills <bcmills@google.com>
Fri, 1 Apr 2022 15:09:30 +0000 (11:09 -0400)
committerHeschi Kreinick <heschi@google.com>
Fri, 1 Apr 2022 17:39:53 +0000 (17:39 +0000)
(Temporarily, until the root cause of the test failure can be
diagnosed and fixed properly.)

For #52094

Change-Id: Iec69e162159f3f0a93135f742aac97cf82c1d96c
Reviewed-on: https://go-review.googlesource.com/c/go/+/397478
Trust: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
(cherry picked from commit df89f2ba53aab53356be197c581d142cefc2c6bc)
Reviewed-on: https://go-review.googlesource.com/c/go/+/397594
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/crypto/x509/root_windows_test.go

index ce6d9273d98f01f3c774b9a41d5b1e3265a76e20..f6dafe400447987930ba6810c781204e6acb63da 100644 (file)
@@ -7,7 +7,11 @@ package x509_test
 import (
        "crypto/tls"
        "crypto/x509"
+       "errors"
        "internal/testenv"
+       "net"
+       "strings"
+       "syscall"
        "testing"
        "time"
 )
@@ -17,10 +21,19 @@ func TestPlatformVerifier(t *testing.T) {
                t.Skip()
        }
 
-       getChain := func(host string) []*x509.Certificate {
+       getChain := func(t *testing.T, host string) []*x509.Certificate {
                t.Helper()
                c, err := tls.Dial("tcp", host+":443", &tls.Config{InsecureSkipVerify: true})
                if err != nil {
+                       // From https://docs.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2,
+                       // matching the error string observed in https://go.dev/issue/52094.
+                       const WSATRY_AGAIN syscall.Errno = 11002
+                       var errDNS *net.DNSError
+                       if strings.HasSuffix(host, ".badssl.com") && errors.As(err, &errDNS) && strings.HasSuffix(errDNS.Err, WSATRY_AGAIN.Error()) {
+                               t.Log(err)
+                               testenv.SkipFlaky(t, 52094)
+                       }
+
                        t.Fatalf("tls connection failed: %s", err)
                }
                return c.ConnectionState().PeerCertificates
@@ -74,7 +87,7 @@ func TestPlatformVerifier(t *testing.T) {
 
        for _, tc := range tests {
                t.Run(tc.name, func(t *testing.T) {
-                       chain := getChain(tc.host)
+                       chain := getChain(t, tc.host)
                        var opts x509.VerifyOptions
                        if len(chain) > 1 {
                                opts.Intermediates = x509.NewCertPool()