skip getProxyConfigV6 when ipv6 is disabled

This commit is contained in:
sabraman 2026-03-23 00:56:32 +03:00
parent d494556701
commit 094d948f77
2 changed files with 82 additions and 47 deletions

View File

@ -146,39 +146,70 @@ pub(crate) async fn initialize_me_pool(
) )
.await; .await;
} }
startup_tracker let ipv6_enabled = config.network.ipv6 != Some(false);
.start_component( let cfg_v6 = if ipv6_enabled {
COMPONENT_ME_PROXY_CONFIG_V6, startup_tracker
Some("load startup proxy-config v6".to_string()), .start_component(
COMPONENT_ME_PROXY_CONFIG_V6,
Some("load startup proxy-config v6".to_string()),
)
.await;
startup_tracker
.set_me_status(StartupMeStatus::Initializing, COMPONENT_ME_PROXY_CONFIG_V6)
.await;
let cfg_v6 = load_startup_proxy_config_snapshot(
"https://core.telegram.org/getProxyConfigV6",
config.general.proxy_config_v6_cache_path.as_deref(),
me2dc_fallback,
"getProxyConfigV6",
) )
.await; .await;
startup_tracker if cfg_v6.is_some() {
.set_me_status(StartupMeStatus::Initializing, COMPONENT_ME_PROXY_CONFIG_V6) startup_tracker
.await; .complete_component(
let cfg_v6 = load_startup_proxy_config_snapshot( COMPONENT_ME_PROXY_CONFIG_V6,
"https://core.telegram.org/getProxyConfigV6", Some("proxy-config v6 loaded".to_string()),
config.general.proxy_config_v6_cache_path.as_deref(), )
me2dc_fallback, .await;
"getProxyConfigV6", } else {
) startup_tracker
.await; .fail_component(
if cfg_v6.is_some() { COMPONENT_ME_PROXY_CONFIG_V6,
startup_tracker Some("proxy-config v6 unavailable".to_string()),
.complete_component( )
COMPONENT_ME_PROXY_CONFIG_V6, .await;
Some("proxy-config v6 loaded".to_string()), }
) cfg_v6
.await;
} else { } else {
startup_tracker startup_tracker
.fail_component( .skip_component(
COMPONENT_ME_PROXY_CONFIG_V6, COMPONENT_ME_PROXY_CONFIG_V6,
Some("proxy-config v6 unavailable".to_string()), Some("IPv6 is disabled in config".to_string()),
) )
.await; .await;
} None
};
if let Some(cfg_v4) = cfg_v4 {
if ipv6_enabled && cfg_v6.is_none() {
startup_tracker
.skip_component(
COMPONENT_ME_POOL_CONSTRUCT,
Some("ME configs are incomplete".to_string()),
)
.await;
startup_tracker
.fail_component(
COMPONENT_ME_POOL_INIT_STAGE1,
Some("ME configs are incomplete".to_string()),
)
.await;
startup_tracker
.set_me_status(StartupMeStatus::Failed, "failed")
.await;
return None;
}
if let (Some(cfg_v4), Some(cfg_v6)) = (cfg_v4, cfg_v6) {
startup_tracker startup_tracker
.start_component( .start_component(
COMPONENT_ME_POOL_CONSTRUCT, COMPONENT_ME_POOL_CONSTRUCT,
@ -200,8 +231,10 @@ pub(crate) async fn initialize_me_pool(
config.timeouts.me_one_retry, config.timeouts.me_one_retry,
config.timeouts.me_one_timeout_ms, config.timeouts.me_one_timeout_ms,
cfg_v4.map.clone(), cfg_v4.map.clone(),
cfg_v6.map.clone(), cfg_v6.as_ref().map(|cfg| cfg.map.clone()).unwrap_or_default(),
cfg_v4.default_dc.or(cfg_v6.default_dc), cfg_v4
.default_dc
.or(cfg_v6.as_ref().and_then(|cfg| cfg.default_dc)),
decision.clone(), decision.clone(),
Some(upstream_manager.clone()), Some(upstream_manager.clone()),
rng.clone(), rng.clone(),

View File

@ -378,26 +378,28 @@ async fn run_update_cycle(
} }
let mut ready_v6: Option<(ProxyConfigData, u64)> = None; let mut ready_v6: Option<(ProxyConfigData, u64)> = None;
let cfg_v6 = retry_fetch("https://core.telegram.org/getProxyConfigV6").await; if cfg.network.ipv6 != Some(false) {
if let Some(cfg_v6) = cfg_v6 let cfg_v6 = retry_fetch("https://core.telegram.org/getProxyConfigV6").await;
&& snapshot_passes_guards(cfg, &cfg_v6, "getProxyConfigV6") if let Some(cfg_v6) = cfg_v6
{ && snapshot_passes_guards(cfg, &cfg_v6, "getProxyConfigV6")
let cfg_v6_hash = hash_proxy_config(&cfg_v6); {
let stable_hits = state.config_v6.observe(cfg_v6_hash); let cfg_v6_hash = hash_proxy_config(&cfg_v6);
if stable_hits < required_cfg_snapshots { let stable_hits = state.config_v6.observe(cfg_v6_hash);
debug!( if stable_hits < required_cfg_snapshots {
stable_hits, debug!(
required_cfg_snapshots, stable_hits,
snapshot = format_args!("0x{cfg_v6_hash:016x}"), required_cfg_snapshots,
"ME config v6 candidate observed" snapshot = format_args!("0x{cfg_v6_hash:016x}"),
); "ME config v6 candidate observed"
} else if state.config_v6.is_applied(cfg_v6_hash) { );
debug!( } else if state.config_v6.is_applied(cfg_v6_hash) {
snapshot = format_args!("0x{cfg_v6_hash:016x}"), debug!(
"ME config v6 stable snapshot already applied" snapshot = format_args!("0x{cfg_v6_hash:016x}"),
); "ME config v6 stable snapshot already applied"
} else { );
ready_v6 = Some((cfg_v6, cfg_v6_hash)); } else {
ready_v6 = Some((cfg_v6, cfg_v6_hash));
}
} }
} }