Per-JID cache of a peer's disco#info features — "does it advertise
urn:xmpp:http?", and any other feature a caller needs to check first
(absolute-form, a tunnel extension).
Two layers:
Passive XEP-0115: presence stanzas carrying map
JIDs to a ver; each distinct ver is resolved with ONE disco query and,
if the response's recomputed hash matches, the verdict is shared by
every JID announcing that ver.
Active fallback: a plain disco#info query per JID.
Errors and timeouts yield "unknown" — many deployments answer disco
poorly, so callers proceed optimistically on "unknown" and refuse only on
an explicit feature list lacking the namespace.
Per-JID cache of a peer's disco#info features — "does it advertise urn:xmpp:http?", and any other feature a caller needs to check first (absolute-form, a tunnel extension).
Two layers:
Errors and timeouts yield "unknown" — many deployments answer disco poorly, so callers proceed optimistically on "unknown" and refuse only on an explicit feature list lacking the namespace.