http2/h2i: strip port from server name in client hello
The existing implementation passes hostname:port to the ServerName
field of the client's TLS config. This is passed to the server
incorrectly as the ServerName in the client hello. This change adds a
function to strip the port from the host when passing it to the TLS
config.
Change-Id: I03714ffc7f21d87c375f8f07392ef02bbe76da66
Reviewed-on: https://go-review.googlesource.com/34728
Run-TryBot: Matt Layher <mdlayher@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/http2/h2i/h2i.go b/http2/h2i/h2i.go
index d2d5f92..76c7787 100644
--- a/http2/h2i/h2i.go
+++ b/http2/h2i/h2i.go
@@ -88,6 +88,14 @@
return host
}
+// withoutPort strips the port from addr if present.
+func withoutPort(addr string) string {
+ if h, _, err := net.SplitHostPort(addr); err == nil {
+ return h
+ }
+ return addr
+}
+
// h2i is the app's state.
type h2i struct {
host string
@@ -134,7 +142,7 @@
func (app *h2i) Main() error {
cfg := &tls.Config{
- ServerName: app.host,
+ ServerName: withoutPort(app.host),
NextProtos: strings.Split(*flagNextProto, ","),
InsecureSkipVerify: *flagInsecure,
}