aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2021-03-29 21:38:12 +0200
committerGustav Sörnäs <gustav@sornas.net>2021-03-29 21:38:12 +0200
commit5af72d30bb1b34cbde1c3ba5e73b7c694461ae51 (patch)
tree11e84e851de0c8431a72fcb9f7bd38057bc722cd
parent65016caa8d565942086540edbee95b8af1e75c8c (diff)
downloadmum-5af72d30bb1b34cbde1c3ba5e73b7c694461ae51.tar.gz
report invalid server password
-rw-r--r--mumd/src/network/tcp.rs12
-rw-r--r--mumlib/src/error.rs2
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")
}
}
}