From 12a48be1400005e44fe1dc9927a52a1ddaeb7ca7 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 8 Mar 2021 11:55:32 +0100 Subject: [PATCH] Fix HPB missing event when a session is terminated only Signed-off-by: Joas Schilling --- lib/Signaling/Listener.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/Signaling/Listener.php b/lib/Signaling/Listener.php index 6c4056cdb1c..074563ed17f 100644 --- a/lib/Signaling/Listener.php +++ b/lib/Signaling/Listener.php @@ -191,10 +191,29 @@ protected static function registerExternalSignaling(IEventDispatcher $dispatcher $sessionIds[] = $session->getSessionId(); } + if ($event->getParticipant()->getSession()) { + $sessionIds[] = $event->getParticipant()->getSession()->getSessionId(); + $notifier->roomSessionsRemoved($event->getRoom(), $sessionIds); + } + if (!empty($sessionIds)) { $notifier->roomSessionsRemoved($event->getRoom(), $sessionIds); } }); + $dispatcher->addListener(Room::EVENT_AFTER_ROOM_DISCONNECT, static function (ParticipantEvent $event) { + if (self::isUsingInternalSignaling()) { + return; + } + + /** @var BackendNotifier $notifier */ + $notifier = \OC::$server->query(BackendNotifier::class); + + $sessionIds = []; + if ($event->getParticipant()->getSession()) { + $sessionIds[] = $event->getParticipant()->getSession()->getSessionId(); + $notifier->roomSessionsRemoved($event->getRoom(), $sessionIds); + } + }); $listener = static function (ModifyParticipantEvent $event) { if (self::isUsingInternalSignaling()) {