diff options
| author | Eskil Queseth <eskilq@kth.se> | 2021-05-21 15:21:57 +0200 |
|---|---|---|
| committer | Eskil Queseth <eskilq@kth.se> | 2021-05-21 15:21:57 +0200 |
| commit | 6519ad9c82549817d797a5d9d463a418eb35273f (patch) | |
| tree | fa15449dc6f52c755f5a43404b901948338af0ed /mumd/src/state.rs | |
| parent | d6779ca065a896d329a7634d69a5f4270d829b73 (diff) | |
| download | mum-6519ad9c82549817d797a5d9d463a418eb35273f.tar.gz | |
fix deadlock and change message registering properly
Diffstat (limited to 'mumd/src/state.rs')
| -rw-r--r-- | mumd/src/state.rs | 20 |
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 } => { |
