check original sender id

This commit is contained in:
otsmr 2026-04-22 19:47:43 +02:00
parent be35336a5d
commit 1371cf80cb
2 changed files with 25 additions and 0 deletions

View file

@ -14,6 +14,19 @@ Future<void> handleAdditionalDataMessage(
Log.info(
'Got a additional data message: ${message.senderMessageId} from $groupId',
);
// Prevent message overwrite: reject if a message with this ID already
// exists from a different sender.
final existing = await twonlyDB.messagesDao
.getMessageById(message.senderMessageId)
.getSingleOrNull();
if (existing != null && existing.senderId != fromUserId) {
Log.warn(
'$fromUserId tried to overwrite message from ${existing.senderId}. Dropping.',
);
return;
}
final msg = await twonlyDB.messagesDao.insertMessage(
MessagesCompanion(
messageId: Value(message.senderMessageId),

View file

@ -16,6 +16,18 @@ Future<void> handleTextMessage(
'Got a text message: ${textMessage.senderMessageId} from $groupId',
);
// Prevent message overwrite: reject if a message with this ID already
// exists from a different sender.
final existing = await twonlyDB.messagesDao
.getMessageById(textMessage.senderMessageId)
.getSingleOrNull();
if (existing != null && existing.senderId != fromUserId) {
Log.warn(
'$fromUserId tried to overwrite message from ${existing.senderId}. Dropping.',
);
return;
}
final message = await twonlyDB.messagesDao.insertMessage(
MessagesCompanion(
messageId: Value(textMessage.senderMessageId),