Mercurial > pidgin.yaz
diff 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 |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/google.c Sun Aug 02 04:33:26 2009 +0000 +++ b/libpurple/protocols/jabber/google.c Sun Aug 02 05:04:41 2009 +0000 @@ -430,7 +430,7 @@ return (session->media != NULL) ? TRUE : FALSE; } -static void +static gboolean google_session_handle_initiate(JabberStream *js, GoogleSession *session, xmlnode *sess, const char *iq_id) { JabberIq *result; @@ -443,7 +443,7 @@ if (session->state != UNINIT) { purple_debug_error("jabber", "Received initiate for active session.\n"); - return; + return FALSE; } desc_element = xmlnode_get_child(sess, "description"); @@ -456,7 +456,7 @@ else { purple_debug_error("jabber", "Received initiate with " "invalid namespace %s.\n", xmlns); - return; + return FALSE; } session->media = purple_media_manager_create_media( @@ -480,7 +480,7 @@ PURPLE_MEDIA_INFO_HANGUP, NULL, NULL, TRUE); google_session_send_terminate(session); g_free(params); - return; + return FALSE; } g_free(params); @@ -551,6 +551,8 @@ jabber_iq_set_id(result, iq_id); xmlnode_set_attrib(result->node, "to", session->remote_jid); jabber_iq_send(result); + + return TRUE; } static void @@ -776,7 +778,8 @@ session->js = js; session->remote_jid = g_strdup(session->id.initiator); - google_session_parse_iq(js, session, session_node, iq_id); + if (!google_session_handle_initiate(js, session, session_node, iq_id)) + google_session_destroy(session); } #endif /* USE_VV */