aboutsummaryrefslogtreecommitdiffstats
path: root/mumd
diff options
context:
space:
mode:
Diffstat (limited to 'mumd')
-rw-r--r--mumd/src/audio.rs4
-rw-r--r--mumd/src/main.rs5
-rw-r--r--mumd/src/network/tcp.rs2
-rw-r--r--mumd/src/state.rs1
4 files changed, 8 insertions, 4 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/main.rs b/mumd/src/main.rs
index 7ab3c61..3a0d7ec 100644
--- a/mumd/src/main.rs
+++ b/mumd/src/main.rs
@@ -37,7 +37,6 @@ async fn main() {
);
let state = Arc::new(Mutex::new(state));
- // Run it
let (_, _, _, e) = join!(
network::tcp::handle(
Arc::clone(&state),
@@ -54,7 +53,7 @@ async fn main() {
state,
command_receiver,
),
- spawn_blocking(move || {
+ spawn_blocking(move || { // IpcSender is blocking
receive_oneshot_commands(command_sender);
}),
);
@@ -68,7 +67,7 @@ fn receive_oneshot_commands(
// create listener
let (server, server_name): (IpcOneShotServer<(Command, IpcSender<mumlib::error::Result<Option<CommandResponse>>>)>, String) = IpcOneShotServer::new().unwrap();
fs::write("/var/tmp/mumd-oneshot", &server_name).unwrap();
- debug!("Listening for command at {}...", server_name);
+ debug!("Listening to {}", server_name);
// receive command and response channel
let (_, conn): (_, (Command, IpcSender<mumlib::error::Result<Option<CommandResponse>>>)) = server.accept().unwrap();
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 0b3663d..58280cc 100644
--- a/mumd/src/state.rs
+++ b/mumd/src/state.rs
@@ -131,6 +131,7 @@ impl State {
self.session_id = None;
self.username = None;
self.server = None;
+ self.audio.clear_clients();
self.phase_watcher
.0