From 4f84b2229eaeeff73b579c36aece8916e853bb61 Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nwpope@utu.fi>
Date: Fri, 28 Aug 2020 11:04:58 +0300
Subject: [PATCH] Fix some disconnect issues in web service

---
 web-service/server/src/index.js | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/web-service/server/src/index.js b/web-service/server/src/index.js
index da2a904af..773181878 100644
--- a/web-service/server/src/index.js
+++ b/web-service/server/src/index.js
@@ -276,7 +276,7 @@ function checkStreams(peer) {
 	if (!peer.master) {
 		setTimeout(() => {
 			peer.rpc("list_streams", (streams) => {
-				console.log("STREAMS", streams);
+				//console.log("STREAMS", streams);
 				for (let i=0; i<streams.length; i++) {
 					//uri_to_peer[streams[i]] = peer;
 					let parsedURI = stringSplitter(streams[i])
@@ -288,7 +288,7 @@ function checkStreams(peer) {
 			});
 
 			peer.rpc("list_configurables", (cfgs) => {
-				console.log("CONFIGS", cfgs);
+				//console.log("CONFIGS", cfgs);
 				for (let i=0; i<cfgs.length; i++) {
 					if (!cfg_to_peer.hasOwnProperty(cfgs[i])) cfg_to_peer[cfgs[i]] = peer;
 				}
@@ -339,16 +339,20 @@ app.ws('/', (ws, req) => {
 	});
 
 	p.on("disconnect", (peer) => {
-		console.log("DISCONNECT");
+		console.log("DISCONNECT", peer);
 		// Remove all peer details and streams....
 
+		if (peer.status != 2) return;
+
 		let puris = peer_uris[peer.string_id];
 		if (puris) {
 			for (let i=0; i<puris.length; i++) {
 				console.log("Removing stream: ", puris[i]);
 				delete uri_to_peer[puris[i]];
-				delete stream_list[uri_data[puris[i]].uri];
-				delete uri_data[puris[i]];
+				if (uri_data.hasOwnProperty(puris[i])) {
+					delete stream_list[uri_data[puris[i]].uri];
+					delete uri_data[puris[i]];
+				}
 				//p.unbind(pu)
 			}
 			delete peer_uris[peer.string_id];
@@ -385,7 +389,7 @@ app.ws('/', (ws, req) => {
 		for (let c in cfg_to_peer) {
 			if (cfg_to_peer[c] !== p) result.push(c);
 		}
-		console.log("List Configs: ", result);
+		//console.log("List Configs: ", result);
 		return result;
 	});
 
-- 
GitLab