@@ -10,7 +10,7 @@ use once_cell::sync::Lazy;
10
10
use regex:: Regex ;
11
11
use serde:: { Deserialize , Serialize } ;
12
12
use thiserror:: Error as ThisError ;
13
- use tracing:: info;
13
+ use tracing:: { info, warn } ;
14
14
15
15
use crate :: {
16
16
config:: Cfg , currentprocess:: Process , errors:: RustupError , toolchain:: ToolchainName ,
@@ -1169,9 +1169,18 @@ pub(crate) async fn dl_v2_manifest(
1169
1169
Ok ( Some ( ( manifest, manifest_hash) ) )
1170
1170
}
1171
1171
Err ( any) => {
1172
- if let Some ( RustupError :: ChecksumFailed { .. } ) = any. downcast_ref :: < RustupError > ( ) {
1173
- // Checksum failed - issue warning to try again later
1174
- 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
+ // This might indicate a transient state during an update
1177
+ // on the official release server
1178
+ // (see <https://github.com/rust-lang/rustup/issues/3390>)
1179
+ // or a misconfiguration of a third-party release server
1180
+ // (see <https://github.com/rust-lang/rustup/issues/3885>).
1181
+ warn ! ( "{err}" ) ;
1182
+ info ! ( "if you are on the official release server, this is most likely due to an update happening right now, please try again later" ) ;
1183
+ info ! ( "if you are on a third-party release server, this might indicate a problem with the server's configuration" ) ;
1175
1184
}
1176
1185
Err ( any)
1177
1186
}
0 commit comments