From 449fba1050243f4bf6d67ecb9bfc8e642defdc9e Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Thu, 10 Mar 2016 19:36:45 +0100 Subject: [PATCH] Improve LoginResponse handling. --- src/client.rs | 53 +++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/src/client.rs b/src/client.rs index a21dfbf..e052552 100644 --- a/src/client.rs +++ b/src/client.rs @@ -130,36 +130,35 @@ impl Client { } fn handle_login_response(&mut self, login: LoginResponse) { - match self.state { - State::LoggingIn => { - match login { - LoginResponse::LoginOk { motd, ip, password_md5_opt } => { - self.state = State::LoggedIn; - - info!("Login successful!"); - info!("MOTD: \"{}\"", motd); - info!("External IP address: {}", ip); - - match password_md5_opt { - Some(_) => { - info!(concat!( - "Connected to official server ", - "as official client")); - }, - None => info!(concat!( + if let State::LoggingIn = self.state { + match login { + LoginResponse::LoginOk { motd, ip, password_md5_opt } => { + self.state = State::LoggedIn; + + info!("Login successful!"); + info!("MOTD: \"{}\"", motd); + info!("External IP address: {}", ip); + + match password_md5_opt { + Some(_) => { + info!(concat!( "Connected to official server ", - "as unofficial client")), - } - }, - - LoginResponse::LoginFail { reason } => { - self.state = State::NotLoggedIn; - error!("Login failed: \"{}\"", reason); + "as official client")); + }, + None => info!(concat!( + "Connected to official server ", + "as unofficial client")), } - } - }, + }, - _ => unimplemented!(), + LoginResponse::LoginFail { reason } => { + self.state = State::NotLoggedIn; + error!("Login failed: \"{}\"", reason); + } + } + } else { + error!("Received unexpected login response, state = {:?}", + self.state); } }