diff --git a/include/upnp/mapping.h b/include/upnp/mapping.h
index f5ce95f4048932698db2a3d84b160e477867bb09..e92a654b33b373011c75be5a2bf852106760bde5 100644
--- a/include/upnp/mapping.h
+++ b/include/upnp/mapping.h
@@ -36,7 +36,7 @@ enum class MappingState { PENDING, IN_PROGRESS, FAILED, OPEN };
 enum class NatProtocolType;
 class IGD;
 
-class Mapping : std::enable_shared_from_this<Mapping>
+class Mapping
 {
     friend class UPnPContext;
     friend class NatPmp;
@@ -112,7 +112,6 @@ private:
     void setIgd(const std::shared_ptr<IGD>& igd);
     void setAvailable(bool val);
     void setState(const MappingState& state);
-    void updateState(const MappingState& state, bool notify = true);
     void updateDescription();
 #if HAVE_LIBNATPMP
     void setRenewalTime(sys_clock::time_point time);
diff --git a/src/upnp/protocol/mapping.cpp b/src/upnp/protocol/mapping.cpp
index 0bbcfb69e3b1a80abcb4e7fe692cb6a3a24b3b48..1222261e99cc4d7fdb5b636fb48d927213e795d5 100644
--- a/src/upnp/protocol/mapping.cpp
+++ b/src/upnp/protocol/mapping.cpp
@@ -96,20 +96,6 @@ Mapping::setState(const MappingState& state)
     state_ = state;
 }
 
-void
-Mapping::updateState(const MappingState& newState, bool notify)
-{
-    std::unique_lock<std::mutex> lock(mutex_);
-    if (newState == state_)
-        return;
-    state_ = newState;
-
-    if (notify && notifyCb_) {
-        lock.unlock();
-        notifyCb_(shared_from_this());
-    }
-}
-
 const char*
 Mapping::getStateStr() const
 {
diff --git a/src/upnp/upnp_context.cpp b/src/upnp/upnp_context.cpp
index 56fa607aa470cf3a2a0081453fc39fabeb340ee0..fb175d111443b73e7d45b62a621e9365d5e53129 100644
--- a/src/upnp/upnp_context.cpp
+++ b/src/upnp/upnp_context.cpp
@@ -847,7 +847,7 @@ UPnPContext::pruneMappingsWithInvalidIgds(const std::shared_ptr<IGD>& igd)
                  map->toString(),
                  igd->toString(),
                  igd->getProtocolName());
-        map->updateState(MappingState::FAILED);
+        updateMappingState(map, MappingState::FAILED);
         unregisterMapping(map);
     }
 }