Skip to content

Commit 74d48a4

Browse files
committed
fix: discard WeekDataMessage with duplicate hash
1 parent 44d5f53 commit 74d48a4

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

source/ListSync.lua

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -198,15 +198,22 @@ end
198198
local function handleWeekDataMessage(message, sender, distribution, stateManager, listSync)
199199
if not listSync.authorizationHandler(sender) then
200200
listSync.logger:Warning("Dropping week data message from unauthorized sender %s", sender)
201-
else
202-
local count = 0
203-
for _, v in ipairs(message.entries) do
204-
local entry = stateManager:createLogEntryFromList(v)
205-
stateManager:queueRemoteEvent(entry)
206-
count = count + 1
207-
end
208-
listSync.logger:Info("Enqueued %d events for week %s from remote received from %s via %s", count, message.week, sender, distribution)
201+
return
209202
end
203+
204+
if (message.hash == weekHash(listSync, message.week)) then
205+
listSync.logger:Warning("Dropping week data message from sender %s, we have the same hash", sender)
206+
return
207+
end
208+
209+
local count = 0
210+
for _, v in ipairs(message.entries) do
211+
local entry = stateManager:createLogEntryFromList(v)
212+
stateManager:queueRemoteEvent(entry)
213+
count = count + 1
214+
end
215+
listSync.logger:Info("Enqueued %d events for week %s from remote received from %s via %s", count, message.week, sender, distribution)
216+
210217
end
211218

212219
local function handleBulkDataMessage(message, sender, distribution, stateManager, listSync)

0 commit comments

Comments
 (0)