Mercurial > pidgin
comparison libpurple/protocols/jabber/jingle.c @ 23872:1d9a2296d5d2
Stop additional media sessions within a single conversation for grouped contacts.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Fri, 15 Aug 2008 04:07:00 +0000 |
parents | b5ba1ab6ebdc |
children | 64080c01ee50 |
comparison
equal
deleted
inserted
replaced
23871:b5ba1ab6ebdc | 23872:1d9a2296d5d2 |
---|---|
934 GList *contents = jabber_jingle_session_get_contents(session); | 934 GList *contents = jabber_jingle_session_get_contents(session); |
935 | 935 |
936 media = purple_media_manager_create_media(purple_media_manager_get(), | 936 media = purple_media_manager_create_media(purple_media_manager_get(), |
937 session->js->gc, "fsrtpconference", remote_jid); | 937 session->js->gc, "fsrtpconference", remote_jid); |
938 | 938 |
939 jabber_jingle_session_set_remote_jid(session, remote_jid); | |
940 jabber_jingle_session_set_initiator(session, initiator); | |
941 | |
939 if (!media) { | 942 if (!media) { |
940 purple_debug_error("jingle", "Couldn't create fsrtpconference\n"); | 943 purple_debug_error("jingle", "Couldn't create media session\n"); |
941 return FALSE; | 944 return FALSE; |
942 } | 945 } |
943 | 946 |
944 for (; contents; contents = g_list_delete_link(contents, contents)) { | 947 for (; contents; contents = g_list_delete_link(contents, contents)) { |
945 JingleSessionContent *jsc = contents->data; | 948 JingleSessionContent *jsc = contents->data; |
957 purple_debug_info("jingle", "Created Jingle video session\n"); | 960 purple_debug_info("jingle", "Created Jingle video session\n"); |
958 } | 961 } |
959 | 962 |
960 if (!result) { | 963 if (!result) { |
961 purple_debug_error("jingle", "Couldn't create stream\n"); | 964 purple_debug_error("jingle", "Couldn't create stream\n"); |
962 purple_media_reject(media); | |
963 return FALSE; | 965 return FALSE; |
964 } | 966 } |
965 } | 967 } |
966 | 968 |
967 jabber_jingle_session_set_remote_jid(session, remote_jid); | |
968 jabber_jingle_session_set_initiator(session, initiator); | |
969 jabber_jingle_session_set_media(session, media); | 969 jabber_jingle_session_set_media(session, media); |
970 | 970 |
971 /* connect callbacks */ | 971 /* connect callbacks */ |
972 g_signal_connect_swapped(G_OBJECT(media), "accepted", | 972 g_signal_connect_swapped(G_OBJECT(media), "accepted", |
973 G_CALLBACK(jabber_jingle_session_send_session_accept), session); | 973 G_CALLBACK(jabber_jingle_session_send_session_accept), session); |
1282 jabber_jingle_session_content_create_parse(session, content); | 1282 jabber_jingle_session_content_create_parse(session, content); |
1283 } | 1283 } |
1284 | 1284 |
1285 if (!jabber_jingle_session_initiate_media_internal(session, initiator, initiator)) { | 1285 if (!jabber_jingle_session_initiate_media_internal(session, initiator, initiator)) { |
1286 purple_debug_error("jingle", "Couldn't start media session with %s\n", initiator); | 1286 purple_debug_error("jingle", "Couldn't start media session with %s\n", initiator); |
1287 jabber_jingle_session_destroy(session); | 1287 jabber_jingle_session_send_session_reject(session); |
1288 /* we should create an error iq here */ | |
1289 return; | 1288 return; |
1290 } | 1289 } |
1291 | 1290 |
1292 for (content = xmlnode_get_child(jingle, "content"); content; | 1291 for (content = xmlnode_get_child(jingle, "content"); content; |
1293 content = xmlnode_get_next_twin(content)) { | 1292 content = xmlnode_get_next_twin(content)) { |