aboutsummaryrefslogtreecommitdiffstats
path: root/mumd/src/state.rs
diff options
context:
space:
mode:
authorEskil Queseth <eskilq@kth.se>2021-05-21 15:21:57 +0200
committerEskil Queseth <eskilq@kth.se>2021-05-21 15:21:57 +0200
commit6519ad9c82549817d797a5d9d463a418eb35273f (patch)
treefa15449dc6f52c755f5a43404b901948338af0ed /mumd/src/state.rs
parentd6779ca065a896d329a7634d69a5f4270d829b73 (diff)
downloadmum-6519ad9c82549817d797a5d9d463a418eb35273f.tar.gz
fix deadlock and change message registering properly
Diffstat (limited to 'mumd/src/state.rs')
-rw-r--r--mumd/src/state.rs20
1 files changed, 10 insertions, 10 deletions
diff --git a/mumd/src/state.rs b/mumd/src/state.rs
index 483f915..fba6ab0 100644
--- a/mumd/src/state.rs
+++ b/mumd/src/state.rs
@@ -612,16 +612,6 @@ pub fn handle_command(
}
Command::PastMessages { block } => {
if block {
- let messages = std::mem::take(&mut state.message_buffer);
- let server = match state.server.as_ref() {
- Some(s) => s,
- None => return now!(Err(Error::Disconnected)),
- };
- let messages = messages.into_iter()
- .map(|(msg, user)| (msg, server.users().get(&user).unwrap().name().to_string())).collect();
-
- now!(Ok(Some(CommandResponse::PastMessages { messages })))
- } else {
let ref_state = Arc::clone(&og_state);
ExecutionContext::TcpEventSubscriber(
TcpEvent::TextMessage,
@@ -637,6 +627,16 @@ pub fn handle_command(
}
}),
)
+ } else {
+ let messages = std::mem::take(&mut state.message_buffer);
+ let server = match state.server.as_ref() {
+ Some(s) => s,
+ None => return now!(Err(Error::Disconnected)),
+ };
+ let messages = messages.into_iter()
+ .map(|(msg, user)| (msg, server.users().get(&user).unwrap().name().to_string())).collect();
+
+ now!(Ok(Some(CommandResponse::PastMessages { messages })))
}
}
Command::SendMessage { message, targets } => {