From 460683d2eef472974e84fe699b109b713ab33ef7 Mon Sep 17 00:00:00 2001 From: Andrew Jackson Date: Tue, 12 Oct 2021 17:09:54 +0100 Subject: [PATCH] Fix invalid messages crashing the server --- bin/utils.js | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/bin/utils.js b/bin/utils.js index c49c763..453953d 100644 --- a/bin/utils.js +++ b/bin/utils.js @@ -162,21 +162,25 @@ exports.getYDoc = getYDoc * @param {Uint8Array} message */ const messageListener = (conn, doc, message) => { - const encoder = encoding.createEncoder() - const decoder = decoding.createDecoder(message) - const messageType = decoding.readVarUint(decoder) - switch (messageType) { - case messageSync: - encoding.writeVarUint(encoder, messageSync) - syncProtocol.readSyncMessage(decoder, encoder, doc, null) - if (encoding.length(encoder) > 1) { - send(doc, conn, encoding.toUint8Array(encoder)) + try { + const encoder = encoding.createEncoder() + const decoder = decoding.createDecoder(message) + const messageType = decoding.readVarUint(decoder) + switch (messageType) { + case messageSync: + encoding.writeVarUint(encoder, messageSync) + syncProtocol.readSyncMessage(decoder, encoder, doc, null) + if (encoding.length(encoder) > 1) { + send(doc, conn, encoding.toUint8Array(encoder)) + } + break + case messageAwareness: { + awarenessProtocol.applyAwarenessUpdate(doc.awareness, decoding.readVarUint8Array(decoder), conn) + break } - break - case messageAwareness: { - awarenessProtocol.applyAwarenessUpdate(doc.awareness, decoding.readVarUint8Array(decoder), conn) - break } + } catch (err) { + doc.emit('error', [err]) } }