From 15bb23e4ecbd0e929336600694b35f880db88cf4 Mon Sep 17 00:00:00 2001 From: yuhan6665 <1588741+yuhan6665@users.noreply.github.com> Date: Sat, 28 Jan 2023 00:39:36 -0500 Subject: [PATCH] XTLS Vision rejects Mux except for XUDP (#1567) * Xtls vision reject vless-tcp-tls+Mux * Address review comment --- proxy/vless/inbound/inbound.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/proxy/vless/inbound/inbound.go b/proxy/vless/inbound/inbound.go index 76051288..d4ea246d 100644 --- a/proxy/vless/inbound/inbound.go +++ b/proxy/vless/inbound/inbound.go @@ -154,6 +154,19 @@ func New(ctx context.Context, config *Config, dc dns.Client) (*Handler, error) { return handler, nil } +func isMuxAndNotXUDP(request *protocol.RequestHeader, first *buf.Buffer) bool { + if request.Command != protocol.RequestCommandMux { + return false + } + if first.Len() < 7 { + return true + } + firstBytes := first.Bytes() + return !(firstBytes[2] == 0 && // ID high + firstBytes[3] == 0 && // ID low + firstBytes[6] == 2) // Network type: UDP +} + // Close implements common.Closable.Close(). func (h *Handler) Close() error { return errors.Combine(common.Close(h.validator)) @@ -513,7 +526,7 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection s return newError(account.ID.String() + " is not able to use " + requestAddons.Flow).AtWarning() } case "", "none": - if accountFlow == vless.XRV && !allowNoneFlow && request.Command == protocol.RequestCommandTCP { + if accountFlow == vless.XRV && !allowNoneFlow && (request.Command == protocol.RequestCommandTCP || isMuxAndNotXUDP(request, first)) { return newError(account.ID.String() + " is not able to use " + vless.XRV + ". Note the pure tls proxy has certain tls in tls characters. Append \",none\" in flow to suppress").AtWarning() }