commit
15e46cb216
|
@ -943,8 +943,6 @@ struct UPNPUrls NetPlayServer::m_upnp_urls;
|
||||||
struct IGDdatas NetPlayServer::m_upnp_data;
|
struct IGDdatas NetPlayServer::m_upnp_data;
|
||||||
std::string NetPlayServer::m_upnp_ourip;
|
std::string NetPlayServer::m_upnp_ourip;
|
||||||
u16 NetPlayServer::m_upnp_mapped = 0;
|
u16 NetPlayServer::m_upnp_mapped = 0;
|
||||||
bool NetPlayServer::m_upnp_inited = false;
|
|
||||||
bool NetPlayServer::m_upnp_error = false;
|
|
||||||
std::thread NetPlayServer::m_upnp_thread;
|
std::thread NetPlayServer::m_upnp_thread;
|
||||||
|
|
||||||
// called from ---GUI--- thread
|
// called from ---GUI--- thread
|
||||||
|
@ -958,10 +956,7 @@ void NetPlayServer::TryPortmapping(u16 port)
|
||||||
// UPnP thread: try to map a port
|
// UPnP thread: try to map a port
|
||||||
void NetPlayServer::mapPortThread(const u16 port)
|
void NetPlayServer::mapPortThread(const u16 port)
|
||||||
{
|
{
|
||||||
if (!m_upnp_inited)
|
if (initUPnP() && UPnPMapPort(m_upnp_ourip, port))
|
||||||
initUPnP();
|
|
||||||
|
|
||||||
if (m_upnp_inited && UPnPMapPort(m_upnp_ourip, port))
|
|
||||||
{
|
{
|
||||||
NOTICE_LOG(NETPLAY, "Successfully mapped port %d to %s.", port, m_upnp_ourip.c_str());
|
NOTICE_LOG(NETPLAY, "Successfully mapped port %d to %s.", port, m_upnp_ourip.c_str());
|
||||||
return;
|
return;
|
||||||
|
@ -981,16 +976,19 @@ void NetPlayServer::unmapPortThread()
|
||||||
// discovers the IGD
|
// discovers the IGD
|
||||||
bool NetPlayServer::initUPnP()
|
bool NetPlayServer::initUPnP()
|
||||||
{
|
{
|
||||||
|
static bool s_inited = false;
|
||||||
|
static bool s_error = false;
|
||||||
|
|
||||||
std::vector<UPNPDev*> igds;
|
std::vector<UPNPDev*> igds;
|
||||||
int descXMLsize = 0, upnperror = 0;
|
int descXMLsize = 0, upnperror = 0;
|
||||||
char cIP[20];
|
char cIP[20];
|
||||||
|
|
||||||
// Don't init if already inited
|
// Don't init if already inited
|
||||||
if (m_upnp_inited)
|
if (s_inited)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// Don't init if it failed before
|
// Don't init if it failed before
|
||||||
if (m_upnp_error)
|
if (s_error)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
memset(&m_upnp_urls, 0, sizeof(UPNPUrls));
|
memset(&m_upnp_urls, 0, sizeof(UPNPUrls));
|
||||||
|
@ -1007,8 +1005,7 @@ bool NetPlayServer::initUPnP()
|
||||||
{
|
{
|
||||||
WARN_LOG(NETPLAY, "An error occurred trying to discover UPnP devices.");
|
WARN_LOG(NETPLAY, "An error occurred trying to discover UPnP devices.");
|
||||||
|
|
||||||
m_upnp_error = true;
|
s_error = true;
|
||||||
m_upnp_inited = false;
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1047,6 +1044,7 @@ bool NetPlayServer::initUPnP()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s_inited = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -136,8 +136,6 @@ private:
|
||||||
static struct IGDdatas m_upnp_data;
|
static struct IGDdatas m_upnp_data;
|
||||||
static std::string m_upnp_ourip;
|
static std::string m_upnp_ourip;
|
||||||
static u16 m_upnp_mapped;
|
static u16 m_upnp_mapped;
|
||||||
static bool m_upnp_inited;
|
|
||||||
static bool m_upnp_error;
|
|
||||||
static std::thread m_upnp_thread;
|
static std::thread m_upnp_thread;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue