on master help sign in
Simplify server.knot: remove hops parameter from sendBatchedGossip, clean up handleLogout token comparison
commit3c2e545302e153273fd97e1b2a8fbff4b2ed1a79 authoriko <mail@iko.soy> dateMon 27 Apr 2026, 20:36 (5 months ago) parent1bf17cc
1 file changed+9−9
server.knot+9−9
server.knot+9−9
@@ -884,14 +884,14 @@ cancelOne = \mid to ownerPred t -> atomic do
884884 when owns (do applyCancel msgs matches to mid t; yield {})
885885 yield owns
886886
887−sendBatchedGossip = \peers events hops -> forEach peers (\server -> do
887+sendBatchedGossip = \peers events -> forEach peers (\server -> do
888888 t <- now
889889 failures <- *forwardFailures
890890 when (shouldRetryServer server t failures) (do
891891 auth <- generateFederationAuth "gossip" t
892892 result <- fetch (federationUrl server) (RecvGossip {
893893 authorization: auth,
894− events: events, hopsRemaining: hops, fromServer: serverHostN,
894+ events: events, hopsRemaining: gossipOriginHops, fromServer: serverHostN,
895895 requestTimestamp: t, correlationId: "", protocolVersion: federationProtocolVersion})
896896 case result of
897897 Err _ -> recordFailure server
@@ -900,7 +900,7 @@ sendBatchedGossip = \peers events hops -> forEach peers (\server -> do
900900broadcastOfflineGossip = \t expiredLocal -> do
901901 presence <- *presence
902902 when (federationEnabled && count expiredLocal > 0)
903− (sendBatchedGossip (knownPeerServersFromPresence presence) (pluck expiredLocal (\p -> mkGossip (GossipOffline {}) p.pubkey t offlineGossipMinTtl)) gossipOriginHops)
903+ (sendBatchedGossip (knownPeerServersFromPresence presence) (pluck expiredLocal (\p -> mkGossip (GossipOffline {}) p.pubkey t offlineGossipMinTtl)))
904904
905905-- ============================================
906906-- Forward retries and acks
@@ -985,7 +985,7 @@ refreshLocalPresence = \t -> do
985985 set *presence = updated
986986 yield {refreshed: refreshed, peers: knownPeerServersFromPresence updated}
987987 when (count refreshState.refreshed > 0)
988− (fork (sendBatchedGossip refreshState.peers (pluck refreshState.refreshed (\p -> mkGossip (GossipOnline {}) p.pubkey t (clampTtl (sessionExpiry / 1000)))) gossipOriginHops))
988+ (fork (sendBatchedGossip refreshState.peers (pluck refreshState.refreshed (\p -> mkGossip (GossipOnline {}) p.pubkey t (clampTtl (sessionExpiry / 1000))))))
989989
990990-- ============================================
991991-- Handler: challenge / verify / revoke / logout
@@ -1039,7 +1039,7 @@ handleVerifyAuth = \pubkey challenge signature revokeOthers clientIp respond ->
10391039 if not result.valid then yield (respond {token: "", expiresAt: 0, error: "invalid"})
10401040 else do
10411041 when federationEnabled
1042− (fork (sendBatchedGossip result.peers [mkGossip (GossipOnline {}) pubkey t onlineGossipTtl] gossipOriginHops))
1042+ (fork (sendBatchedGossip result.peers [mkGossip (GossipOnline {}) pubkey t onlineGossipTtl]))
10431043 yield (respond {token: token, expiresAt: expiry, error: ""})
10441044
10451045handleRevoke = \targetToken authorization clientIp respond -> do
@@ -1054,12 +1054,12 @@ handleRevoke = \targetToken authorization clientIp respond -> do
10541054
10551055handleLogout = \authorization clientIp respond -> do
10561056 t <- now
1057− let myToken = extractToken authorization
1057+ let myToken = case extractToken authorization of Just {value: tk} -> tk; _ -> ""
10581058 removed <- atomic (withSessionAuth authorization t clientIp
10591059 (yield {ok: False {}, pubkey: "", peers: []})
10601060 (\pubkey -> do
10611061 ses <- *sessions
1062− set *sessions = removeWhere ses (\s -> Just {value: s.token} == myToken)
1062+ set *sessions = removeWhere ses (\s -> s.token == myToken)
10631063 after <- *sessions
10641064 peers <- if any after (\s -> s.pubkey == pubkey) then yield []
10651065 else do
@@ -1068,7 +1068,7 @@ handleLogout = \authorization clientIp respond -> do
10681068 yield (knownPeerServersFromPresence pres)
10691069 yield {ok: True {}, pubkey: pubkey, peers: peers}))
10701070 when (removed.ok && federationEnabled)
1071− (fork (sendBatchedGossip removed.peers [mkGossip (GossipOffline {}) removed.pubkey t offlineGossipMinTtl] gossipOriginHops))
1071+ (fork (sendBatchedGossip removed.peers [mkGossip (GossipOffline {}) removed.pubkey t offlineGossipMinTtl]))
10721072 yield (respond {ok: removed.ok, authorized: removed.ok})
10731073
10741074-- ============================================
@@ -1519,7 +1519,7 @@ handleDrain = \phase authorization respond -> withMaintAuth authorization
15191519 set *pollWakeup = t
15201520 yield {peers: knownPeerServersFromPresence pres, localKeys: filter pres isLocalLive}
15211521 when (effectivePhase == 2 && count drainResult.localKeys > 0 && federationEnabled)
1522− (fork (sendBatchedGossip drainResult.peers (pluck drainResult.localKeys (\p -> mkGossip (GossipOffline {}) p.pubkey t offlineGossipMinTtl)) gossipOriginHops))
1522+ (fork (sendBatchedGossip drainResult.peers (pluck drainResult.localKeys (\p -> mkGossip (GossipOffline {}) p.pubkey t offlineGossipMinTtl))))
15231523 yield (respond {ok: True {}, drained: count drainResult.localKeys, phase: effectivePhase}))
15241524
15251525handleUndrain = \authorization respond -> withMaintAuth authorization