diff --git a/modules/services_discovery/upnp-wrapper.hpp b/modules/services_discovery/upnp-wrapper.hpp
index 8eb062a052ed1444f468d0accf88fa14e2fc4fd7..a2a9fb0f4d28a24f5bc9d67baa13fd9eabc68727 100644
--- a/modules/services_discovery/upnp-wrapper.hpp
+++ b/modules/services_discovery/upnp-wrapper.hpp
@@ -135,9 +135,10 @@ inline bool isAdapterSuitable(IP_ADAPTER_ADDRESSES* p_adapter)
     if (p_adapter->Length == sizeof(IP_ADAPTER_ADDRESSES_XP))
     {
         IP_ADAPTER_ADDRESSES_XP* p_adapter_xp = reinterpret_cast<IP_ADAPTER_ADDRESSES_XP*>( p_adapter );
-        // On Windows Server 2003 and Windows XP, this member is zero if IPv4 is not available on the interface.
+        // On Windows Server 2003 and Windows XP, those members are zero if the IPv* implementation
+        // is not available on the interface.
 #if defined( UPNP_ENABLE_IPV6 )
-        return p_adapter_xp->Ipv6IfIndex != 0;
+        return p_adapter_xp->Ipv6IfIndex != 0 || p_adapter_xp->IfIndex != 0;
 #else
         return p_adapter_xp->IfIndex != 0;
 #endif
@@ -146,7 +147,7 @@ inline bool isAdapterSuitable(IP_ADAPTER_ADDRESSES* p_adapter)
     if (p_adapter_lh->FirstGatewayAddress == NULL)
         return false;
 #if defined( UPNP_ENABLE_IPV6 )
-    return p_adapter_lh->Ipv6Enabled;
+    return p_adapter_lh->Ipv6Enabled || p_adapter_lh->Ipv4Enabled;
 #else
     return p_adapter_lh->Ipv4Enabled;
 #endif