IPv6 Unreachability Fallback for TLS Configs (#4846)
* fix unreachable ipv6 fallback * add UseIP domainStrategy * fix DNS query loop
This commit is contained in:
@@ -245,7 +245,14 @@ data class V2rayConfig(
|
|||||||
var tproxy: String? = null,
|
var tproxy: String? = null,
|
||||||
var mark: Int? = null,
|
var mark: Int? = null,
|
||||||
var dialerProxy: String? = null,
|
var dialerProxy: String? = null,
|
||||||
var domainStrategy: String? = null
|
var domainStrategy: String? = null,
|
||||||
|
var happyEyeballs: happyEyeballsBean? = null,
|
||||||
|
)
|
||||||
|
data class happyEyeballsBean(
|
||||||
|
var prioritizeIPv6: Boolean? = null,
|
||||||
|
var maxConcurrentTry: Int? = 4,
|
||||||
|
var tryDelayMs: Int? = 250, // ms
|
||||||
|
var interleave: Int? = null,
|
||||||
)
|
)
|
||||||
|
|
||||||
data class TlsSettingsBean(
|
data class TlsSettingsBean(
|
||||||
|
|||||||
@@ -1011,14 +1011,22 @@ object V2rayConfigManager {
|
|||||||
if (domain.isNullOrEmpty()) continue
|
if (domain.isNullOrEmpty()) continue
|
||||||
|
|
||||||
if (newHosts.containsKey(domain)) {
|
if (newHosts.containsKey(domain)) {
|
||||||
item.ensureSockopt().domainStrategy = if (preferIpv6) "UseIPv6v4" else "UseIPv4v6"
|
item.ensureSockopt().domainStrategy = "UseIP"
|
||||||
|
item.ensureSockopt().happyEyeballs = StreamSettingsBean.happyEyeballsBean(
|
||||||
|
prioritizeIPv6 = preferIpv6,
|
||||||
|
interleave = 2
|
||||||
|
)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
val resolvedIps = HttpUtil.resolveHostToIP(domain, preferIpv6)
|
val resolvedIps = HttpUtil.resolveHostToIP(domain, preferIpv6)
|
||||||
if (resolvedIps.isNullOrEmpty()) continue
|
if (resolvedIps.isNullOrEmpty()) continue
|
||||||
|
|
||||||
item.ensureSockopt().domainStrategy = if (preferIpv6) "UseIPv6v4" else "UseIPv4v6"
|
item.ensureSockopt().domainStrategy = "UseIP"
|
||||||
|
item.ensureSockopt().happyEyeballs = StreamSettingsBean.happyEyeballsBean(
|
||||||
|
prioritizeIPv6 = preferIpv6,
|
||||||
|
interleave = 2
|
||||||
|
)
|
||||||
newHosts[domain] = if (resolvedIps.size == 1) {
|
newHosts[domain] = if (resolvedIps.size == 1) {
|
||||||
resolvedIps[0]
|
resolvedIps[0]
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user