diff libpurple/protocols/jabber/jingle/rtp.c @ 26514:0adf41b3de79

Add a resource selector when initiating media.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Sat, 04 Apr 2009 02:26:49 +0000
parents 2d332d327a0e
children 8399b545925c
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jingle/rtp.c	Fri Apr 03 19:29:53 2009 +0000
+++ b/libpurple/protocols/jabber/jingle/rtp.c	Sat Apr 04 02:26:49 2009 +0000
@@ -834,7 +834,7 @@
 	JabberBuddyResource *jbr;
 	const gchar *transport_type;
 	
-	gchar *jid = NULL, *me = NULL, *sid = NULL;
+	gchar *resource = NULL, *me = NULL, *sid = NULL;
 
 	/* construct JID to send to */
 	jb = jabber_buddy_find(js, who, FALSE);
@@ -842,7 +842,11 @@
 		purple_debug_error("jingle-rtp", "Could not find Jabber buddy\n");
 		return FALSE;
 	}
-	jbr = jabber_buddy_find_resource(jb, NULL);
+
+	resource = jabber_get_resource(who);
+	jbr = jabber_buddy_find_resource(jb, resource);
+	g_free(resource);
+
 	if (!jbr) {
 		purple_debug_error("jingle-rtp", "Could not find buddy's resource\n");
 	}
@@ -857,17 +861,11 @@
 		return FALSE;
 	}
 
-	if ((strchr(who, '/') == NULL) && jbr && (jbr->name != NULL)) {
-		jid = g_strdup_printf("%s/%s", who, jbr->name);
-	} else {
-		jid = g_strdup(who);
-	}
-	
 	/* set ourselves as initiator */
 	me = g_strdup_printf("%s@%s/%s", js->user->node, js->user->domain, js->user->resource);
 
 	sid = jabber_get_next_id(js);
-	session = jingle_session_create(js, sid, me, jid, TRUE);
+	session = jingle_session_create(js, sid, me, who, TRUE);
 	g_free(sid);
 
 
@@ -888,7 +886,6 @@
 		jingle_rtp_init_media(content);
 	}
 
-	g_free(jid);
 	g_free(me);
 
 	if (jingle_rtp_get_media(session) == NULL) {