diff options
| author | Eskil <eskilq@kth.se> | 2020-10-16 00:22:43 +0200 |
|---|---|---|
| committer | Eskil <eskilq@kth.se> | 2020-10-16 00:22:43 +0200 |
| commit | c96eb0279e8d3092988e8d5c49e132d243ddbae4 (patch) | |
| tree | dc3fec8b2a3ca7139cab0a88803ef8570d71f93b /mumd/src | |
| parent | 905dc8af970b990eb10c5fdebe392a46e1bf2365 (diff) | |
| download | mum-c96eb0279e8d3092988e8d5c49e132d243ddbae4.tar.gz | |
Update state properly when disconnecting from server and on user_state packet
Diffstat (limited to 'mumd/src')
| -rw-r--r-- | mumd/src/audio.rs | 4 | ||||
| -rw-r--r-- | mumd/src/network/tcp.rs | 2 | ||||
| -rw-r--r-- | mumd/src/state.rs | 1 |
3 files changed, 6 insertions, 1 deletions
diff --git a/mumd/src/audio.rs b/mumd/src/audio.rs index 1445415..edc2f7f 100644 --- a/mumd/src/audio.rs +++ b/mumd/src/audio.rs @@ -191,6 +191,10 @@ impl Audio { pub fn take_receiver(&mut self) -> Option<Receiver<VoicePacketPayload>> { self.input_channel_receiver.take() } + + pub fn clear_clients(&mut self) { + self.client_streams.lock().unwrap().clear(); + } } impl ClientStream { diff --git a/mumd/src/network/tcp.rs b/mumd/src/network/tcp.rs index 6a369e5..ea4ef86 100644 --- a/mumd/src/network/tcp.rs +++ b/mumd/src/network/tcp.rs @@ -286,8 +286,8 @@ async fn listen( ControlPacket::UserState(msg) => { let mut state = state.lock().unwrap(); let session = msg.get_session(); - state.audio_mut().add_client(msg.get_session()); //TODO if *state.phase_receiver().borrow() == StatePhase::Connecting { + state.audio_mut().add_client(msg.get_session()); state.parse_initial_user_state(*msg); } else { state.server_mut().unwrap().parse_user_state(*msg); diff --git a/mumd/src/state.rs b/mumd/src/state.rs index b6fe780..68ced10 100644 --- a/mumd/src/state.rs +++ b/mumd/src/state.rs @@ -125,6 +125,7 @@ impl State { self.session_id = None; self.username = None; self.server = None; + self.audio.clear_clients(); self.phase_watcher .0 |
