summary refs log tree commit diff
path: root/src/CallManager.cpp
diff options
context:
space:
mode:
authortrilene <trilene@runbox.com>2020-07-29 18:16:52 -0400
committertrilene <trilene@runbox.com>2020-07-29 18:16:52 -0400
commit97681ccf648e68d85aea39de22684ff52e9470c8 (patch)
tree858cc4385f6de87b0e021d4ee4f5bc6f654e95ba /src/CallManager.cpp
parentHandle ICE failure (diff)
downloadnheko-97681ccf648e68d85aea39de22684ff52e9470c8.tar.xz
Remove references to video calls
Diffstat (limited to 'src/CallManager.cpp')
-rw-r--r--src/CallManager.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/CallManager.cpp b/src/CallManager.cpp
index b57ef1bb..3ddcc227 100644
--- a/src/CallManager.cpp
+++ b/src/CallManager.cpp
@@ -1,3 +1,4 @@
+#include <cctype>
 #include <chrono>
 
 #include <QMediaPlaylist>
@@ -198,12 +199,24 @@ CallManager::handleEvent_(const mtx::events::collections::TimelineEvents &event)
 void
 CallManager::handleEvent(const RoomEvent<CallInvite> &callInviteEvent)
 {
-  nhlog::ui()->debug("WebRTC: call id: {} - incoming CallInvite from {}",
-      callInviteEvent.content.call_id, callInviteEvent.sender);
+  const char video[] = "m=video";
+  const std::string &sdp = callInviteEvent.content.sdp;
+  bool isVideo = std::search(sdp.cbegin(), sdp.cend(), std::cbegin(video), std::cend(video) - 1,
+    [](unsigned char c1, unsigned char c2) {return std::tolower(c1) == std::tolower(c2);})
+      != sdp.cend();
+
+  nhlog::ui()->debug(std::string("WebRTC: call id: {} - incoming ") + (isVideo ? "video" : "voice") +
+      " CallInvite from {}", callInviteEvent.content.call_id, callInviteEvent.sender);
 
   if (callInviteEvent.content.call_id.empty())
     return;
 
+  if (isVideo) {
+    emit newMessage(QString::fromStdString(callInviteEvent.room_id),
+        CallHangUp{callInviteEvent.content.call_id, 0, CallHangUp::Reason::InviteTimeOut});
+    return;
+  }
+
   auto roomInfo = cache::singleRoomInfo(callInviteEvent.room_id);
   if (onActiveCall() || roomInfo.member_count != 2) {
     emit newMessage(QString::fromStdString(callInviteEvent.room_id),