From 79604de277751fab7c5de2e104da6e9b88f71b92 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 14 Sep 2017 09:23:09 +0200 Subject: [PATCH] Store the NAT policy in the media session, not in the call session. --- src/conference/session/call-session-p.h | 1 - src/conference/session/call-session.cpp | 8 -------- src/conference/session/media-session-p.h | 1 + src/conference/session/media-session.cpp | 8 ++++++++ 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/conference/session/call-session-p.h b/src/conference/session/call-session-p.h index 2c9ed1c79..857c33105 100644 --- a/src/conference/session/call-session-p.h +++ b/src/conference/session/call-session-p.h @@ -93,7 +93,6 @@ protected: LinphoneProxyConfig *destProxy = nullptr; LinphoneErrorInfo *ei = nullptr; LinphoneCallLog *log = nullptr; - LinphoneNatPolicy *natPolicy = nullptr; SalOp *op = nullptr; diff --git a/src/conference/session/call-session.cpp b/src/conference/session/call-session.cpp index b87892db8..aff406142 100644 --- a/src/conference/session/call-session.cpp +++ b/src/conference/session/call-session.cpp @@ -59,8 +59,6 @@ CallSessionPrivate::~CallSessionPrivate () { linphone_error_info_unref(ei); if (log) linphone_call_log_unref(log); - if (natPolicy) - linphone_nat_policy_unref(natPolicy); if (op) sal_op_release(op); } @@ -786,12 +784,6 @@ void CallSession::configure (LinphoneCallDir direction, LinphoneProxyConfig *cfg } d->log = linphone_call_log_new(direction, fromAddr, toAddr); - if (d->destProxy) - d->natPolicy = linphone_proxy_config_get_nat_policy(d->destProxy); - if (!d->natPolicy) - d->natPolicy = linphone_core_get_nat_policy(d->core); - linphone_nat_policy_ref(d->natPolicy); - if (op) { /* We already have an op for incoming calls */ d->op = op; diff --git a/src/conference/session/media-session-p.h b/src/conference/session/media-session-p.h index 2207fbdef..79286f99e 100644 --- a/src/conference/session/media-session-p.h +++ b/src/conference/session/media-session-p.h @@ -261,6 +261,7 @@ private: RtpProfile *textProfile = nullptr; int mainTextStreamIndex = LINPHONE_CALL_STATS_TEXT; + LinphoneNatPolicy *natPolicy = nullptr; StunClient *stunClient = nullptr; IceAgent *iceAgent = nullptr; diff --git a/src/conference/session/media-session.cpp b/src/conference/session/media-session.cpp index 6158379de..9c2f9c933 100644 --- a/src/conference/session/media-session.cpp +++ b/src/conference/session/media-session.cpp @@ -103,6 +103,8 @@ MediaSessionPrivate::~MediaSessionPrivate () { linphone_call_stats_unref(videoStats); if (textStats) linphone_call_stats_unref(textStats); + if (natPolicy) + linphone_nat_policy_unref(natPolicy); if (stunClient) delete stunClient; delete iceAgent; @@ -4087,6 +4089,12 @@ void MediaSession::configure (LinphoneCallDir direction, LinphoneProxyConfig *cf L_D(MediaSession); CallSession::configure (direction, cfg, op, from, to); + if (d->destProxy) + d->natPolicy = linphone_proxy_config_get_nat_policy(d->destProxy); + if (!d->natPolicy) + d->natPolicy = linphone_core_get_nat_policy(d->core); + linphone_nat_policy_ref(d->natPolicy); + if (direction == LinphoneCallOutgoing) { d->selectOutgoingIpVersion(); d->getLocalIp(to);