aboutsummaryrefslogtreecommitdiff
path: root/libdino/src/service/call_peer_state.vala
diff options
context:
space:
mode:
Diffstat (limited to 'libdino/src/service/call_peer_state.vala')
-rw-r--r--libdino/src/service/call_peer_state.vala24
1 files changed, 23 insertions, 1 deletions
diff --git a/libdino/src/service/call_peer_state.vala b/libdino/src/service/call_peer_state.vala
index cf39eec4..c97aa48d 100644
--- a/libdino/src/service/call_peer_state.vala
+++ b/libdino/src/service/call_peer_state.vala
@@ -90,7 +90,10 @@ public class Dino.PeerState : Object {
}
stream.get_module(Xmpp.Xep.JingleMessageInitiation.Module.IDENTITY).send_session_propose_to_peer(stream, jid, sid, descriptions);
-// call_state.cim_call_id = stream.get_module(Xmpp.Xep.CallInvites.Module.IDENTITY).send_jingle_propose(stream, jid, sid, we_should_send_video);
+
+// Uncomment this use CIM instead of JMI
+// call_state.cim_call_id = sid;
+// stream.get_module(Xmpp.Xep.CallInvites.Module.IDENTITY).send_jingle_propose(stream, call_state.cim_call_id, jid, sid, we_should_send_video);
} else if (jid_for_direct != null) {
yield call_resource(jid_for_direct);
}
@@ -111,8 +114,27 @@ public class Dino.PeerState : Object {
}
public void accept() {
+ if (!call_state.accepted) {
+ critical("Tried to accept peer in unaccepted call?! Something's fishy. Abort.");
+ return;
+ }
+
if (session != null) {
foreach (Xep.Jingle.Content content in session.contents) {
+ Xep.JingleRtp.Parameters? rtp_content_parameter = content.content_params as Xep.JingleRtp.Parameters;
+ if (rtp_content_parameter != null && rtp_content_parameter.media == "video") {
+ // We didn't accept video but our peer wants to negotiate that content
+ if (!we_should_send_video && session.senders_include_us(content.senders)) {
+ if (session.senders_include_counterpart(content.senders)) {
+ // If our peer wants to send, let them
+ content.modify(session.we_initiated ? Xep.Jingle.Senders.RESPONDER : Xep.Jingle.Senders.INITIATOR);
+ } else {
+ // If only we're supposed to send, reject
+ content.reject();
+ continue;
+ }
+ }
+ }
content.accept();
}
} else {