From 753c819734c15870e19b153fee054742e5d215dd Mon Sep 17 00:00:00 2001
From: Adrien Beraud <adrien.beraud@savoirfairelinux.com>
Date: Thu, 17 Aug 2023 17:21:24 -0400
Subject: [PATCH] upnp: set context in ConnectionManager

Change-Id: I2fe4f7e2c48edb99154d07619a79dae3bff6b091
---
 include/upnp/upnp_control.h | 2 +-
 src/connectionmanager.cpp   | 1 +
 src/ice_transport.cpp       | 2 +-
 3 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/include/upnp/upnp_control.h b/include/upnp/upnp_control.h
index 7393616..6958539 100644
--- a/include/upnp/upnp_control.h
+++ b/include/upnp/upnp_control.h
@@ -31,7 +31,7 @@ namespace upnp {
 
 class UPnPContext;
 
-class Controller
+class Controller : std::enable_shared_from_this<Controller>
 {
 public:
     Controller(const std::shared_ptr<UPnPContext>& ctx);
diff --git a/src/connectionmanager.cpp b/src/connectionmanager.cpp
index dfe3fec..47e730f 100644
--- a/src/connectionmanager.cpp
+++ b/src/connectionmanager.cpp
@@ -1473,6 +1473,7 @@ ConnectionManager::Impl::getIceOptions() const noexcept
     IceTransportOptions opts;
     opts.factory = config_->factory;
     opts.upnpEnable = getUPnPActive();
+    opts.upnpContext = config_->upnpCtrl;
 
     if (config_->stunEnabled)
         opts.stunServers.emplace_back(StunServerInfo().setUri(config_->stunServer));
diff --git a/src/ice_transport.cpp b/src/ice_transport.cpp
index a31fdb3..d187d9a 100644
--- a/src/ice_transport.cpp
+++ b/src/ice_transport.cpp
@@ -415,7 +415,7 @@ IceTransport::Impl::initIceInstance(const IceTransportOptions& options)
              initiatorSession_ ? "master" : "slave");
 
     if (upnpEnabled_)
-        upnp_.reset(new upnp::Controller(options.upnpContext));
+        upnp_ = std::make_shared<upnp::Controller>(options.upnpContext);
 
     config_ = options.factory->getIceCfg(); // config copy
     if (isTcp_) {
-- 
GitLab