diff --git a/src/sipmanager.cpp b/src/sipmanager.cpp index 33db295664194a3efa0576c53bcdbc48c6311df9..e5c29a94989e7256bc4c826f6855f6c0e0d49527 100755 --- a/src/sipmanager.cpp +++ b/src/sipmanager.cpp @@ -960,6 +960,18 @@ void SIPManager::call_on_tsx_changed(pjsip_inv_session *inv, pjsip_transaction * link = dynamic_cast<SIPVoIPLink *> (Manager::instance().getAccountLink(accId)); if (link) link->SIPCallAnswered(call, rdata); + } else if (tsx->status_code / 100 == 5) { + _debug("SIPManager: 5xx error message received\n"); + call = reinterpret_cast<SIPCall *> (inv->mod_data[getInstance()->getModId()]); + if (call == NULL) { + _debug("SIPManager: Call has been removed!\n"); + return; + } + accId = Manager::instance().getAccountFromCall(call->getCallId()); + link = dynamic_cast<SIPVoIPLink *> (Manager::instance().getAccountLink(accId)); + if (link) { + link->SIPCallServerFailure(call); + } } break; case PJSIP_TSX_STATE_PROCEEDING: