Create port forwarding for correct port with UPnP

Up to know the UPnP logic ignored the port a user was hosting a game on
and always added a port forwarding for the default port UDP 20595. This
commit fixes that, so a port forwarding is added for the actual port a
game is hosted on.
This commit is contained in:
Dunedan 2025-02-20 21:48:00 +01:00
parent 75d343293f
commit fcd3fc2aa3
No known key found for this signature in database
GPG key ID: 885B16854284E0B2
2 changed files with 4 additions and 4 deletions

View file

@ -194,20 +194,20 @@ bool CNetServerWorker::SetupConnection(const u16 port)
#if CONFIG2_MINIUPNPC
// Launch the UPnP thread
m_UPnPThread = std::thread(Threading::HandleExceptions<SetupUPnP>::Wrapper);
m_UPnPThread = std::thread(Threading::HandleExceptions<SetupUPnP>::Wrapper, port);
#endif
return true;
}
#if CONFIG2_MINIUPNPC
void CNetServerWorker::SetupUPnP()
void CNetServerWorker::SetupUPnP(const u16 port)
{
debug_SetThreadName("UPnP");
// Values we want to set.
char psPort[6];
sprintf_s(psPort, ARRAY_SIZE(psPort), "%d", PS_DEFAULT_PORT);
sprintf_s(psPort, ARRAY_SIZE(psPort), "%d", port);
const char* leaseDuration = "0"; // Indefinite/permanent lease duration.
const char* description = "0AD Multiplayer";
const char* protocall = "UDP";

View file

@ -427,7 +427,7 @@ private:
/**
* Try to find a UPnP root on the network and setup port forwarding.
*/
static void SetupUPnP();
static void SetupUPnP(const u16 port);
std::thread m_UPnPThread;
#endif