diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-03-29 21:38:12 +0200 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-03-29 21:38:12 +0200 |
| commit | 5af72d30bb1b34cbde1c3ba5e73b7c694461ae51 (patch) | |
| tree | 11e84e851de0c8431a72fcb9f7bd38057bc722cd | |
| parent | 65016caa8d565942086540edbee95b8af1e75c8c (diff) | |
| download | mum-5af72d30bb1b34cbde1c3ba5e73b7c694461ae51.tar.gz | |
report invalid server password
| -rw-r--r-- | mumd/src/network/tcp.rs | 12 | ||||
| -rw-r--r-- | mumlib/src/error.rs | 2 |
2 files changed, 12 insertions, 2 deletions
diff --git a/mumd/src/network/tcp.rs b/mumd/src/network/tcp.rs index 1738b15..29749f1 100644 --- a/mumd/src/network/tcp.rs +++ b/mumd/src/network/tcp.rs @@ -8,6 +8,7 @@ use mumble_protocol::control::{msgs, ClientControlCodec, ControlCodec, ControlPa use mumble_protocol::crypt::ClientCryptState; use mumble_protocol::voice::VoicePacket; use mumble_protocol::{Clientbound, Serverbound}; +use mumlib::error::Error; use std::collections::HashMap; use std::convert::{Into, TryInto}; use std::net::SocketAddr; @@ -38,7 +39,7 @@ pub enum TcpEvent { #[derive(Clone)] pub enum TcpEventData<'a> { - Connected(Result<&'a msgs::ServerSync, mumlib::error::Error>), + Connected(Result<&'a msgs::ServerSync, Error>), _Disconnected, } @@ -300,7 +301,14 @@ async fn listen( state.initialized(); } ControlPacket::Reject(msg) => { - warn!("Login rejected: {:?}", msg); + match msg.get_field_type() { + msgs::Reject_RejectType::WrongServerPW => { + event_queue.send(TcpEventData::Connected(Err(Error::InvalidServerPassword))).await; + } + _ => { + warn!("Login rejected: {:?}", msg); + } + } } ControlPacket::UserState(msg) => { state.lock().await.parse_user_state(*msg); diff --git a/mumlib/src/error.rs b/mumlib/src/error.rs index 820d5f3..0259c28 100644 --- a/mumlib/src/error.rs +++ b/mumlib/src/error.rs @@ -10,6 +10,7 @@ pub enum Error { ChannelIdentifierError(String, ChannelIdentifierError), InvalidServerAddrError(String, u16), InvalidUsernameError(String), + InvalidServerPassword, } impl fmt::Display for Error { @@ -22,6 +23,7 @@ impl fmt::Display for Error { write!(f, "Invalid server address: {}: {}", addr, port) } Error::InvalidUsernameError(username) => write!(f, "Invalid username: {}", username), + Error::InvalidServerPassword => write!(f, "Invalid server password") } } } |
