From af06f657135c9297b6ffdcb6914a2d2bf3255eb2 Mon Sep 17 00:00:00 2001 From: Sam Sartor Date: Fri, 8 Nov 2024 21:27:02 -0700 Subject: [PATCH] fix root channel bug --- src/lib.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 2ba9d86..015ad29 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -310,8 +310,11 @@ fn accept_packet( let server = &mut *server; let id = u.get_session(); - let state = server.users.entry(id).or_default(); - if u.has_channel_id() { + let state_entry = server.users.entry(id); + let new = matches!(state_entry, std::collections::hash_map::Entry::Vacant(_)); + let state = state_entry.or_default(); + // the server might now send a channel_id if the user is in channel=0 + if u.has_channel_id() || new { if let Some(parent) = server.channels.get_mut(&state.channel) { parent.users.remove(&id); }