Fix invalid messages crashing the server
This commit is contained in:
parent
5280aeb736
commit
460683d2ee
30
bin/utils.js
30
bin/utils.js
@ -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])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user