mirror of
https://github.com/librespot-org/librespot.git
synced 2024-12-18 17:11:53 +00:00
discover: do not panic on MAC mismatch. (Fixes #289)
The client's expected MAC will not match librespot's derived MAC if the client used the wrong public key. This can happen if librespot is restarted (and thus generated a new key) but the client is still mistakingly using the old public key. When this happens we do not need to panic, we can just abort the connection attempt.
This commit is contained in:
parent
8978559d3a
commit
4c1562f245
1 changed files with 11 additions and 1 deletions
|
@ -132,7 +132,17 @@ impl Discovery {
|
||||||
h.result().code().to_owned()
|
h.result().code().to_owned()
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(&mac[..], cksum);
|
if mac != cksum {
|
||||||
|
warn!("Login error for user {:?}: MAC mismatch", username);
|
||||||
|
let result = json!({
|
||||||
|
"status": 102,
|
||||||
|
"spotifyError": 1,
|
||||||
|
"statusString": "ERROR-MAC"
|
||||||
|
});
|
||||||
|
|
||||||
|
let body = result.to_string();
|
||||||
|
return ::futures::finished(Response::new().with_body(body))
|
||||||
|
}
|
||||||
|
|
||||||
let decrypted = {
|
let decrypted = {
|
||||||
let mut data = vec![0u8; encrypted.len()];
|
let mut data = vec![0u8; encrypted.len()];
|
||||||
|
|
Loading…
Reference in a new issue