add sni for mws and ws

This commit is contained in:
wenyifan
2026-06-29 16:38:08 +08:00
parent c2cb8f93d2
commit 55461566bd
4 changed files with 10 additions and 2 deletions
+3 -1
View File
@@ -114,7 +114,9 @@ func (d *wsDialer) Handshake(ctx context.Context, conn net.Conn, options ...dial
urlObj := url.URL{Scheme: "ws", Host: host, Path: d.md.path}
if d.tlsEnabled {
urlObj.Scheme = "wss"
d.options.TLSConfig.ServerName = host
if d.md.sni != "" {
d.options.TLSConfig.ServerName = d.md.sni
}
dialer.TLSClientConfig = d.options.TLSConfig
dialer.NetDialTLSContext = func(ctx context.Context, network, addr string) (net.Conn, error) {
client, err := util.NewUTLSWebSocketClient(conn, d.options.TLSConfig, d.md.useH2)
+2
View File
@@ -17,6 +17,7 @@ type metadata struct {
host string
path string
useH2 bool
sni string
handshakeTimeout time.Duration
readHeaderTimeout time.Duration
@@ -68,5 +69,6 @@ func (d *wsDialer) parseMetadata(md mdata.Metadata) (err error) {
d.md.tcpKeepaliveCount = mdutil.GetInt(md, "tcp.keepalive.count")
d.md.useH2 = mdutil.GetBool(md, "h2")
d.md.sni = mdutil.GetString(md, "sni")
return
}