diff --git a/dialer/mws/dialer.go b/dialer/mws/dialer.go index 68d076e..c6a4134 100644 --- a/dialer/mws/dialer.go +++ b/dialer/mws/dialer.go @@ -174,8 +174,13 @@ func (d *mwsDialer) initSession(ctx context.Context, host string, conn net.Conn, }) } } - client := tls.UClient(conn, utlsConf, tls.HelloCustom) - client.ApplyPreset(util.NewWsSpec()) + var client *tls.UConn + if d.md.useH2 { + client = tls.UClient(conn, utlsConf, tls.HelloChrome_Auto) + } else { + client = tls.UClient(conn, utlsConf, tls.HelloCustom) + client.ApplyPreset(util.NewWsSpec()) + } err := client.Handshake() if err != nil { return nil, err diff --git a/dialer/mws/metadata.go b/dialer/mws/metadata.go index aaea799..f65d2a4 100644 --- a/dialer/mws/metadata.go +++ b/dialer/mws/metadata.go @@ -27,6 +27,9 @@ type metadata struct { header http.Header keepaliveInterval time.Duration muxCfg *mux.Config + + //Evan Enhanced + useH2 bool } func (d *mwsDialer) parseMetadata(md mdata.Metadata) (err error) { @@ -67,5 +70,6 @@ func (d *mwsDialer) parseMetadata(md mdata.Metadata) (err error) { } } + d.md.useH2 = mdutil.GetBool(md, "h2") return } diff --git a/dialer/ws/dialer.go b/dialer/ws/dialer.go index 04f80e9..8272e3c 100644 --- a/dialer/ws/dialer.go +++ b/dialer/ws/dialer.go @@ -111,8 +111,13 @@ func (d *wsDialer) Handshake(ctx context.Context, conn net.Conn, options ...dial }) } } - client := tls.UClient(conn, utlsConf, tls.HelloCustom) - client.ApplyPreset(util.NewWsSpec()) + var client *tls.UConn + if d.md.useH2 { + client = tls.UClient(conn, utlsConf, tls.HelloChrome_Auto) + } else { + client = tls.UClient(conn, utlsConf, tls.HelloCustom) + client.ApplyPreset(util.NewWsSpec()) + } err := client.Handshake() if err != nil { return nil, err diff --git a/dialer/ws/metadata.go b/dialer/ws/metadata.go index fac5995..dcab87f 100644 --- a/dialer/ws/metadata.go +++ b/dialer/ws/metadata.go @@ -25,6 +25,9 @@ type metadata struct { header http.Header keepaliveInterval time.Duration + + //Evan Enhance + useH2 bool } func (d *wsDialer) parseMetadata(md mdata.Metadata) (err error) { @@ -56,5 +59,6 @@ func (d *wsDialer) parseMetadata(md mdata.Metadata) (err error) { } } + d.md.useH2 = mdutil.GetBool(md, "h2") return }