Mercurial > pidgin.yaz
comparison libpurple/protocols/jabber/google.c @ 28137:da33da2e1a1e
Fix a bunch of memory leaks reported by Josh Mueller. Refs #9822.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sun, 02 Aug 2009 05:04:41 +0000 |
parents | 7f1caec89081 |
children | 5ac0a83f0b21 76c0969e3ea7 |
comparison
equal
deleted
inserted
replaced
28136:c91832e94473 | 28137:da33da2e1a1e |
---|---|
428 g_free(params); | 428 g_free(params); |
429 | 429 |
430 return (session->media != NULL) ? TRUE : FALSE; | 430 return (session->media != NULL) ? TRUE : FALSE; |
431 } | 431 } |
432 | 432 |
433 static void | 433 static gboolean |
434 google_session_handle_initiate(JabberStream *js, GoogleSession *session, xmlnode *sess, const char *iq_id) | 434 google_session_handle_initiate(JabberStream *js, GoogleSession *session, xmlnode *sess, const char *iq_id) |
435 { | 435 { |
436 JabberIq *result; | 436 JabberIq *result; |
437 GList *codecs = NULL, *video_codecs = NULL; | 437 GList *codecs = NULL, *video_codecs = NULL; |
438 xmlnode *desc_element, *codec_element; | 438 xmlnode *desc_element, *codec_element; |
441 GParameter *params; | 441 GParameter *params; |
442 guint num_params; | 442 guint num_params; |
443 | 443 |
444 if (session->state != UNINIT) { | 444 if (session->state != UNINIT) { |
445 purple_debug_error("jabber", "Received initiate for active session.\n"); | 445 purple_debug_error("jabber", "Received initiate for active session.\n"); |
446 return; | 446 return FALSE; |
447 } | 447 } |
448 | 448 |
449 desc_element = xmlnode_get_child(sess, "description"); | 449 desc_element = xmlnode_get_child(sess, "description"); |
450 xmlns = xmlnode_get_namespace(desc_element); | 450 xmlns = xmlnode_get_namespace(desc_element); |
451 | 451 |
454 else if (purple_strequal(xmlns, NS_GOOGLE_VIDEO)) | 454 else if (purple_strequal(xmlns, NS_GOOGLE_VIDEO)) |
455 session->video = TRUE; | 455 session->video = TRUE; |
456 else { | 456 else { |
457 purple_debug_error("jabber", "Received initiate with " | 457 purple_debug_error("jabber", "Received initiate with " |
458 "invalid namespace %s.\n", xmlns); | 458 "invalid namespace %s.\n", xmlns); |
459 return; | 459 return FALSE; |
460 } | 460 } |
461 | 461 |
462 session->media = purple_media_manager_create_media( | 462 session->media = purple_media_manager_create_media( |
463 purple_media_manager_get(), | 463 purple_media_manager_get(), |
464 purple_connection_get_account(js->gc), | 464 purple_connection_get_account(js->gc), |
478 purple_media_error(session->media, "Error adding stream."); | 478 purple_media_error(session->media, "Error adding stream."); |
479 purple_media_stream_info(session->media, | 479 purple_media_stream_info(session->media, |
480 PURPLE_MEDIA_INFO_HANGUP, NULL, NULL, TRUE); | 480 PURPLE_MEDIA_INFO_HANGUP, NULL, NULL, TRUE); |
481 google_session_send_terminate(session); | 481 google_session_send_terminate(session); |
482 g_free(params); | 482 g_free(params); |
483 return; | 483 return FALSE; |
484 } | 484 } |
485 | 485 |
486 g_free(params); | 486 g_free(params); |
487 | 487 |
488 for (codec_element = xmlnode_get_child(desc_element, "payload-type"); | 488 for (codec_element = xmlnode_get_child(desc_element, "payload-type"); |
549 | 549 |
550 result = jabber_iq_new(js, JABBER_IQ_RESULT); | 550 result = jabber_iq_new(js, JABBER_IQ_RESULT); |
551 jabber_iq_set_id(result, iq_id); | 551 jabber_iq_set_id(result, iq_id); |
552 xmlnode_set_attrib(result->node, "to", session->remote_jid); | 552 xmlnode_set_attrib(result->node, "to", session->remote_jid); |
553 jabber_iq_send(result); | 553 jabber_iq_send(result); |
554 | |
555 return TRUE; | |
554 } | 556 } |
555 | 557 |
556 static void | 558 static void |
557 google_session_handle_candidates(JabberStream *js, GoogleSession *session, xmlnode *sess, const char *iq_id) | 559 google_session_handle_candidates(JabberStream *js, GoogleSession *session, xmlnode *sess, const char *iq_id) |
558 { | 560 { |
774 session->id.initiator = g_strdup(id.initiator); | 776 session->id.initiator = g_strdup(id.initiator); |
775 session->state = UNINIT; | 777 session->state = UNINIT; |
776 session->js = js; | 778 session->js = js; |
777 session->remote_jid = g_strdup(session->id.initiator); | 779 session->remote_jid = g_strdup(session->id.initiator); |
778 | 780 |
779 google_session_parse_iq(js, session, session_node, iq_id); | 781 if (!google_session_handle_initiate(js, session, session_node, iq_id)) |
782 google_session_destroy(session); | |
780 } | 783 } |
781 #endif /* USE_VV */ | 784 #endif /* USE_VV */ |
782 | 785 |
783 static void | 786 static void |
784 jabber_gmail_parse(JabberStream *js, const char *from, | 787 jabber_gmail_parse(JabberStream *js, const char *from, |