Closed
Description
I see that http.Transport
has the following fields:
Dial
(deprecated)DialContext
DialTLS
I'd like to have a DialTLSContext
Would the maintainers be open to a contribution of this feature to http.Transport
?
What version of Go are you using (go version
)?
1.8
What operating system and processor architecture are you using (go env
)?
linux & mac on amd64
What did you do?
I want to set the DialTLS behavior but have access to the Context of the http Request inside that function, e.g.
func main() {
tr := http.Transport{
DialTLSContext: func(ctx context.Context, network, addr string) (net.Conn, err) {
conn, err := tls.Dial(network, addr, myConfig)
if err != nil {
return nil, err
}
connState := conn.ConnectionState()
ok := extraValidation(connState, ctx)
if !ok {
return nil, errors.New("extra validation failed")
}
return conn
},
}
req, _ := http.NewRequest("GET", "https://example.com", nil)
tr.RoundTrip(req)
}
What did you expect to see?
the RoundTrip function should behave the same way as if I'd set the DialTLS
function, while providing the context.Context
to my custom validation function.
What did you see instead?
unknown field 'DialTLSContext' in struct literal of type http.Transport
Reference: related question on golang-nuts