diff --git a/memhttp.go b/memhttp.go index c1cd520..a1cc176 100644 --- a/memhttp.go +++ b/memhttp.go @@ -190,14 +190,15 @@ func (l *memoryListener) Addr() net.Addr { // DialContext is the type expected by http.Transport.DialContext. func (l *memoryListener) DialContext(ctx context.Context, network, addr string) (net.Conn, error) { + server, client := net.Pipe() select { + case <-ctx.Done(): + return nil, ctx.Err() + case l.conns <- server: + return client, nil case <-l.closed: return nil, errors.New("listener closed") - default: } - server, client := net.Pipe() - l.conns <- server - return client, nil } type memoryAddr struct{}