Store capabilities against fulljid when unsupported hash

This commit is contained in:
James Booth
2014-11-27 01:08:02 +00:00
parent e263e00a85
commit 94bd9dbdfe
5 changed files with 152 additions and 51 deletions

View File

@@ -507,22 +507,26 @@ _handle_caps(char *jid, XMPPCaps *caps)
log_info("Hash %s supported", caps->hash);
if (caps->ver) {
if (caps_contains(caps->ver)) {
log_info("Capabilities cached: %s", caps->ver);
caps_map(jid, caps->ver);
log_info("Capabilities cache hit: %s, for %s.", caps->ver, jid);
caps_map_jid_to_ver(jid, caps->ver);
} else {
log_info("Capabilities not cached: %s, sending service discovery request", caps->ver);
log_info("Capabilities cache miss: %s, for %s, sending service discovery request", caps->ver, jid);
char *id = create_unique_id("caps");
iq_send_caps_request(jid, id, caps->node, caps->ver);
free(id);
}
}
// no hash, or not supported
// unsupported hash
} else if (caps->hash) {
log_info("Hash %s not supported, not sending service discovery request", caps->hash);
// send service discovery request, cache against from full jid
log_info("Hash %s not supported: %s, sending service discovery request", caps->hash, jid);
char *id = create_unique_id("caps");
iq_send_caps_request_for_jid(jid, id, caps->node, caps->ver);
free(id);
// no hash
} else {
log_info("No hash specified, not sending service discovery request");
log_info("No hash specified: %s, not sending service discovery request", jid);
// do legacy
}
}