mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-09 13:01:00 +00:00
CIMD client resolution swallowed every fetch failure as ssrf_blocked and /authorize logged a bare invalid event, so an unreachable metadata host was indistinguishable from a genuine SSRF block and the consent flow returned invalid_client with no diagnosable cause. Split the resolution failure into ssrf_blocked (a real private-host refusal) and fetch_failed (timeout / connect error), carrying the concrete SafeFetchError kind and cause as a short non-secret detail. Thread the resolution reason and detail into the authorize.invalid annotation behind a pinned meta shape, and cache a resolved CIMD document for up to 24h so the consent flow does not re-fetch on every hit.