From 8e05e6a21f0770e4e00fbf316568645bebaf41c0 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 31 Oct 2017 18:20:27 +0100 Subject: [PATCH] Fixed a crash with group chat rooms created when receiving a REFER, see comment for details and check it doesn't impact server --- coreapi/callbacks.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index 9897bea60..1ec25c68a 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -799,9 +799,12 @@ static void refer_received(SalOp *op, const SalAddress *refer_to){ } else { LinphoneChatRoom *cr = _linphone_client_group_chat_room_new(lc, addr.asString().c_str(), nullptr); L_GET_CPP_PTR_FROM_C_OBJECT(cr)->join(); - L_GET_PRIVATE(lc->cppCore)->insertChatRoom(L_GET_CPP_PTR_FROM_C_OBJECT(cr)); + /* The following causes a crash because chat room hasn't yet a peer address. + The above call to join() will create a CallSession which will call onConferenceCreated when it'll reach the Connected state. + onConferenceCreated will then call the following commented lines, no need for them here. */ + /*L_GET_PRIVATE(lc->cppCore)->insertChatRoom(L_GET_CPP_PTR_FROM_C_OBJECT(cr)); L_GET_PRIVATE_FROM_C_OBJECT(cr)->setState(LinphonePrivate::ChatRoom::State::Created); - L_GET_PRIVATE(lc->cppCore)->insertChatRoomWithDb(L_GET_CPP_PTR_FROM_C_OBJECT(cr)); + L_GET_PRIVATE(lc->cppCore)->insertChatRoomWithDb(L_GET_CPP_PTR_FROM_C_OBJECT(cr));*/ static_cast(op)->reply(SalReasonNone); return; }