diff --git a/src/ringdht/ringaccount.cpp b/src/ringdht/ringaccount.cpp
index cb53c7183f9ac652262f5f9fa6cf318ba6c13c94..3d902e48bfc7d5d836c11a4502180a229a39b7fb 100644
--- a/src/ringdht/ringaccount.cpp
+++ b/src/ringdht/ringaccount.cpp
@@ -589,7 +589,6 @@ RingAccount::onConnectedOutgoingCall(SIPCall& call, const std::string& to_id, Ip
     call.initRecFilename(to_id);
 
     const auto localAddress = ip_utils::getInterfaceAddr(getLocalInterface());
-    call.setCallMediaLocal(call.getIceMediaTransport()->getDefaultLocalAddress());
 
     IpAddr addrSdp;
     if (getUPnPActive()) {
diff --git a/src/sip/sipaccount.cpp b/src/sip/sipaccount.cpp
index 563aee3bf72c9de14dd8b41d652cc2ac69c7af44..79212382c12ab561db4ffdd678a317855e14c923 100644
--- a/src/sip/sipaccount.cpp
+++ b/src/sip/sipaccount.cpp
@@ -206,7 +206,6 @@ SIPAccount::newOutgoingCall(const std::string& toUrl)
     call->initRecFilename(to);
 
     const auto localAddress = ip_utils::getInterfaceAddr(getLocalInterface(), family);
-    call->setCallMediaLocal(localAddress);
 
     IpAddr addrSdp;
     if (getUPnPActive()) {
diff --git a/src/sip/sipcall.cpp b/src/sip/sipcall.cpp
index 4033bbd922786bb55bfdd2750bf20cbf284a469d..c3bc1199398213ee66cad5a4e3b19eb283dde63e 100644
--- a/src/sip/sipcall.cpp
+++ b/src/sip/sipcall.cpp
@@ -120,6 +120,8 @@ SIPCall::SIPCall(SIPAccountBase& account, const std::string& id, Call::CallType
 {
     if (account.getUPnPActive())
         upnp_.reset(new upnp::Controller());
+
+    setCallMediaLocal();
 }
 
 SIPCall::~SIPCall()
@@ -135,7 +137,7 @@ SIPCall::getSIPAccount() const
 }
 
 void
-SIPCall::setCallMediaLocal(const pj_sockaddr& localIP)
+SIPCall::setCallMediaLocal()
 {
     if (localAudioPort_ == 0
 #ifdef RING_VIDEO
diff --git a/src/sip/sipcall.h b/src/sip/sipcall.h
index cf86be96a834391eb0c3e1e462aef8af4f0a3ccd..232f6d34ad7ae5e27b4a56e15e954f332a16ac1c 100644
--- a/src/sip/sipcall.h
+++ b/src/sip/sipcall.h
@@ -197,8 +197,6 @@ public: // NOT SIP RELATED (good candidates to be moved elsewhere)
         return srtpEnabled_;
     }
 
-    void setCallMediaLocal(const pj_sockaddr& localIP);
-
     void generateMediaPorts();
 
     void startAllMedia();
@@ -222,6 +220,8 @@ public: // NOT SIP RELATED (good candidates to be moved elsewhere)
 private:
     NON_COPYABLE(SIPCall);
 
+    void setCallMediaLocal();
+
     void waitForIceAndStartMedia();
 
     void stopAllMedia();
diff --git a/src/sip/sipvoiplink.cpp b/src/sip/sipvoiplink.cpp
index 29adb5f427558fa1eeb1bacd21a5795f0ac74baa..ea7b205998b3839c3c8f76dee6c181547be227b0 100644
--- a/src/sip/sipvoiplink.cpp
+++ b/src/sip/sipvoiplink.cpp
@@ -326,7 +326,6 @@ transaction_request_cb(pjsip_rx_data *rdata)
     call->setPeerNumber(peerNumber);
     call->setPeerDisplayName(peerDisplayName);
     call->initRecFilename(peerNumber);
-    call->setCallMediaLocal(addrToUse);
     call->getSDP().setPublishedIP(addrSdp);
 
     if (account->isStunEnabled())
@@ -896,8 +895,6 @@ sdp_create_offer_cb(pjsip_inv_session *inv, pjmedia_sdp_session **p_offer)
     /* fallback on local address */
     if (not address) address = ifaceAddr;
 
-    call->setCallMediaLocal(address);
-
     auto& localSDP = call->getSDP();
     localSDP.setPublishedIP(address);
     const bool created = localSDP.createOffer(