diff --git a/src/ice_transport.cpp b/src/ice_transport.cpp
index 302afb1e6fae3b25901b50f365e8f39a782e09e7..d88a406d0d32ebf54a10dbe90163e9f5c84c8265 100644
--- a/src/ice_transport.cpp
+++ b/src/ice_transport.cpp
@@ -405,8 +405,13 @@ IceTransport::Impl::initIceInstance(const IceTransportOptions& options)
              compCount_,
              initiatorSession_ ? "master" : "slave");
 
-    if (upnpEnabled_)
-        upnp_ = std::make_shared<upnp::Controller>(options.upnpContext);
+    if (upnpEnabled_) {
+        if (options.upnpContext) {
+            upnp_ = std::make_shared<upnp::Controller>(options.upnpContext);
+        } else if (logger_) {
+            logger_->error("[ice:{}] UPnP enabled, but no context found", fmt::ptr(this));
+        }
+    }
 
     config_ = factory->getIceCfg(); // config copy
     if (isTcp_) {