diff --git a/source/glest_game/network/connection_slot.cpp b/source/glest_game/network/connection_slot.cpp index 2b2694ff3..c05a8489d 100644 --- a/source/glest_game/network/connection_slot.cpp +++ b/source/glest_game/network/connection_slot.cpp @@ -425,7 +425,7 @@ void ConnectionSlot::update(bool checkForNewClients) { SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); gotIntro = true; - this->serverInterface->addClientToServerIPAddress(this->getSocket()->getConnectedIPAddress(this->getSocket()->getIp()),this->connectedRemoteIPAddress); + this->serverInterface->addClientToServerIPAddress(this->getSocket()->getConnectedIPAddress(this->getSocket()->getIpAddress()),this->connectedRemoteIPAddress); if(getAllowGameDataSynchCheck() == true && serverInterface->getGameSettings() != NULL) { SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] sending NetworkMessageSynchNetworkGameData\n",__FILE__,__FUNCTION__,__LINE__); diff --git a/source/shared_lib/sources/feathery_ftp/ftpCmds.c b/source/shared_lib/sources/feathery_ftp/ftpCmds.c index 9f9750410..aceb5bd28 100755 --- a/source/shared_lib/sources/feathery_ftp/ftpCmds.c +++ b/source/shared_lib/sources/feathery_ftp/ftpCmds.c @@ -682,10 +682,19 @@ LOCAL int ftpCmdPasv(int sessionId, const char* args, int len) } ftpGetSession(sessionId)->passiveDataSocket = s; - if(ftpFindExternalFTPServerIp(ftpGetSession(sessionId)->remoteIp) > 0) +#if DBG_LOG + printf("In ftpCmdPasv sessionId = %d, client IP = %u, remote IP = %u, port = %d, ftpAddUPNPPortForward = %p, ftpRemoveUPNPPortForward = %p\n", + sessionId, ftpGetSession(sessionId)->remoteIp, ftpFindExternalFTPServerIp(ftpGetSession(sessionId)->remoteIp), port,ftpAddUPNPPortForward,ftpRemoveUPNPPortForward); +#endif + + if(ftpFindExternalFTPServerIp(ftpGetSession(sessionId)->remoteIp) != 0) { ftpGetSession(sessionId)->remoteFTPServerPassivePort = port; if(ftpAddUPNPPortForward) { +#if DBG_LOG + printf("In ftpCmdPasv sessionId = %d, adding UPNP port forward\n", sessionId); +#endif + ftpAddUPNPPortForward(port, port); } @@ -699,6 +708,11 @@ LOCAL int ftpCmdPasv(int sessionId, const char* args, int len) remoteFTPServerIp & 0xFF, (port >> 8) & 0xFF, port & 0xFF); + +#if DBG_LOG + printf("In ftpCmdPasv sessionId = %d, str [%s]\n", sessionId, str); +#endif + } else { diff --git a/source/shared_lib/sources/feathery_ftp/ftpSession.c b/source/shared_lib/sources/feathery_ftp/ftpSession.c index 2793682d0..5d4fb330a 100644 --- a/source/shared_lib/sources/feathery_ftp/ftpSession.c +++ b/source/shared_lib/sources/feathery_ftp/ftpSession.c @@ -119,10 +119,19 @@ int ftpAuthSession(int id) */ int ftpCloseSession(int id) { - if(ftpFindExternalFTPServerIp != NULL && ftpFindExternalFTPServerIp(sessions[id].remoteIp) > 0) +#if DBG_LOG + printf("In ftpCloseSession sessionId = %d, remote IP = %u, port = %d\n", + id, sessions[id].remoteIp, sessions[id].remoteFTPServerPassivePort); +#endif + + if(ftpFindExternalFTPServerIp != NULL && ftpFindExternalFTPServerIp(sessions[id].remoteIp) != 0) { if(ftpRemoveUPNPPortForward) { +#if DBG_LOG + printf("In ftpCmdPasv sessionId = %d, removing UPNP port forward [%d]\n", id,sessions[id].remoteFTPServerPassivePort); +#endif + ftpRemoveUPNPPortForward(sessions[id].remoteFTPServerPassivePort, sessions[id].remoteFTPServerPassivePort); } } diff --git a/source/shared_lib/sources/platform/posix/miniftpserver.cpp b/source/shared_lib/sources/platform/posix/miniftpserver.cpp index 0010ccffc..ee5ce85e7 100644 --- a/source/shared_lib/sources/platform/posix/miniftpserver.cpp +++ b/source/shared_lib/sources/platform/posix/miniftpserver.cpp @@ -29,7 +29,11 @@ namespace Shared { namespace PlatformCommon { static std::map clientToFTPServerList; uint32 FindExternalFTPServerIp(uint32 clientIp) { - return clientToFTPServerList[clientIp]; + uint32 result = clientToFTPServerList[clientIp]; + + if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("===> FTP Server thread clientIp = %u, result = %u\n",clientIp,result); + + return result; } FTPServerThread::FTPServerThread(std::pair mapsPath,int portNumber) : BaseThread() { @@ -61,6 +65,8 @@ bool FTPServerThread::shutdownAndWait() { void FTPServerThread::addClientToServerIPAddress(uint32 clientIp,uint32 ServerIp) { //ftpSetSessionRemoteServerIp(clientIp, ServerIp); clientToFTPServerList[clientIp] = ServerIp; + + if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("===> FTP Server thread clientIp = %u, ServerIp = %u\n",clientIp,ServerIp); } void FTPServerThread::execute() { diff --git a/source/shared_lib/sources/platform/posix/socket.cpp b/source/shared_lib/sources/platform/posix/socket.cpp index 82fcd5f4b..2a46c243d 100644 --- a/source/shared_lib/sources/platform/posix/socket.cpp +++ b/source/shared_lib/sources/platform/posix/socket.cpp @@ -1669,8 +1669,12 @@ ServerSocket::~ServerSocket() { SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); stopBroadCastThread(); - NETremRedirects(ServerSocket::externalPort); - NETremRedirects(ServerSocket::ftpServerPort); + if (ServerSocket::enabledUPNP) { + ServerSocket::enabledUPNP = false; + + NETremRedirects(ServerSocket::externalPort); + NETremRedirects(ServerSocket::ftpServerPort); + } SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); } @@ -2054,10 +2058,10 @@ void ServerSocket::NETaddRedirects(int ports[4]) { void ServerSocket::NETremRedirects(int ext_port) { SystemFlags::OutputDebug(SystemFlags::debugNetwork, "%s\n", __FUNCTION__); - if (ServerSocket::enabledUPNP) { - ServerSocket::enabledUPNP = false; - upnp_rem_redirect(ext_port); - } + //if (ServerSocket::enabledUPNP) { + //ServerSocket::enabledUPNP = false; + upnp_rem_redirect(ext_port); + //} } void ServerSocket::NETdiscoverUPnPDevices() {