quic: fix race condition in runAsync test helper
asyncTestState.wakeAsync runs on the conn's goroutine and
accesses as.blocked, so we need to hold as.mu while
initializing as.blocked in runAsync.
For golang/go#58547
Change-Id: Idb5921895cee89dfceec2b2439c43f2e380b64ce
Reviewed-on: https://go-review.googlesource.com/c/net/+/524095
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/internal/quic/conn_async_test.go b/internal/quic/conn_async_test.go
index 0da3ddb..5b419c4 100644
--- a/internal/quic/conn_async_test.go
+++ b/internal/quic/conn_async_test.go
@@ -101,7 +101,9 @@
as := &ts.asyncTestState
if as.notify == nil {
as.notify = make(chan struct{})
+ as.mu.Lock()
as.blocked = make(map[*blockedAsync]struct{})
+ as.mu.Unlock()
}
_, file, line, _ := runtime.Caller(1)
ctx := context.WithValue(context.Background(), asyncContextKey{}, true)