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(