From 853f44269423bd4a4f65d95b2a5ca2c9ac4d5c02 Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Fri, 30 Mar 2018 16:54:23 +0200 Subject: [PATCH] fix NULL reason header & missed call when timeout --- src/conference/session/call-session.cpp | 5 +++-- src/sal/call-op.cpp | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/conference/session/call-session.cpp b/src/conference/session/call-session.cpp index a11a4ed1d..c2244a569 100644 --- a/src/conference/session/call-session.cpp +++ b/src/conference/session/call-session.cpp @@ -92,7 +92,8 @@ void CallSessionPrivate::setState (CallSession::State newState, const string &me case CallSession::State::Error: switch (linphone_error_info_get_reason(q->getErrorInfo())) { case LinphoneReasonDeclined: - log->status = LinphoneCallDeclined; + if(log->status == LinphoneCallSuccess) // Do not re-change the status of a call if it's already set + log->status = LinphoneCallDeclined; break; case LinphoneReasonNotAnswered: if (log->dir == LinphoneCallIncoming) @@ -470,7 +471,7 @@ void CallSessionPrivate::updatedByRemote () { if (deferUpdate || deferUpdateInternal) { if (state == CallSession::State::UpdatedByRemote && !deferUpdateInternal){ lInfo() << "CallSession [" << q << "]: UpdatedByRemoted was signaled but defered. LinphoneCore expects the application to call linphone_call_accept_update() later"; - } + } } else { if (state == CallSession::State::UpdatedByRemote) q->acceptUpdate(nullptr); diff --git a/src/sal/call-op.cpp b/src/sal/call-op.cpp index 238e6d255..ade2d214b 100644 --- a/src/sal/call-op.cpp +++ b/src/sal/call-op.cpp @@ -1037,7 +1037,7 @@ int SalCallOp::decline(SalReason reason, const char *redirection /*optional*/){ } belle_sip_header_reason_t *SalCallOp::make_reason_header( const SalErrorInfo *info){ - if (info != NULL){ + if (info && info->reason != SalReasonNone) { belle_sip_header_reason_t* reason = BELLE_SIP_HEADER_REASON(belle_sip_header_reason_new()); belle_sip_header_reason_set_text(reason, info->status_string); belle_sip_header_reason_set_protocol(reason,info->protocol); @@ -1123,12 +1123,12 @@ int SalCallOp::update(const char *subject, bool_t no_user_consent) { int SalCallOp::cancel_invite_with_info(const SalErrorInfo *info) { belle_sip_request_t* cancel; ms_message("Cancelling INVITE request from [%s] to [%s] ",get_from(), get_to()); - + if (this->pending_client_trans == NULL){ ms_warning("There is no transaction to cancel."); return -1; } - + cancel = belle_sip_client_transaction_create_cancel(this->pending_client_trans); if (cancel){ if (info != NULL){