@@ -327,6 +327,11 @@ object V2rayConfigManager {
327327 key.mux = null
328328 }
329329
330+ // apply fragment
331+ for (outbound in v2rayConfig.outbounds) {
332+ updateOutboundFragment(outbound)
333+ }
334+
330335 result.status = true
331336 result.content = JsonUtil .toJsonPretty(v2rayConfig) ? : " "
332337 result.guid = guid
@@ -980,13 +985,6 @@ object V2rayConfigManager {
980985 return true
981986 }
982987
983- val fragmentOutbound =
984- OutboundBean (
985- protocol = AppConfig .PROTOCOL_FREEDOM ,
986- tag = AppConfig .TAG_FRAGMENT ,
987- mux = null
988- )
989-
990988 var packets =
991989 MmkvManager .decodeSettingsString(AppConfig .PREF_FRAGMENT_PACKETS ) ? : " tlshello"
992990 if (outbound.streamSettings?.security == AppConfig .REALITY
@@ -1021,15 +1019,20 @@ object V2rayConfigManager {
10211019 )
10221020 )
10231021
1024- val finalMaskObj = JsonUtil .parseString(JsonUtil .toJson(outbound.streamSettings?.finalmask))
1025- ? : com.google.gson.JsonObject ()
1022+ val finalMaskObj = outbound.streamSettings?.finalmask?.let { existingFinalMask ->
1023+ JsonUtil .parseString(JsonUtil .toJson(existingFinalMask))
1024+ } ? : com.google.gson.JsonObject ()
10261025
10271026 // finalmask.tcp / finalmask.udp are arrays; prepend mask at index 0.
10281027 fun prependMask (scope : String , mask : StreamSettingsBean .FinalMaskBean .MaskBean ) {
1028+ val current = finalMaskObj.get(scope)
1029+ if (current != null && current.isJsonArray && current.asJsonArray.size() > 0 ) {
1030+ return
1031+ }
1032+
10291033 val newArray = JsonArray ()
10301034 newArray.add(JsonUtil .parseString(JsonUtil .toJson(mask)))
10311035
1032- val current = finalMaskObj.get(scope)
10331036 if (current != null && current.isJsonArray) {
10341037 current.asJsonArray.forEach { newArray.add(it) }
10351038 }
0 commit comments