Selaa lähdekoodia

RAW: Allow setting ALPN `http/1.1` for non-REALITY uTLS

https://github.com/XTLS/Xray-core/issues/4313#issuecomment-2611889517
RPRX 9 kuukautta sitten
vanhempi
sitoutus
740a6b0dcd
1 muutettua tiedostoa jossa 8 lisäystä ja 2 poistoa
  1. 8 2
      transport/internet/tcp/dialer.go

+ 8 - 2
transport/internet/tcp/dialer.go

@@ -24,8 +24,14 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me
 		tlsConfig := config.GetTLSConfig(tls.WithDestination(dest))
 		if fingerprint := tls.GetFingerprint(config.Fingerprint); fingerprint != nil {
 			conn = tls.UClient(conn, tlsConfig, fingerprint)
-			if err := conn.(*tls.UConn).HandshakeContext(ctx); err != nil {
-				return nil, err
+			if len(tlsConfig.NextProtos) == 1 && tlsConfig.NextProtos[0] == "http/1.1" {
+				if err := conn.(*tls.UConn).WebsocketHandshakeContext(ctx); err != nil {
+					return nil, err
+				}
+			} else {
+				if err := conn.(*tls.UConn).HandshakeContext(ctx); err != nil {
+					return nil, err
+				}
 			}
 		} else {
 			conn = tls.Client(conn, tlsConfig)