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,