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