maiku.vv: b96d49fd: Properly free PurpleMedia when there's a...

maiku at soc.pidgin.im maiku at soc.pidgin.im
Thu Aug 28 05:15:40 EDT 2008


-----------------------------------------------------------------
Revision: b96d49fd610064cdc611a4e70497057429e44181
Ancestor: a72b858b073e92f0a1662db82ddea0b4b88e6aea
Author: maiku at soc.pidgin.im
Date: 2008-08-28T04:57:30
Branch: im.pidgin.maiku.vv
URL: http://d.pidgin.im/viewmtn/revision/info/b96d49fd610064cdc611a4e70497057429e44181

Modified files:
        libpurple/media.c libpurple/protocols/jabber/jingle.c

ChangeLog: 

Properly free PurpleMedia when there's an error creating an FsStream.

-------------- next part --------------
============================================================
--- libpurple/media.c	6def34bd0fa125078c131715492b6bd8194d724d
+++ libpurple/media.c	2bcf57927b7f6f3e44faad930d37fc95851dc301
@@ -1199,6 +1199,7 @@ purple_media_add_stream_internal(PurpleM
 					   err->message);
 			g_error_free(err);
 			g_object_unref(participant);
+			g_hash_table_remove(media->priv->participants, who);
 			purple_media_remove_session(media, session);
 			g_free(session);
 			return FALSE;
============================================================
--- libpurple/protocols/jabber/jingle.c	bbabfe18abb1eb0652ff5c151aa5d7165af01bce
+++ libpurple/protocols/jabber/jingle.c	8501eb4aeff8cd86bd131aa3933584219fddec7c
@@ -949,6 +949,8 @@ jabber_jingle_session_initiate_media_int
 		return FALSE;
 	}
 
+	jabber_jingle_session_set_media(session, media);
+
 	for (; contents; contents = g_list_delete_link(contents, contents)) {
 		JingleSessionContent *jsc = contents->data;
 		gboolean result = FALSE;
@@ -986,12 +988,11 @@ jabber_jingle_session_initiate_media_int
 
 		if (!result) {
 			purple_debug_error("jingle", "Couldn't create stream\n");
+			purple_media_hangup(media);
 			return FALSE;
 		}
 	}
 
-	jabber_jingle_session_set_media(session, media);
-
 	/* connect callbacks */
 	g_signal_connect_swapped(G_OBJECT(media), "accepted", 
 				 G_CALLBACK(jabber_jingle_session_send_session_accept), session);


More information about the Commits mailing list