# HG changeset patch # User Mike Ruprecht # Date 1212810225 0 # Node ID 6268758d029a7ba6e75c9d98c02cc23f9be0a97b # Parent b5a00ddb7077605c727f1a1d8b554069cf249e69 Send negotiated codecs in session-accept opposed to all local codecs. diff -r b5a00ddb7077 -r 6268758d029a libpurple/protocols/jabber/jingle.c --- a/libpurple/protocols/jabber/jingle.c Sat Jun 07 03:14:52 2008 +0000 +++ b/libpurple/protocols/jabber/jingle.c Sat Jun 07 03:43:45 2008 +0000 @@ -435,14 +435,9 @@ static void jabber_jingle_session_add_payload_types(const JingleSessionContent *jsc, - xmlnode *description) + xmlnode *description, + GList *codecs) { - JingleSession *session = jabber_jingle_session_content_get_session(jsc); - PurpleMedia *media = jabber_jingle_session_get_media(session); - /* should this be local_codecs or negotiated-codecs? */ - GList *codecs = purple_media_get_local_codecs(media, - jabber_jingle_session_content_get_name(jsc)); - for (; codecs ; codecs = codecs->next) { FsCodec *codec = (FsCodec*)codecs->data; char id[8], clockrate[10], channels[10]; @@ -457,7 +452,6 @@ xmlnode_set_attrib(payload, "clockrate", clockrate); xmlnode_set_attrib(payload, "channels", channels); } - fs_codec_list_destroy(codecs); } static xmlnode * @@ -680,17 +674,21 @@ for (; contents; contents = contents->next) { JingleSessionContent *jsc = contents->data; - const gchar *session_name = jabber_jingle_session_content_get_name(jsc); + const gchar *content_name = jabber_jingle_session_content_get_name(jsc); xmlnode *content = jabber_jingle_session_add_content(jsc, jingle); xmlnode *description = jabber_jingle_session_add_description(jsc, content); xmlnode *transport = jabber_jingle_session_add_transport(jsc, content); - if (jabber_jingle_session_content_is_type(jsc, JINGLE_RTP)) - jabber_jingle_session_add_payload_types(jsc, description); + if (jabber_jingle_session_content_is_type(jsc, JINGLE_RTP)) { + GList *codecs = purple_media_get_negotiated_codecs(media, + content_name); + jabber_jingle_session_add_payload_types(jsc, description, codecs); + fs_codec_list_destroy(codecs); + } if (jabber_jingle_session_content_is_transport_type(jsc, TRANSPORT_ICEUDP)) { jabber_jingle_session_add_candidate_iceudp(transport, - purple_media_get_local_candidate(media, session_name, + purple_media_get_local_candidate(media, content_name, remote_jid), - purple_media_get_remote_candidate(media, session_name, + purple_media_get_remote_candidate(media, content_name, remote_jid)); } } @@ -724,8 +722,14 @@ JingleSessionContent *jsc = contents->data; xmlnode *content = jabber_jingle_session_add_content(jsc, jingle); xmlnode *description = jabber_jingle_session_add_description(jsc, content); - if (jabber_jingle_session_content_is_type(jsc, JINGLE_RTP)) - jabber_jingle_session_add_payload_types(jsc, description); + if (jabber_jingle_session_content_is_type(jsc, JINGLE_RTP)) { + PurpleMedia *media = jabber_jingle_session_get_media(session); + const gchar *content_name = + jabber_jingle_session_content_get_name(jsc); + GList *codecs = purple_media_get_local_codecs(media, content_name); + jabber_jingle_session_add_payload_types(jsc, description, codecs); + fs_codec_list_destroy(codecs); + } jabber_jingle_session_add_transport(jsc, content); }