From 0b323d309236f7fd4017e805ff161b893b44c8ab Mon Sep 17 00:00:00 2001 From: Alexander Date: Thu, 22 Jun 2023 15:59:53 +0200 Subject: [PATCH] fix(assist): added checks for undefined variables (#1362) --- assist/servers/websocket.js | 6 +++--- ee/assist/servers/websocket-cluster.js | 12 ++++++------ ee/assist/servers/websocket.js | 13 ++++++------- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/assist/servers/websocket.js b/assist/servers/websocket.js index 48bf629f0..3ae61c083 100644 --- a/assist/servers/websocket.js +++ b/assist/servers/websocket.js @@ -348,7 +348,7 @@ module.exports = { if (args[0]?.meta === undefined && socket.identity === IDENTITIES.session) { args[0] = {meta: {tabId: socket.tabId, version: 1}, data: args[0]}; } - Object.assign(socket.handshake.query.sessionInfo, args[0].data, {tabId: args[0].meta.tabId}); + Object.assign(socket.handshake.query.sessionInfo, args[0].data, {tabId: args[0]?.meta?.tabId}); socket.to(socket.roomId).emit(EVENTS_DEFINITION.emit.UPDATE_EVENT, args[0]); // Update sessionInfo for all sessions in room const rooms = await getAvailableRooms(io); @@ -357,7 +357,7 @@ module.exports = { const connected_sockets = await io.in(roomId).fetchSockets(); for (let item of connected_sockets) { if (item.handshake.query.identity === IDENTITIES.session && item.handshake.query.sessionInfo) { - Object.assign(item.handshake.query.sessionInfo, args[0].data, {tabId: args[0].meta.tabId}); + Object.assign(item.handshake.query.sessionInfo, args[0]?.data, {tabId: args[0]?.meta?.tabId}); } } } @@ -427,4 +427,4 @@ module.exports = { socketsLive, socketsLiveByProject } -}; +}; \ No newline at end of file diff --git a/ee/assist/servers/websocket-cluster.js b/ee/assist/servers/websocket-cluster.js index 3b2231c44..04b4e7ef8 100644 --- a/ee/assist/servers/websocket-cluster.js +++ b/ee/assist/servers/websocket-cluster.js @@ -398,10 +398,10 @@ module.exports = { return } // Back compatibility (add top layer with meta information) - if (args[0].meta === undefined) { - args[0] = {meta: {tabId: socket.tabId}, data: args[0]}; + if (args[0]?.meta === undefined && socket.identity === IDENTITIES.session) { + args[0] = {meta: {tabId: socket.tabId, version: 1}, data: args[0]}; } - Object.assign(socket.handshake.query.sessionInfo, args[0].data, {tabId: args[0].meta.tabId}); + Object.assign(socket.handshake.query.sessionInfo, args[0].data, {tabId: args[0]?.meta?.tabId}); socket.to(socket.roomId).emit(EVENTS_DEFINITION.emit.UPDATE_EVENT, args[0]); // Update sessionInfo for all sessions in room const rooms = await getAvailableRooms(io); @@ -410,7 +410,7 @@ module.exports = { const connected_sockets = await io.in(roomId).fetchSockets(); for (let item of connected_sockets) { if (item.handshake.query.identity === IDENTITIES.session && item.handshake.query.sessionInfo) { - Object.assign(item.handshake.query.sessionInfo, args[0].data, {tabId: args[0].meta.tabId}); + Object.assign(item.handshake.query.sessionInfo, args[0]?.data, {tabId: args[0]?.meta?.tabId}); } } } @@ -426,7 +426,7 @@ module.exports = { return } // Back compatibility (add top layer with meta information) - if (args[0].meta === undefined && socket.identity === IDENTITIES.session) { + if (args[0]?.meta === undefined && socket.identity === IDENTITIES.session) { args[0] = {meta: {tabId: socket.tabId, version: 1}, data: args[0]}; } if (socket.identity === IDENTITIES.session) { @@ -435,7 +435,7 @@ module.exports = { socket.to(socket.roomId).emit(eventName, args[0]); } else { debug && console.log(`received event:${eventName}, from:${socket.identity}, sending message to session of room:${socket.roomId}`); - let socketId = await findSessionSocketId(io, socket.roomId, args[0].meta.tabId); + let socketId = await findSessionSocketId(io, socket.roomId, args[0]?.meta?.tabId); if (socketId === null) { debug && console.log(`session not found for:${socket.roomId}`); io.to(socket.id).emit(EVENTS_DEFINITION.emit.NO_SESSIONS); diff --git a/ee/assist/servers/websocket.js b/ee/assist/servers/websocket.js index 32921fa49..b4b6cd221 100644 --- a/ee/assist/servers/websocket.js +++ b/ee/assist/servers/websocket.js @@ -366,10 +366,10 @@ module.exports = { return } // Back compatibility (add top layer with meta information) - if (args[0].meta === undefined) { - args[0] = {meta: {tabId: socket.tabId}, data: args[0]}; + if (args[0]?.meta === undefined && socket.identity === IDENTITIES.session) { + args[0] = {meta: {tabId: socket.tabId, version: 1}, data: args[0]}; } - Object.assign(socket.handshake.query.sessionInfo, args[0].data, {tabId: args[0].meta.tabId}); + Object.assign(socket.handshake.query.sessionInfo, args[0].data, {tabId: args[0]?.meta?.tabId}); socket.to(socket.roomId).emit(EVENTS_DEFINITION.emit.UPDATE_EVENT, args[0]); // Update sessionInfo for all sessions in room const rooms = await getAvailableRooms(io); @@ -378,7 +378,7 @@ module.exports = { const connected_sockets = await io.in(roomId).fetchSockets(); for (let item of connected_sockets) { if (item.handshake.query.identity === IDENTITIES.session && item.handshake.query.sessionInfo) { - Object.assign(item.handshake.query.sessionInfo, args[0].data, {tabId: args[0].meta.tabId}); + Object.assign(item.handshake.query.sessionInfo, args[0]?.data, {tabId: args[0]?.meta?.tabId}); } } } @@ -394,7 +394,7 @@ module.exports = { return } // Back compatibility (add top layer with meta information) - if (args[0].meta === undefined && socket.identity === IDENTITIES.session) { + if (args[0]?.meta === undefined && socket.identity === IDENTITIES.session) { args[0] = {meta: {tabId: socket.tabId, version: 1}, data: args[0]}; } if (socket.identity === IDENTITIES.session) { @@ -402,7 +402,7 @@ module.exports = { socket.to(socket.roomId).emit(eventName, args[0]); } else { debug && console.log(`received event:${eventName}, from:${socket.identity}, sending message to session of room:${socket.peerId}`); - let socketId = await findSessionSocketId(io, socket.roomId, args[0].meta.tabId); + let socketId = await findSessionSocketId(io, socket.roomId, args[0]?.meta?.tabId); if (socketId === null) { debug && console.log(`session not found for:${socket.roomId}`); io.to(socket.id).emit(EVENTS_DEFINITION.emit.NO_SESSIONS); @@ -412,7 +412,6 @@ module.exports = { } } }); - }); console.log("WS server started"); setInterval(async (io) => {