| 226 { |
226 { |
| 227 JabberIq *iq; |
227 JabberIq *iq; |
| 228 PurpleXmlNode *query; |
228 PurpleXmlNode *query; |
| 229 |
229 |
| 230 if(type == JABBER_IQ_GET) { |
230 if(type == JABBER_IQ_GET) { |
| 231 GHashTable *ui_info; |
231 PurpleUiInfo *ui_info; |
| 232 const char *ui_name = NULL, *ui_version = NULL; |
232 const char *ui_name = NULL, *ui_version = NULL; |
| 233 |
233 |
| 234 iq = jabber_iq_new_query(js, JABBER_IQ_RESULT, "jabber:iq:version"); |
234 iq = jabber_iq_new_query(js, JABBER_IQ_RESULT, "jabber:iq:version"); |
| 235 if (from) |
235 if (from) |
| 236 purple_xmlnode_set_attrib(iq->node, "to", from); |
236 purple_xmlnode_set_attrib(iq->node, "to", from); |
| 238 |
238 |
| 239 query = purple_xmlnode_get_child(iq->node, "query"); |
239 query = purple_xmlnode_get_child(iq->node, "query"); |
| 240 |
240 |
| 241 ui_info = purple_core_get_ui_info(); |
241 ui_info = purple_core_get_ui_info(); |
| 242 |
242 |
| 243 if(NULL != ui_info) { |
243 if(PURPLE_IS_UI_INFO(ui_info)) { |
| 244 ui_name = g_hash_table_lookup(ui_info, "name"); |
244 ui_name = purple_ui_info_get_name(ui_info); |
| 245 ui_version = g_hash_table_lookup(ui_info, "version"); |
245 ui_version = purple_ui_info_get_version(ui_info); |
| 246 } |
246 } |
| 247 |
247 |
| 248 if(NULL != ui_name && NULL != ui_version) { |
248 if(NULL != ui_name && NULL != ui_version) { |
| 249 char *version_complete = g_strdup_printf("%s (libpurple " VERSION ")", ui_version); |
249 char *version_complete = g_strdup_printf("%s (libpurple " VERSION ")", ui_version); |
| 250 purple_xmlnode_insert_data(purple_xmlnode_new_child(query, "name"), ui_name, -1); |
250 purple_xmlnode_insert_data(purple_xmlnode_new_child(query, "name"), ui_name, -1); |
| 254 purple_xmlnode_insert_data(purple_xmlnode_new_child(query, "name"), "libpurple", -1); |
254 purple_xmlnode_insert_data(purple_xmlnode_new_child(query, "name"), "libpurple", -1); |
| 255 purple_xmlnode_insert_data(purple_xmlnode_new_child(query, "version"), VERSION, -1); |
255 purple_xmlnode_insert_data(purple_xmlnode_new_child(query, "version"), VERSION, -1); |
| 256 } |
256 } |
| 257 |
257 |
| 258 jabber_iq_send(iq); |
258 jabber_iq_send(iq); |
| |
259 |
| |
260 if(PURPLE_IS_UI_INFO(ui_info)) { |
| |
261 g_object_unref(G_OBJECT(ui_info)); |
| |
262 } |
| 259 } |
263 } |
| 260 } |
264 } |
| 261 |
265 |
| 262 void jabber_iq_remove_callback_by_id(JabberStream *js, const char *id) |
266 void jabber_iq_remove_callback_by_id(JabberStream *js, const char *id) |
| 263 { |
267 { |