Mercurial > hg
changeset 690:3e965a1186c7
Implement IQ:version requests
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Thu, 09 Feb 2006 23:20:28 +0100 |
parents | 281aab5aef50 |
children | 3c0a0a993de8 |
files | mcabber/src/jab_iq.c mcabber/src/jab_priv.h |
diffstat | 2 files changed, 64 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mcabber/src/jab_iq.c Thu Feb 09 23:18:38 2006 +0100 +++ b/mcabber/src/jab_iq.c Thu Feb 09 23:20:28 2006 +0100 @@ -241,6 +241,69 @@ scr_ShowBuddyWindow(); } +void iqscallback_version(iqs *iqp, xmlnode xml_result) +{ + xmlnode ansqry; + char *p, *p_noutf8; + + // xml_result is null for timeouts and errors + if (!xml_result) return; + + ansqry = xmlnode_get_tag(xml_result, "query"); + if (!ansqry) { + scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:version result!"); + return; + } + // Display IQ result sender... + p = xmlnode_get_attrib(xml_result, "from"); + if (!p) { + scr_LogPrint(LPRINT_LOGNORM, "Invalid IQ:version result (no sender name)."); + return; + } + p_noutf8 = from_utf8(p); + if (p_noutf8) { + scr_LogPrint(LPRINT_LOGNORM, "IQ:version from <%s>", p_noutf8); + g_free(p_noutf8); + } + // Get result data... + p = xmlnode_get_tag_data(ansqry, "name"); + if (p) { + p_noutf8 = from_utf8(p); + if (p_noutf8) { + scr_LogPrint(LPRINT_LOGNORM, "Name: %s", p_noutf8); + g_free(p_noutf8); + } + } + p = xmlnode_get_tag_data(ansqry, "version"); + if (p) { + p_noutf8 = from_utf8(p); + if (p_noutf8) { + scr_LogPrint(LPRINT_LOGNORM, "Version: %s", p_noutf8); + g_free(p_noutf8); + } + } + p = xmlnode_get_tag_data(ansqry, "os"); + if (p) { + p_noutf8 = from_utf8(p); + if (p_noutf8) { + scr_LogPrint(LPRINT_LOGNORM, "OS: %s", p_noutf8); + g_free(p_noutf8); + } + } +} + +void request_version(const char *fulljid) +{ + iqs *iqn; + gchar *utf8_jid = to_utf8(fulljid); + + iqn = iqs_new(JPACKET__GET, NS_VERSION, "version", IQS_DEFAULT_TIMEOUT); + xmlnode_put_attrib(iqn->xmldata, "to", utf8_jid); + if (utf8_jid) g_free(utf8_jid); + iqn->callback = &iqscallback_version; + jab_send(jc, iqn->xmldata); +} + void iqscallback_auth(iqs *iqp, xmlnode xml_result) { if (jstate == STATE_GETAUTH) {
--- a/mcabber/src/jab_priv.h Thu Feb 09 23:18:38 2006 +0100 +++ b/mcabber/src/jab_priv.h Thu Feb 09 23:20:28 2006 +0100 @@ -45,6 +45,7 @@ int iqs_callback(const char *iqid, xmlnode xml_anwser); void iqs_check_timeout(void); void iqscallback_auth(iqs *iqp, xmlnode xml_result); +void request_version(const char *fulljid); #endif /* __JAB_PRIV_H__ */