on master help sign in
Simplify recordFailure and forkForwardsTo: extract prevCount, apply De Morgan's law
commit4651be0f5697a151de01a20c7e21d0a04c27b826 authoriko <mail@iko.soy> dateMon 11 May 2026, 15:04 (5 months ago) parent1ef8c13
1 file changed+5−5
server.knot+5−5
server.knot+5−5
@@ -382,10 +382,10 @@ recordFailure = \server -> do
382382 t <- now
383383 atomic (do
384384 failures <- *forwardFailures
385− let new = case findFirst failures (\f -> f.server == server) of
386− Just {value: f} -> {server, failedAt: t, failures: f.failures + 1}
387− _ -> {server, failedAt: t, failures: 1}
388− *forwardFailures = union (filter (\f -> f.server != server) failures) [new])
385+ let prevCount = case findFirst failures (\f -> f.server == server) of
386+ Just {value: f} -> f.failures
387+ _ -> 0
388+ *forwardFailures = union (filter (\f -> f.server != server) failures) [{server, failedAt: t, failures: prevCount + 1}])
389389
390390-- Drop the failure record for `server` (called after any successful peer call).
391391-- Single-success recovery — there is no half-open state.
@@ -744,7 +744,7 @@ forkForwardsTo = \to encryptedBlob servers -> forEach servers (\server -> do
744744 pres <- *presence
745745 let stillLocal = hasLocalPresence pres to t
746746 let othersPending = any (\x -> x.encryptedBlob == encryptedBlob) remaining
747− when (not stillLocal && not othersPending) (do
747+ when (not (stillLocal || othersPending)) (do
748748 msgs <- *messages
749749 *messages = filter (\m -> m.encryptedBlob != encryptedBlob) msgs))))
750750