comparison libpurple/protocols/jabber/iq.c @ 25718:4bc74deeb503

propagate from branch 'im.pidgin.pidgin' (head 434563a4b8fadb9593c241db4bb5ffd0bf2c0627) to branch 'im.pidgin.soc.2008.vv' (head 59d05cb38af9346d82ce57477273f7b381054bcc)
author Mike Ruprecht <maiku@soc.pidgin.im>
date Sat, 09 Aug 2008 02:24:38 +0000
parents 517062503b48
children bd598b606ca4 4d752d07a126
comparison
equal deleted inserted replaced
23742:de8f2d3e538a 25718:4bc74deeb503
26 26
27 #include "buddy.h" 27 #include "buddy.h"
28 #include "disco.h" 28 #include "disco.h"
29 #include "google.h" 29 #include "google.h"
30 #include "iq.h" 30 #include "iq.h"
31 #include "jingle.h"
31 #include "oob.h" 32 #include "oob.h"
32 #include "roster.h" 33 #include "roster.h"
33 #include "si.h" 34 #include "si.h"
34 #include "ping.h" 35 #include "ping.h"
35 #include "adhoccommands.h" 36 #include "adhoccommands.h"
311 JabberCallbackData *jcd; 312 JabberCallbackData *jcd;
312 xmlnode *query, *error, *x; 313 xmlnode *query, *error, *x;
313 const char *xmlns; 314 const char *xmlns;
314 const char *type, *id, *from; 315 const char *type, *id, *from;
315 JabberIqHandler *jih; 316 JabberIqHandler *jih;
316 317
317 query = xmlnode_get_child(packet, "query"); 318 query = xmlnode_get_child(packet, "query");
318 type = xmlnode_get_attrib(packet, "type"); 319 type = xmlnode_get_attrib(packet, "type");
319 from = xmlnode_get_attrib(packet, "from"); 320 from = xmlnode_get_attrib(packet, "from");
320 id = xmlnode_get_attrib(packet, "id"); 321 id = xmlnode_get_attrib(packet, "id");
321 322
335 if((jih = g_hash_table_lookup(iq_handlers, xmlns))) { 336 if((jih = g_hash_table_lookup(iq_handlers, xmlns))) {
336 jih(js, packet); 337 jih(js, packet);
337 return; 338 return;
338 } 339 }
339 } 340 }
341
342 if (xmlnode_get_child_with_namespace(packet, "session", "http://www.google.com/session")) {
343 jabber_google_session_parse(js, packet);
344 return;
345 }
340 346
341 if(xmlnode_get_child_with_namespace(packet, "si", "http://jabber.org/protocol/si")) { 347 if(xmlnode_get_child_with_namespace(packet, "si", "http://jabber.org/protocol/si")) {
342 jabber_si_parse(js, packet); 348 jabber_si_parse(js, packet);
343 return; 349 return;
344 } 350 }
346 if(xmlnode_get_child_with_namespace(packet, "new-mail", "google:mail:notify")) { 352 if(xmlnode_get_child_with_namespace(packet, "new-mail", "google:mail:notify")) {
347 jabber_gmail_poke(js, packet); 353 jabber_gmail_poke(js, packet);
348 return; 354 return;
349 } 355 }
350 356
351 purple_debug_info("jabber", "jabber_iq_parse\n");
352
353 if(xmlnode_get_child_with_namespace(packet, "ping", "urn:xmpp:ping")) { 357 if(xmlnode_get_child_with_namespace(packet, "ping", "urn:xmpp:ping")) {
354 jabber_ping_parse(js, packet); 358 jabber_ping_parse(js, packet);
355 return; 359 return;
356 } 360 }
361
362 #ifdef USE_VV
363 if (xmlnode_get_child_with_namespace(packet, "jingle", "urn:xmpp:tmp:jingle")) {
364 jabber_jingle_session_parse(js, packet);
365 return;
366 }
367 #endif
357 368
358 /* If we get here, send the default error reply mandated by XMPP-CORE */ 369 /* If we get here, send the default error reply mandated by XMPP-CORE */
359 if(type && (!strcmp(type, "set") || !strcmp(type, "get"))) { 370 if(type && (!strcmp(type, "set") || !strcmp(type, "get"))) {
360 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_ERROR); 371 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_ERROR);
361 372
392 jabber_iq_register_handler("jabber:iq:version", jabber_iq_version_parse); 403 jabber_iq_register_handler("jabber:iq:version", jabber_iq_version_parse);
393 jabber_iq_register_handler("http://jabber.org/protocol/disco#info", jabber_disco_info_parse); 404 jabber_iq_register_handler("http://jabber.org/protocol/disco#info", jabber_disco_info_parse);
394 jabber_iq_register_handler("http://jabber.org/protocol/disco#items", jabber_disco_items_parse); 405 jabber_iq_register_handler("http://jabber.org/protocol/disco#items", jabber_disco_items_parse);
395 jabber_iq_register_handler("jabber:iq:register", jabber_register_parse); 406 jabber_iq_register_handler("jabber:iq:register", jabber_register_parse);
396 jabber_iq_register_handler("urn:xmpp:ping", urn_xmpp_ping_parse); 407 jabber_iq_register_handler("urn:xmpp:ping", urn_xmpp_ping_parse);
408 #ifdef USE_VV
409 jabber_iq_register_handler("urn:xmpp:tmp:jingle", jabber_jingle_session_parse);
410 #endif
397 } 411 }
398 412
399 void jabber_iq_uninit(void) 413 void jabber_iq_uninit(void)
400 { 414 {
401 g_hash_table_destroy(iq_handlers); 415 g_hash_table_destroy(iq_handlers);