Merge pull request #83 from andrew-d-jackson/fix/fix-invalid-message-crashing-server

Fix invalid messages crashing the server
This commit is contained in:
Kevin Jahns 2021-10-13 18:33:12 +02:00 committed by GitHub
commit a5c72c09e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -162,21 +162,26 @@ 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) {
console.error(err)
doc.emit('error', [err])
} }
} }