diff --git a/src/sip/sipcall.cpp b/src/sip/sipcall.cpp index dd4237829347e9e8769332a6fa6c330906a72232..ca6d8e0189bc838d6bca5e5e60f1bb84bd771ff0 100644 --- a/src/sip/sipcall.cpp +++ b/src/sip/sipcall.cpp @@ -701,6 +701,13 @@ SIPCall::onAnswered() } } +void +SIPCall::onPeerRinging() +{ + setConnectionState(Call::RINGING); + Manager::instance().peerRingingCall(*this); +} + void SIPCall::setupLocalSDPFromIce() { diff --git a/src/sip/sipcall.h b/src/sip/sipcall.h index 36b76db139ca1a139f138e1f4498b61d7d5b81fe..9c1801f3f8775b03cc17d4fadfd59019a0d44b39 100644 --- a/src/sip/sipcall.h +++ b/src/sip/sipcall.h @@ -171,6 +171,12 @@ class SIPCall : public Call void updateSDPFromSTUN(); + /** + * Tell the user that the call is ringing + * @param + */ + void onPeerRinging(); + /** * Tell the user that the call was answered * @param diff --git a/src/sip/sipvoiplink.cpp b/src/sip/sipvoiplink.cpp index 7a3cd733cc72c4b11ad5a8c56a2feeda64ce487c..e607e43d9351967425e46aa57500cce035c599f5 100644 --- a/src/sip/sipvoiplink.cpp +++ b/src/sip/sipvoiplink.cpp @@ -784,13 +784,6 @@ SIPVoIPLink::requestKeyframe(const std::string &callID) // Private functions /////////////////////////////////////////////////////////////////////////////// -static void -makeCallRing(SIPCall &call) -{ - call.setConnectionState(Call::RINGING); - Manager::instance().peerRingingCall(call); -} - static void invite_session_state_changed_cb(pjsip_inv_session *inv, pjsip_event *ev) { @@ -819,7 +812,7 @@ invite_session_state_changed_cb(pjsip_inv_session *inv, pjsip_event *ev) if (inv->state == PJSIP_INV_STATE_EARLY and ev and ev->body.tsx_state.tsx and ev->body.tsx_state.tsx->role == PJSIP_ROLE_UAC) { - makeCallRing(*call); + call->onPeerRinging(); } else if (inv->state == PJSIP_INV_STATE_CONFIRMED and ev) { // After we sent or received a ACK - The connection is established call->onAnswered(); @@ -1121,7 +1114,7 @@ transaction_state_changed_cb(pjsip_inv_session * inv, pjsip_transaction *tsx, return; } else if (msg.find("Ringing") != std::string::npos and call) { if (call) - makeCallRing(*call); + call->onPeerRinging(); else RING_WARN("Ringing state on non existing call"); sendOK(inv->dlg, r_data, tsx);