@@ -10,7 +10,7 @@ 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 :: {
1616 config:: Cfg , currentprocess:: Process , errors:: RustupError , toolchain:: ToolchainName ,
@@ -1171,9 +1171,18 @@ pub(crate) async fn dl_v2_manifest(
11711171 Ok ( Some ( ( manifest, manifest_hash) ) )
11721172 }
11731173 Err ( any) => {
1174- if let Some ( RustupError :: ChecksumFailed { .. } ) = any. downcast_ref :: < RustupError > ( ) {
1175- // Checksum failed - issue warning to try again later
1176- info ! ( "update not yet available, sorry! try again later" )
1174+ if let Some ( err @ RustupError :: ChecksumFailed { .. } ) =
1175+ any. downcast_ref :: < RustupError > ( )
1176+ {
1177+ // Manifest checksum mismatched.
1178+ // This might indicate a transient state during an update
1179+ // on the official release server
1180+ // (see <https://github.com/rust-lang/rustup/issues/3390>)
1181+ // or a misconfiguration of a third-party release server
1182+ // (see <https://github.com/rust-lang/rustup/issues/3885>).
1183+ warn ! ( "{err}" ) ;
1184+ info ! ( "if you are on the official release server, this is most likely due to an update happening right now, please try again later" ) ;
1185+ info ! ( "if you are on a third-party release server, this might indicate a problem with the server's configuration" ) ;
11771186 }
11781187 Err ( any)
11791188 }
0 commit comments