diff --git a/source/network/NetServer.cpp b/source/network/NetServer.cpp index f3753c2481..b3706530a6 100644 --- a/source/network/NetServer.cpp +++ b/source/network/NetServer.cpp @@ -242,7 +242,7 @@ void CNetServerWorker::SetupUPnP() int ret = 0; // Try a cached URL first - if (!rootDescURL.empty() && UPNP_GetIGDFromUrl(rootDescURL.c_str(), &urls, &data, internalIPAddress, sizeof(internalIPAddress))) + if (!rootDescURL.empty() && UPNP_GetIGDFromUrl(rootDescURL.c_str(), &urls, &data, internalIPAddress, sizeof(internalIPAddress)) && strlen(data.first.controlurl) != 0) { LOGMESSAGE("Net server: using cached IGD = %s", urls.controlURL); ret = 1; @@ -339,9 +339,9 @@ void CNetServerWorker::SetupUPnP() externalIPAddress, psPort, protocall, intClient, intPort, duration); // Cache root descriptor URL to try to avoid discovery next time. - g_ConfigDB.SetValueString(CFG_USER, "network.upnprootdescurl", urls.controlURL); - g_ConfigDB.WriteValueToFile(CFG_USER, "network.upnprootdescurl", urls.controlURL); - LOGMESSAGE("Net server: cached UPnP root descriptor URL as %s", urls.controlURL); + g_ConfigDB.SetValueString(CFG_USER, "network.upnprootdescurl", urls.rootdescURL); + g_ConfigDB.WriteValueToFile(CFG_USER, "network.upnprootdescurl", urls.rootdescURL); + LOGMESSAGE("Net server: cached UPnP root descriptor URL as %s", urls.rootdescURL); freeUPnP(); }