diff --git a/v2rayN/ServiceLib/Handler/Builder/CoreConfigContextBuilder.cs b/v2rayN/ServiceLib/Handler/Builder/CoreConfigContextBuilder.cs index ddc98a1f..a8cca654 100644 --- a/v2rayN/ServiceLib/Handler/Builder/CoreConfigContextBuilder.cs +++ b/v2rayN/ServiceLib/Handler/Builder/CoreConfigContextBuilder.cs @@ -322,6 +322,7 @@ public class CoreConfigContextBuilder context.ProtectDomainList.Add(address); } + // ech query server name protect if (!node.EchConfigList.IsNullOrEmpty()) { var echQuerySni = node.Sni; @@ -338,6 +339,20 @@ public class CoreConfigContextBuilder } } + // xhttp downloadSettings address protect + if (!string.IsNullOrEmpty(node.Extra) + && JsonUtils.ParseJson(node.Extra) is JsonObject extra + && extra.TryGetPropertyValue("downloadSettings", out var dsNode) + && dsNode is JsonObject downloadSettings + && downloadSettings.TryGetPropertyValue("address", out var dAddrNode) + && dAddrNode is JsonValue dAddrValue + && dAddrValue.TryGetValue(out string? dAddr) + && !string.IsNullOrEmpty(dAddr) + && Utils.IsDomain(dAddr)) + { + context.ProtectDomainList.Add(dAddr); + } + return nodeValidatorResult; }