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