From 683362f0ee75d22c0901b57955a4fbead3163e87 Mon Sep 17 00:00:00 2001
From: 2dust <31833384+2dust@users.noreply.github.com>
Date: Wed, 15 Nov 2023 19:17:02 +0800
Subject: [PATCH] Fix mux enabled
---
.../com/v2ray/ang/util/V2rayConfigUtil.kt | 26 ++++++++++++++++---
.../src/main/res/values-zh-rCN/strings.xml | 2 +-
2 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt
index b8cf2f54..4e0df222 100644
--- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt
+++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt
@@ -401,17 +401,35 @@ object V2rayConfigUtil {
private fun updateOutboundWithGlobalSettings(outbound: V2rayConfig.OutboundBean): Boolean {
try {
- if (settingsStorage?.decodeBool(AppConfig.PREF_MUX_ENABLED) == true) {
+ var muxEnabled = settingsStorage?.decodeBool(AppConfig.PREF_MUX_ENABLED, false)
+
+ val protocol = outbound.protocol
+ if (protocol.equals(EConfigType.SHADOWSOCKS.name, true)
+ || protocol.equals(EConfigType.SOCKS.name, true)
+ || protocol.equals(EConfigType.TROJAN.name, true)
+ ) {
+ muxEnabled = false
+ } else if (protocol.equals(EConfigType.VLESS.name, true)
+ && outbound.settings?.vnext?.get(0)?.users?.get(0)?.flow?.isNotEmpty() == true
+ ) {
+ muxEnabled = false
+ }
+
+ if (muxEnabled == true) {
outbound.mux?.enabled = true
outbound.mux?.concurrency = 8
- outbound.mux?.xudpConcurrency = settingsStorage?.decodeInt(AppConfig.PREF_MUX_XUDP_CONCURRENCY) ?: 8
- outbound.mux?.xudpProxyUDP443 = settingsStorage?.decodeString(AppConfig.PREF_MUX_XUDP_QUIC) ?: "reject"
+ outbound.mux?.xudpConcurrency =
+ settingsStorage?.decodeInt(AppConfig.PREF_MUX_XUDP_CONCURRENCY) ?: 8
+ outbound.mux?.xudpProxyUDP443 =
+ settingsStorage?.decodeString(AppConfig.PREF_MUX_XUDP_QUIC) ?: "reject"
} else {
outbound.mux?.enabled = false
+ outbound.mux?.concurrency = -1
}
if (outbound.streamSettings?.network == DEFAULT_NETWORK
- && outbound.streamSettings?.tcpSettings?.header?.type == HTTP) {
+ && outbound.streamSettings?.tcpSettings?.header?.type == HTTP
+ ) {
val path = outbound.streamSettings?.tcpSettings?.header?.request?.path
val host = outbound.streamSettings?.tcpSettings?.header?.request?.headers?.Host
diff --git a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
index b07c2c55..45879449 100644
--- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
+++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
@@ -97,7 +97,7 @@
常规:勾选的App被代理,未勾选的直连;\n绕行模式:勾选的App直连,未勾选的被代理.\n不明白者在菜单中选择自动选中需代理应用
启用 Mux 多路复用
- 减低延时 但可能会断流\nTCP 默认复用 8 个子链接,UDP 及 QUIC 流量处理方式下方可选
+ 减低延时,但可能会断流,建议不要启用。\nTCP 默认复用 8 个子链接,UDP 及 QUIC 流量处理方式下方可选。
XUDP 复用子链接数(可填 -1 至 1024)
QUIC 流量处理方式