mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-20 15:36:16 -04:00
PadMessageHandler: Block Promise resolution until message is handled
Benefits: * More functions are now async which makes it possible for future changes to use await in those functions. * This will help keep the server from drowning in too many messages if we ever add acknowledgements or if WebSocket backpressure ever becomes reality. * This might make tests less flaky because changes triggered by a message will complete before the Promise resolves.
This commit is contained in:
parent
23131a501c
commit
3c9ae57bb3
2 changed files with 23 additions and 18 deletions
|
@ -87,7 +87,7 @@ exports.setSocketIO = function(_socket) {
|
|||
|
||||
if (clientAuthorized) {
|
||||
// client is authorized, everything ok
|
||||
handleMessage(client, message);
|
||||
await handleMessage(client, message);
|
||||
} else {
|
||||
// try to authorize the client
|
||||
if (message.padId !== undefined && message.sessionID !== undefined && message.token !== undefined && message.password !== undefined) {
|
||||
|
@ -104,7 +104,7 @@ exports.setSocketIO = function(_socket) {
|
|||
if (accessStatus === "grant") {
|
||||
// access was granted, mark the client as authorized and handle the message
|
||||
clientAuthorized = true;
|
||||
handleMessage(client, message);
|
||||
await handleMessage(client, message);
|
||||
} else {
|
||||
// no access, send the client a message that tells him why
|
||||
messageLogger.warn("Authentication try failed:" + stringifyWithoutPassword(message));
|
||||
|
@ -127,13 +127,13 @@ exports.setSocketIO = function(_socket) {
|
|||
}
|
||||
|
||||
// try to handle the message of this client
|
||||
function handleMessage(client, message)
|
||||
async function handleMessage(client, message)
|
||||
{
|
||||
if (message.component && components[message.component]) {
|
||||
// check if component is registered in the components array
|
||||
if (components[message.component]) {
|
||||
messageLogger.debug("from " + client.id + ": " + stringifyWithoutPassword(message));
|
||||
components[message.component].handleMessage(client, message);
|
||||
await components[message.component].handleMessage(client, message);
|
||||
}
|
||||
} else {
|
||||
messageLogger.error("Can't route the message:" + stringifyWithoutPassword(message));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue