libpurple/protocols/jabber/jingle.c

branch
soc.2008.vv
changeset 23745
091a506a7018
parent 23737
91165a8fcbd9
child 23747
86aacf5be74e
--- a/libpurple/protocols/jabber/jingle.c	Fri Jun 27 18:44:49 2008 +0000
+++ b/libpurple/protocols/jabber/jingle.c	Fri Jun 27 21:39:56 2008 +0000
@@ -253,7 +253,9 @@
 	GList *contents = g_hash_table_get_values(sess->contents);
 	g_hash_table_remove(sess->js->sessions, sess->id);
 	g_free(sess->id);
-	g_object_unref(sess->media);
+
+	if (sess->media)
+		g_object_unref(sess->media);
 
 	for (; contents; contents = contents->next)
 		jabber_jingle_session_destroy_content(contents->data);
@@ -1187,10 +1189,13 @@
 
 		purple_debug_info("jingle", "Setting remote codecs on stream\n");
 
-		purple_media_set_remote_codecs(session->media,
-					       xmlnode_get_attrib(content, "name"),
-					       jabber_jingle_session_get_remote_jid(session),
-					       remote_codecs);
+		if (!purple_media_set_remote_codecs(session->media,
+						    xmlnode_get_attrib(content, "name"),
+						    jabber_jingle_session_get_remote_jid(session),
+						    remote_codecs)) {
+			purple_media_reject(jabber_jingle_session_get_media(session));
+			return;
+		}
 
 		codec_intersection = purple_media_get_negotiated_codecs(session->media,
 									xmlnode_get_attrib(content, "name"));

mercurial