@@ -10,10 +10,13 @@ use once_cell::sync::Lazy;
1010use regex:: Regex ;
1111use serde:: { Deserialize , Serialize } ;
1212use thiserror:: Error as ThisError ;
13- use tracing:: info;
13+ use tracing:: { info, warn } ;
1414
1515use crate :: {
16- config:: Cfg , currentprocess:: Process , errors:: RustupError , toolchain:: ToolchainName ,
16+ config:: { dist_root_server, Cfg } ,
17+ currentprocess:: Process ,
18+ errors:: RustupError ,
19+ toolchain:: ToolchainName ,
1720 utils:: utils,
1821} ;
1922
@@ -1166,9 +1169,20 @@ pub(crate) async fn dl_v2_manifest(
11661169 Ok ( Some ( ( manifest, manifest_hash) ) )
11671170 }
11681171 Err ( any) => {
1169- if let Some ( RustupError :: ChecksumFailed { .. } ) = any. downcast_ref :: < RustupError > ( ) {
1170- // Checksum failed - issue warning to try again later
1171- info ! ( "update not yet available, sorry! try again later" )
1172+ if let Some ( err @ RustupError :: ChecksumFailed { .. } ) =
1173+ any. downcast_ref :: < RustupError > ( )
1174+ {
1175+ // Manifest checksum mismatched.
1176+ warn ! ( "{err}" ) ;
1177+
1178+ let server = dist_root_server ( download. process ) ?;
1179+ if server == DEFAULT_DIST_SERVER {
1180+ info ! ( "this is likely due to an ongoing update of the official release server, please try again later" ) ;
1181+ info ! ( "see <https://github.com/rust-lang/rustup/issues/3390> for more details" ) ;
1182+ } else {
1183+ info ! ( "this might indicate an issue with the third-party release server '{server}'" ) ;
1184+ info ! ( "see <https://github.com/rust-lang/rustup/issues/3885> for more details" ) ;
1185+ }
11721186 }
11731187 Err ( any)
11741188 }
0 commit comments