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);