mirror of
https://github.com/jmcorgan/fips.git
synced 2026-07-30 19:46:15 +00:00
5987cbfb6940938b4df46d245ceba8167a0bb67f
Transit nodes cache destination coordinates when they forward SessionSetup messages (via try_warm_coord_cache). These coord_cache entries have a 5-minute TTL, after which they expire. Once expired, the transit node can no longer forward data packets for that destination — find_next_hop returns None and the node sends CoordsRequired errors back to the source. This creates a permanent routing failure for any multi-hop path after 5 minutes of the initial session establishment, even if traffic is actively flowing. The root cause was that find_next_hop used coord_cache.get(), a read-only lookup that checks expiry but never extends it. Active forwarding did not keep the cache warm. Meanwhile, get_and_touch() existed but only updated last_used without extending expires_at. Fix: - find_next_hop now calls coord_cache.get_and_touch() instead of get() - get_and_touch now calls entry.refresh() instead of entry.touch(), which extends expires_at by the default TTL on each access - find_next_hop signature changed from &self to &mut self to allow the mutable cache access This ensures that as long as traffic flows through a transit node, the coord_cache entries stay warm and routing continues to work. Entries still expire after 5 minutes of inactivity as designed.
FIPS Documentation
| Directory | Description |
|---|---|
| design/ | Protocol design specifications and analysis |
Languages
Rust
83.6%
Shell
11.7%
Python
4.2%
PowerShell
0.2%
Makefile
0.1%