@@ -47,6 +47,9 @@ gossipOriginHops = 2
4747
4848backgroundPruneInterval : Int<Ms>
4949backgroundPruneInterval = 30000 -- 30 seconds
50+pollSleepInterval : Int<Ms>
51+pollSleepInterval = 500 -- 500ms between poll attempts
52+maxPollWaitAttempts = 60 -- 60 * 500ms = 30 second max long-poll
5053federationEnabled = federationSecret != ""
5154federationAuth = "Bearer " ++ federationSecret
5255federationUrl = \server -> federationScheme ++ server
@@ -815,15 +818,14 @@ pruneAndRetry = \t -> do
815818
816819pollOnce = \token cursor -> do
817820 t <- now
818− atomic do
819− sessions <- *sessions
820− let auth = authenticateSession sessions token t
821− case auth of
822− Unauthorized {} ->
823− yield (PollUnauthorized {})
824− Authorized {pubkey} -> do
825− seqCounter <- *seqCounter
826− let clampedCursor = clamp 0 (max seqCounter t) cursor
821+ sessions <- *sessions
822+ let auth = authenticateSession sessions token t
823+ case auth of
824+ Unauthorized {} -> yield (PollUnauthorized {})
825+ Authorized {pubkey} -> do
826+ seqCounter <- *seqCounter
827+ let clampedCursor = clamp 0 (max seqCounter t) cursor
828+ atomic do
827829 matchingMsgs <- do
828830 m <- *messages
829831 where m.toKey == pubkey && m.receivedAt >= t - messageMaxAge && m.receivedAt > clampedCursor