aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Martí <mvdan@mvdan.cc>2017-09-25 17:21:39 +0100
committerDaniel Martí <mvdan@mvdan.cc>2017-09-26 22:45:04 +0000
commite61c5e2f2044c7bc606ebdfbd0187598b90c50e5 (patch)
tree33e5b428396bafd682f2eb30de4feac9a721634a /src
parent0744c21b98e916470c97ff5816630398cf3213c8 (diff)
downloadgo-e61c5e2f2044c7bc606ebdfbd0187598b90c50e5.tar.xz
net/http: error if Transport.Proxy returns https
Transport.Proxy is documented as only supporting the http and socks5 schemes. If one tries to use it for https URLs, they end up with a cryptic error like: http: TLS handshake error from [...]: tls: oversized record received with length 20037 This is because Transport simply skips TLS if Proxy is non-nil, since it knows it doesn't support Proxy with https. However, that error is very confusing and it can take a while to figure out what's going on. Instead, error if Proxy is used and it returns an unsupported scheme. Updates #19493. Change-Id: Ia036357011752f45bb9b8282a4ab5e31bc8d1a69 Reviewed-on: https://go-review.googlesource.com/66010 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Tom Bergan <tombergan@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/net/http/transport.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/net/http/transport.go b/src/net/http/transport.go
index 9182e9454b..5f2ace7b4b 100644
--- a/src/net/http/transport.go
+++ b/src/net/http/transport.go
@@ -618,6 +618,11 @@ func (t *Transport) connectMethodForRequest(treq *transportRequest) (cm connectM
if port := cm.proxyURL.Port(); !validPort(port) {
return cm, fmt.Errorf("invalid proxy URL port %q", port)
}
+ switch cm.proxyURL.Scheme {
+ case "http", "socks5":
+ default:
+ return cm, fmt.Errorf("invalid proxy URL scheme %q", cm.proxyURL.Scheme)
+ }
}
}
return cm, err