http2/h2i: add flag to dial one ip:port but SNI/:authority like it's another
Change-Id: I35049c37558ddedb9056278c9878f3e3fd6f7f76
Reviewed-on: https://go-review.googlesource.com/53640
Reviewed-by: Avelino <t@avelino.xxx>
Reviewed-by: Tom Bergan <tombergan@google.com>
diff --git a/http2/h2i/h2i.go b/http2/h2i/h2i.go
index 3f4cfe2..62e5752 100644
--- a/http2/h2i/h2i.go
+++ b/http2/h2i/h2i.go
@@ -45,6 +45,7 @@
flagNextProto = flag.String("nextproto", "h2,h2-14", "Comma-separated list of NPN/ALPN protocol names to negotiate.")
flagInsecure = flag.Bool("insecure", false, "Whether to skip TLS cert validation")
flagSettings = flag.String("settings", "empty", "comma-separated list of KEY=value settings for the initial SETTINGS frame. The magic value 'empty' sends an empty initial settings frame, and the magic value 'omit' causes no initial settings frame to be sent.")
+ flagDial = flag.String("dial", "", "optional ip:port to dial, to connect to a host:port but use a different SNI name (including a SNI name without DNS)")
)
type command struct {
@@ -147,11 +148,14 @@
InsecureSkipVerify: *flagInsecure,
}
- hostAndPort := withPort(app.host)
+ hostAndPort := *flagDial
+ if hostAndPort == "" {
+ hostAndPort = withPort(app.host)
+ }
log.Printf("Connecting to %s ...", hostAndPort)
tc, err := tls.Dial("tcp", hostAndPort, cfg)
if err != nil {
- return fmt.Errorf("Error dialing %s: %v", withPort(app.host), err)
+ return fmt.Errorf("Error dialing %s: %v", hostAndPort, err)
}
log.Printf("Connected to %v", tc.RemoteAddr())
defer tc.Close()