diff --git a/src/network/C4Network2IO.cpp b/src/network/C4Network2IO.cpp index 8e06dda56..86aa54005 100644 --- a/src/network/C4Network2IO.cpp +++ b/src/network/C4Network2IO.cpp @@ -1298,8 +1298,17 @@ void C4Network2IO::OnPuncherConnect(C4NetIO::addr_t addr) // Add for local client C4Network2Client *pLocal = ::Network.Clients.GetLocal(); if (pLocal) + { pLocal->AddAddr(C4Network2Address(maybe_v4, P_UDP), true); + // If the outside port matches the inside port, there is no port translation and the + // TCP address will probably work as well. + if (addr.GetPort() == Config.Network.PortUDP && Config.Network.PortTCP > 0) + { + maybe_v4.SetPort(Config.Network.PortTCP); + pLocal->AddAddr(C4Network2Address(maybe_v4, P_TCP), true); + } // Do not ::Network.InvalidateReference(); yet, we're expecting an ID from the netpuncher + } } // *** C4Network2IOConnection