// +build !go1.9

package clientutil

import (
	"context"
	"net"
	"time"
)

// Go < 1.9 does not have net.DialContext, reimplement it in terms of
// net.DialTimeout.
func netDialContext(addr string, connectTimeout time.Duration) func(context.Context, string, string) (net.Conn, error) {
	return func(ctx context.Context, net string, _ string) (net.Conn, error) {
		if deadline, ok := ctx.Deadline(); ok {
			ctxTimeout := time.Until(deadline)
			if ctxTimeout < connectTimeout {
				connectTimeout = ctxTimeout
			}
		}
		return net.DialTimeout(network, addr, connectTimeout)
	}
}