// called from ---UPnP--- thread // Attempt to portforward! bool NetPlayServer::UPnPMapPort(const std::string& addr, const u16 port) { if (m_upnp_mapped > 0) UPnPUnmapPort(m_upnp_mapped); std::string port_str = StringFromFormat("%d", port); int result = UPNP_AddPortMapping(m_upnp_urls.controlURL, m_upnp_data.first.servicetype, port_str.c_str(), port_str.c_str(), addr.c_str(), (std::string("dolphin-emu TCP on ") + addr).c_str(), "TCP", nullptr, nullptr); if (result != 0) return false; m_upnp_mapped = port; return true; }
// called from ---UPnP--- thread // Attempt to portforward! bool NetPlayServer::UPnPMapPort(const std::string& addr, const u16 port) { char port_str[6] = { 0 }; int result; if (m_upnp_mapped > 0) UPnPUnmapPort(m_upnp_mapped); sprintf(port_str, "%d", port); result = UPNP_AddPortMapping(m_upnp_urls.controlURL, m_upnp_data.first.servicetype, port_str, port_str, addr.c_str(), (std::string("dolphin-emu TCP on ") + addr).c_str(), "TCP", NULL, NULL); if(result != 0) return false; m_upnp_mapped = port; return true; }
// UPnP thread: try to unmap a port void NetPlayServer::unmapPortThread() { if (m_upnp_mapped > 0) UPnPUnmapPort(m_upnp_mapped); }