Fix invalid messages crashing the server

This commit is contained in:
Andrew Jackson 2021-10-12 17:09:54 +01:00
parent 5280aeb736
commit 460683d2ee

View File

@ -162,21 +162,25 @@ exports.getYDoc = getYDoc
* @param {Uint8Array} message * @param {Uint8Array} message
*/ */
const messageListener = (conn, doc, message) => { const messageListener = (conn, doc, message) => {
const encoder = encoding.createEncoder() try {
const decoder = decoding.createDecoder(message) const encoder = encoding.createEncoder()
const messageType = decoding.readVarUint(decoder) const decoder = decoding.createDecoder(message)
switch (messageType) { const messageType = decoding.readVarUint(decoder)
case messageSync: switch (messageType) {
encoding.writeVarUint(encoder, messageSync) case messageSync:
syncProtocol.readSyncMessage(decoder, encoder, doc, null) encoding.writeVarUint(encoder, messageSync)
if (encoding.length(encoder) > 1) { syncProtocol.readSyncMessage(decoder, encoder, doc, null)
send(doc, conn, encoding.toUint8Array(encoder)) 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])
} }
} }