diff --git a/connect/src/discovery.rs b/connect/src/discovery.rs index 529c0eb..2eacabf 100644 --- a/connect/src/discovery.rs +++ b/connect/src/discovery.rs @@ -132,7 +132,17 @@ impl Discovery { 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 mut data = vec![0u8; encrypted.len()]; @@ -221,7 +231,6 @@ pub fn discovery( let serve = { let http = Http::new(); - debug!("Zeroconf server listening on 0.0.0.0:{}", port); http.serve_addr_handle( &format!("0.0.0.0:{}", port).parse().unwrap(), &handle, @@ -230,6 +239,7 @@ pub fn discovery( }; let s_port = serve.incoming_ref().local_addr().port(); + debug!("Zeroconf server listening on 0.0.0.0:{}", s_port); let server_future = { let handle = handle.clone(); diff --git a/src/main.rs b/src/main.rs index 36cd1b5..14965ad 100644 --- a/src/main.rs +++ b/src/main.rs @@ -445,6 +445,8 @@ impl Future for Main { if !self.shutdown { if let Some(ref spirc) = self.spirc { spirc.shutdown(); + } else { + return Ok(Async::Ready(())); } self.shutdown = true; } else {