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
*/
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) {
console.error(err)
doc.emit('error', [err])
}
}