From 28bde72cd1f11b4c58273db7c4abeaecadf3b403 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Wed, 19 Dec 2018 22:40:15 -0500
Subject: [PATCH] sipvoiplink: avoid deadlock in transaction callback

Change-Id: I2fddb42df950f84449c4246820bd45752e99d93e
---
 src/sip/sipvoiplink.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/sip/sipvoiplink.cpp b/src/sip/sipvoiplink.cpp
index 8832d7e8dc..1e4f3ed025 100644
--- a/src/sip/sipvoiplink.cpp
+++ b/src/sip/sipvoiplink.cpp
@@ -1118,9 +1118,12 @@ transaction_state_changed_cb(pjsip_inv_session* inv, pjsip_transaction* tsx, pjs
         onRequestInfo(inv, rdata, msg, *call);
     else if (methodName == "NOTIFY")
         onRequestNotify(inv, rdata, msg, *call);
-    else if (methodName == "MESSAGE")
+    else if (methodName == "MESSAGE") {
         if (msg->body)
-            call->onTextMessage(im::parseSipMessage(msg));
+            runOnMainThread([call, m = im::parseSipMessage(msg)]() mutable {
+                call->onTextMessage(std::move(m));
+            });
+    }
 }
 
 int SIPVoIPLink::getModId()
-- 
GitLab