This commit is contained in:
kc1awv
2026-01-09 11:46:30 -05:00
parent 5e44961306
commit 8104f5ae1f
+3 -16
View File
@@ -124,41 +124,28 @@ class SessionManager:
if nick: if nick:
self.update_nick_index(link, nick, None) self.update_nick_index(link, nick, None)
# Notify remaining members and remove from rooms
peer_hash = bytes(peer) if isinstance(peer, (bytes, bytearray)) else None peer_hash = bytes(peer) if isinstance(peer, (bytes, bytearray)) else None
for room in list(sess["rooms"]): for room in list(sess["rooms"]):
# Get remaining members before removing the disconnecting user
remaining_members = [ remaining_members = [
member_link member_link
for member_link in self.hub.room_manager.get_room_members(room) for member_link in self.hub.room_manager.get_room_members(room)
if member_link != link if member_link != link
] ]
# Remove the disconnecting user from the room
self.hub.room_manager.remove_member(room, link) self.hub.room_manager.remove_member(room, link)
# Send PARTED notification to remaining members
if remaining_members and peer_hash and self.hub.identity: if remaining_members and peer_hash and self.hub.identity:
notification_body = ( notification_body = [peer_hash] if self.hub.config.include_joined_member_list else None
[peer_hash] if self.hub.config.include_joined_member_list else None
)
member_notification = make_envelope( member_notification = make_envelope(
T_PARTED, T_PARTED, src=self.hub.identity.hash, room=room, body=notification_body
src=self.hub.identity.hash,
room=room,
body=notification_body,
) )
member_notification_payload = encode(member_notification) member_notification_payload = encode(member_notification)
for member_link in remaining_members: for member_link in remaining_members:
try: try:
import RNS import RNS
RNS.Packet(member_link, member_notification_payload).send() RNS.Packet(member_link, member_notification_payload).send()
self.hub.stats_manager.inc( self.hub.stats_manager.inc("bytes_out", len(member_notification_payload))
"bytes_out", len(member_notification_payload)
)
except Exception: except Exception:
# Link may already be closed or in bad state, ignore send failures
pass pass
return peer, nick, rooms_count return peer, nick, rooms_count