Bug Description
In prompt_admin_to_boot and kick_selected_user, after sending the kick packet, remove_client(target_client) is called directly. But the handle_client thread for that client is still running — when it sees the socket close, recv_packet returns None, breaks the loop, and calls remove_client again at line 501. This produces duplicate disconnect broadcasts and log entries.
File & Lines
server code.py — lines 541–543, 819–821, 501
Severity
Functional bug — duplicate disconnect messages sent to all clients.
Bug Description
In
prompt_admin_to_bootandkick_selected_user, after sending the kick packet,remove_client(target_client)is called directly. But thehandle_clientthread for that client is still running — when it sees the socket close,recv_packetreturnsNone, breaks the loop, and callsremove_clientagain at line 501. This produces duplicate disconnect broadcasts and log entries.File & Lines
server code.py— lines 541–543, 819–821, 501Severity
Functional bug — duplicate disconnect messages sent to all clients.