Skip to content

Commit

Permalink
[release-branch.go1.18] crypto/x509: skip WSATRY_AGAIN errors when di…
Browse files Browse the repository at this point in the history
…aling badssl.com subdomains

(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 df89f2b)
Reviewed-on: https://go-review.googlesource.com/c/go/+/397594
Reviewed-by: Cherry Mui <cherryyz@google.com>
  • Loading branch information
Bryan C. Mills authored and heschi committed Apr 1, 2022
1 parent 8b0583a commit 32ff9b5
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions src/crypto/x509/root_windows_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ package x509_test
import (
"crypto/tls"
"crypto/x509"
"errors"
"internal/testenv"
"net"
"strings"
"syscall"
"testing"
"time"
)
Expand All @@ -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
Expand Down Expand Up @@ -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()
Expand Down

0 comments on commit 32ff9b5

Please sign in to comment.