}
// Start the "interrupter" goroutine, if this context might be canceled.
- // (The background context cannot)
//
// The interrupter goroutine waits for the context to be done and
// interrupts the dial (by altering the fd's write deadline, which
// wakes up waitWrite).
- if ctx != context.Background() {
+ if ctxDone := ctx.Done(); ctxDone != nil {
// Wait for the interrupter goroutine to exit before returning
// from connect.
done := make(chan struct{})
}()
go func() {
select {
- case <-ctx.Done():
+ case <-ctxDone:
// Force the runtime's poller to immediately give up
// waiting for writability, unblocking waitWrite
// below.