|
|
|
@ -334,7 +334,8 @@ const storeMessage = function (Env, channel, msg, isCp, optionalMessageHash, cb)
|
|
|
|
|
if (err) {
|
|
|
|
|
Log.warn("HK_STORE_MESSAGE_INDEX", err.stack);
|
|
|
|
|
// non-critical, we'll be able to get the channel index later
|
|
|
|
|
// XXX cb with no error so that the message is broadcast
|
|
|
|
|
// cb with no error so that the message is broadcast
|
|
|
|
|
cb();
|
|
|
|
|
return void next();
|
|
|
|
|
}
|
|
|
|
|
if (typeof (index.line) === "number") { index.line++; }
|
|
|
|
@ -873,7 +874,7 @@ HK.onChannelMessage = function (Env, Server, channel, msgStruct, cb) {
|
|
|
|
|
// we should probably just change this to expect a channel id directly
|
|
|
|
|
|
|
|
|
|
// don't store messages if the channel id indicates that it's an ephemeral message
|
|
|
|
|
if (!channel.id || channel.id.length === EPHEMERAL_CHANNEL_LENGTH) { return; } // XXX cb no error to broadcast
|
|
|
|
|
if (!channel.id || channel.id.length === EPHEMERAL_CHANNEL_LENGTH) { return void cb(); }
|
|
|
|
|
|
|
|
|
|
const isCp = /^cp\|/.test(msgStruct[4]);
|
|
|
|
|
let id;
|
|
|
|
@ -885,7 +886,7 @@ HK.onChannelMessage = function (Env, Server, channel, msgStruct, cb) {
|
|
|
|
|
// more straightforward and reliable.
|
|
|
|
|
if (Array.isArray(id) && id[2] && id[2] === channel.lastSavedCp) {
|
|
|
|
|
// Reject duplicate checkpoints
|
|
|
|
|
return; // XXX cb with error?
|
|
|
|
|
return void cb('DUPLICATE');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -898,7 +899,10 @@ HK.onChannelMessage = function (Env, Server, channel, msgStruct, cb) {
|
|
|
|
|
metadata = _metadata;
|
|
|
|
|
|
|
|
|
|
// don't write messages to expired channels
|
|
|
|
|
if (checkExpired(Env, Server, channel)) { return void w.abort(); } // XXX cb with error
|
|
|
|
|
if (checkExpired(Env, Server, channel)) {
|
|
|
|
|
cb('EEXPIRED');
|
|
|
|
|
return void w.abort();
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
}).nThen(function (w) {
|
|
|
|
|
// if there's no validateKey present skip to the next block
|
|
|
|
@ -927,7 +931,8 @@ HK.onChannelMessage = function (Env, Server, channel, msgStruct, cb) {
|
|
|
|
|
Log.info("HK_SIGNED_MESSAGE_REJECTED", 'Channel '+channel.id);
|
|
|
|
|
}
|
|
|
|
|
// always abort if there was an error...
|
|
|
|
|
return void w.abort(); // XXX cb failed validation
|
|
|
|
|
cb('FAILED_VALIDATION);
|
|
|
|
|
return void w.abort();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}).nThen(function () {
|
|
|
|
|