diff options
| author | Eskil Queseth <eskilq@kth.se> | 2021-05-21 15:35:36 +0200 |
|---|---|---|
| committer | Eskil Queseth <eskilq@kth.se> | 2021-05-21 15:35:36 +0200 |
| commit | 9769c26156311fa24a1a376736172283e199bbf9 (patch) | |
| tree | f24e35ba5fe03fb0ddc6b678d7d930fa4d7c59df /mumd/src | |
| parent | 6519ad9c82549817d797a5d9d463a418eb35273f (diff) | |
| download | mum-9769c26156311fa24a1a376736172283e199bbf9.tar.gz | |
fix panic when user leaves channel
Diffstat (limited to 'mumd/src')
| -rw-r--r-- | mumd/src/state.rs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/mumd/src/state.rs b/mumd/src/state.rs index fba6ab0..7a5df90 100644 --- a/mumd/src/state.rs +++ b/mumd/src/state.rs @@ -619,7 +619,13 @@ pub fn handle_command( if let TcpEventData::TextMessage(a) = data { let message = ( a.get_message().to_owned(), - ref_state.read().unwrap().server().unwrap().users().get(&a.get_actor()).unwrap().name().to_string() + ref_state.read() + .unwrap() + .server() + .unwrap() + .users() + .get(&a.get_actor()).map(|e| e.name().to_string()) + .unwrap_or(format!("Unknown user {}", a.get_actor())) ); sender.send(Ok(Some(CommandResponse::PastMessage { message }))).is_ok() } else { @@ -634,7 +640,14 @@ pub fn handle_command( None => return now!(Err(Error::Disconnected)), }; let messages = messages.into_iter() - .map(|(msg, user)| (msg, server.users().get(&user).unwrap().name().to_string())).collect(); + .map(|(msg, user)| (msg, server + .users() + .get(&user) + .map(|e| e + .name() + .to_string()) + .unwrap_or(format!("Unknown user {}", user)))) + .collect(); now!(Ok(Some(CommandResponse::PastMessages { messages }))) } |
