From 826e77d6a715df8813a56edf5fc022157a97215a Mon Sep 17 00:00:00 2001 From: Roland Shoemaker Date: Wed, 11 May 2022 12:14:18 -0700 Subject: [PATCH] acme/autocert/internal/acmetest: don't validate in goroutine In the test server, rather than spawning a goroutine to validate challenges, block on the validation before responding to the client. This prevents a test race, where testing.T.Logf is called after the test is completed. While this has a slight behavioral difference to some production ACME server implementations (although is behavior allowed in the spec), the change has little material impact on what we are testing, since previously the validation would happen so quickly that it would be indistinguishable from the new blocking behavior (i.e. we would not be sending multiple requests during polling previously.) Fixes golang/go#52170 Change-Id: I75e3b2da69ddc2302be25a99f1b1151ed0f4af9b Reviewed-on: https://go-review.googlesource.com/c/crypto/+/405548 Run-TryBot: Roland Shoemaker TryBot-Result: Gopher Robot Reviewed-by: Bryan Mills --- acme/autocert/internal/acmetest/ca.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/acme/autocert/internal/acmetest/ca.go b/acme/autocert/internal/acmetest/ca.go index fa33987..0a5ebe7 100644 --- a/acme/autocert/internal/acmetest/ca.go +++ b/acme/autocert/internal/acmetest/ca.go @@ -380,7 +380,7 @@ func (ca *CAServer) handle(w http.ResponseWriter, r *http.Request) { ca.httpErrorf(w, http.StatusBadRequest, "challenge accept: %v", err) return } - go ca.validateChallenge(a, typ) + ca.validateChallenge(a, typ) w.Write([]byte("{}")) // Get authorization status requests.