mirror of https://github.com/gorilla/websocket.git
move connection deadline set below
This commit is contained in:
parent
bb3c912806
commit
29bba1ad6c
34
client.go
34
client.go
|
@ -260,23 +260,6 @@ func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader h
|
||||||
netDial = (&net.Dialer{}).DialContext
|
netDial = (&net.Dialer{}).DialContext
|
||||||
}
|
}
|
||||||
|
|
||||||
// If needed, wrap the dial function to set the connection deadline.
|
|
||||||
if deadline, ok := ctx.Deadline(); ok {
|
|
||||||
forwardDial := netDial
|
|
||||||
netDial = func(ctx context.Context, network, addr string) (net.Conn, error) {
|
|
||||||
c, err := forwardDial(ctx, network, addr)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
err = c.SetDeadline(deadline)
|
|
||||||
if err != nil {
|
|
||||||
c.Close()
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return c, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If needed, wrap the dial function to connect through a proxy.
|
// If needed, wrap the dial function to connect through a proxy.
|
||||||
if d.Proxy != nil {
|
if d.Proxy != nil {
|
||||||
proxyURL, err := d.Proxy(req)
|
proxyURL, err := d.Proxy(req)
|
||||||
|
@ -305,6 +288,23 @@ func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader h
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If needed, wrap the dial function to set the connection deadline.
|
||||||
|
if deadline, ok := ctx.Deadline(); ok {
|
||||||
|
forwardDial := netDial
|
||||||
|
netDial = func(ctx context.Context, network, addr string) (net.Conn, error) {
|
||||||
|
c, err := forwardDial(ctx, network, addr)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
err = c.SetDeadline(deadline)
|
||||||
|
if err != nil {
|
||||||
|
c.Close()
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return c, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
hostPort, hostNoPort := hostPortNoPort(u)
|
hostPort, hostNoPort := hostPortNoPort(u)
|
||||||
trace := httptrace.ContextClientTrace(ctx)
|
trace := httptrace.ContextClientTrace(ctx)
|
||||||
if trace != nil && trace.GetConn != nil {
|
if trace != nil && trace.GetConn != nil {
|
||||||
|
|
Loading…
Reference in New Issue