From 521088ec60a47e9fc8aeb4c4925b50d5111af6e2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Simon=20D=C3=B6ring?= <simon.doering@stud.hs-bochum.de>
Date: Fri, 5 Feb 2021 21:43:09 +0100
Subject: [PATCH] Disconnect sender socket when slot is deactivated

---
 .../src/io-interface/handlers/input-handlers.ts        | 10 +++++++---
 .../src/socket-io/handlers/sender-handlers.ts          |  9 +++++++++
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/camera-server/src/io-interface/handlers/input-handlers.ts b/camera-server/src/io-interface/handlers/input-handlers.ts
index aeab520..4522f7f 100644
--- a/camera-server/src/io-interface/handlers/input-handlers.ts
+++ b/camera-server/src/io-interface/handlers/input-handlers.ts
@@ -1,11 +1,13 @@
 import { socketIO } from '../../socket-io/socket-io';
 import { cameraSlotState } from '../../state/camera-slot-state';
 import {
-    emitRemoveFeed,
     emitSetAnnotation,
     emitRemoveAnnotation
 } from '../../socket-io/handlers/common-handlers';
-import { emitControllerBitrateLimit } from '../../socket-io/handlers/sender-handlers';
+import {
+    disconnectSocket,
+    emitControllerBitrateLimit
+} from '../../socket-io/handlers/sender-handlers';
 import { setBitrate } from '../../janus/handlers';
 import { config } from '../../config/config';
 
@@ -63,7 +65,9 @@ const handleInternalCommand = (
                 return;
             }
             console.log('Deactivating slot ' + slot);
-            emitRemoveFeed(slot);
+            if (currentCameraState.feedActive) {
+                disconnectSocket(currentCameraState.senderSocketId!);
+            }
 
             currentCameraState.slotActive = false;
             currentCameraState.token = null;
diff --git a/camera-server/src/socket-io/handlers/sender-handlers.ts b/camera-server/src/socket-io/handlers/sender-handlers.ts
index e13ab46..691b1a4 100644
--- a/camera-server/src/socket-io/handlers/sender-handlers.ts
+++ b/camera-server/src/socket-io/handlers/sender-handlers.ts
@@ -8,6 +8,15 @@ import { setBitrate } from '../../janus/handlers';
 import { socketIO } from '../socket-io';
 import { config } from '../../config/config';
 
+export const disconnectSocket = (socketId: string) => {
+    const socket = socketIO.sockets.sockets.get(socketId);
+    if (socket) {
+        socket.disconnect();
+    } else {
+        console.log('Error: Tried to disconnect socket that does not exist');
+    }
+};
+
 export const emitControllerBitrateLimit = (
     socketId: string,
     bitrateLimit: number
-- 
GitLab