From 32771d990bf0dafdcc281bf3f2db66f2621fe786 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Sat, 22 Feb 2020 23:33:36 -0500 Subject: [PATCH] jamiaccount: filter uri for signal Change-Id: I5057a9a33bd547a7a4e5e9e7ab65afd152193819 --- src/jamidht/jamiaccount.cpp | 11 +++++++++++ src/jamidht/jamiaccount.h | 4 +++- src/sip/sipaccountbase.cpp | 2 +- src/sip/sipaccountbase.h | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp index 074eeada75..887dece4cf 100644 --- a/src/jamidht/jamiaccount.cpp +++ b/src/jamidht/jamiaccount.cpp @@ -2013,6 +2013,17 @@ JamiAccount::doRegister_() } } +void +JamiAccount::onTextMessage(const std::string& from, + const std::map<std::string, std::string>& payloads) +{ + try { + const std::string fromUri = parseJamiUri(from); + SIPAccountBase::onTextMessage(fromUri, payloads); + } catch (...) { + } +} + void JamiAccount::incomingCall(dht::IceCandidates&& msg, const std::shared_ptr<dht::crypto::Certificate>& from_cert, const dht::InfoHash& from) { diff --git a/src/jamidht/jamiaccount.h b/src/jamidht/jamiaccount.h index 60ff268281..83287bfa32 100644 --- a/src/jamidht/jamiaccount.h +++ b/src/jamidht/jamiaccount.h @@ -268,9 +268,11 @@ public: * The type of this instance is given in template argument. * This type can be any base class of SIPCall class (included). */ - virtual std::shared_ptr<SIPCall> + std::shared_ptr<SIPCall> newIncomingCall(const std::string& from, const std::map<std::string, std::string>& details = {}, const std::shared_ptr<SipTransport>& sipTr = nullptr) override; + void onTextMessage(const std::string& from, const std::map<std::string, std::string>& payloads) override; + virtual bool isTlsEnabled() const override { return true; } diff --git a/src/sip/sipaccountbase.cpp b/src/sip/sipaccountbase.cpp index b5cd863e37..9b9bf86678 100644 --- a/src/sip/sipaccountbase.cpp +++ b/src/sip/sipaccountbase.cpp @@ -420,7 +420,7 @@ SIPAccountBase::onTextMessage(const std::string& from, message.payloads = payloads; message.received = std::time(nullptr); std::lock_guard<std::mutex> lck(mutexLastMessages_); - lastMessages_.emplace_back(message); + lastMessages_.emplace_back(std::move(message)); while (lastMessages_.size() > MAX_WAITING_MESSAGES_SIZE) { lastMessages_.pop_front(); } diff --git a/src/sip/sipaccountbase.h b/src/sip/sipaccountbase.h index aebe3ac5fb..1ea26cca06 100644 --- a/src/sip/sipaccountbase.h +++ b/src/sip/sipaccountbase.h @@ -275,7 +275,7 @@ public: return messageEngine_.cancel(id); } - void onTextMessage(const std::string& from, const std::map<std::string, std::string>& payloads); + virtual void onTextMessage(const std::string& from, const std::map<std::string, std::string>& payloads); /* Returns true if the username and/or hostname match this account */ virtual MatchRank matches(const std::string &username, const std::string &hostname) const = 0; -- GitLab