- bugfixes when user has no internet and published not turned on, do not try to do UPNP.
This commit is contained in:
parent
58faecb5d5
commit
9026ce161d
|
@ -4214,9 +4214,13 @@ void MenuStateCustomGame::updateNetworkSlots() {
|
||||||
|
|
||||||
if(hasNetworkGameSettings() == true) {
|
if(hasNetworkGameSettings() == true) {
|
||||||
if(hasCheckedForUPNP == false) {
|
if(hasCheckedForUPNP == false) {
|
||||||
hasCheckedForUPNP = true;
|
|
||||||
|
|
||||||
serverInterface->getServerSocket()->NETdiscoverUPnPDevices();
|
if(checkBoxPublishServer.getValue() == true ||
|
||||||
|
this->headlessServerMode == true) {
|
||||||
|
|
||||||
|
hasCheckedForUPNP = true;
|
||||||
|
serverInterface->getServerSocket()->NETdiscoverUPnPDevices();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -53,7 +53,7 @@ const int MAX_CLIENT_PAUSE_FOR_LAG_COUNT = 3;
|
||||||
const int MAX_SLOT_THREAD_WAIT_TIME_MILLISECONDS = 1500;
|
const int MAX_SLOT_THREAD_WAIT_TIME_MILLISECONDS = 1500;
|
||||||
const int MASTERSERVER_HEARTBEAT_GAME_STATUS_SECONDS = 30;
|
const int MASTERSERVER_HEARTBEAT_GAME_STATUS_SECONDS = 30;
|
||||||
|
|
||||||
const int maxNetworkCommandListSendTimeWaitWhenAutoPaused = 4000;
|
const int MAX_EMPTY_NETWORK_COMMAND_LIST_BROADCAST_INTERVAL_MILLISECONDS = 4000;
|
||||||
|
|
||||||
ServerInterface::ServerInterface(bool publishEnabled, ClientLagCallbackInterface *clientLagCallbackInterface) : GameNetworkInterface() {
|
ServerInterface::ServerInterface(bool publishEnabled, ClientLagCallbackInterface *clientLagCallbackInterface) : GameNetworkInterface() {
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
|
||||||
|
@ -1675,16 +1675,45 @@ void ServerInterface::updateKeyframe(int frameCount) {
|
||||||
sendTextMessage(sMsg,-1, true,"");
|
sendTextMessage(sMsg,-1, true,"");
|
||||||
}
|
}
|
||||||
|
|
||||||
//broadcast commands
|
// broadcast commands
|
||||||
|
// If we have more than 0 commands to send, automatically broadcast them
|
||||||
|
bool sendBroadcastMessage = (networkMessageCommandList.getCommandCount() > 0);
|
||||||
|
if(sendBroadcastMessage == false) {
|
||||||
|
|
||||||
// Only send empty command list broadcasts when not paused
|
// Is auto pause due to lag NOT enabled
|
||||||
// or auto paused due to lag AND then only every X milliseconds
|
if(this->getClientsAutoPausedDueToLag() == false) {
|
||||||
// where x = maxNetworkCommandListSendTimeWaitWhenAutoPaused
|
|
||||||
if(this->getClientsAutoPausedDueToLag() == false ||
|
// ****NOTE:
|
||||||
(this->getClientsAutoPausedDueToLag() == true &&
|
// We always need to broadcast when not pause as clients
|
||||||
(networkMessageCommandList.getCommandCount() > 0 ||
|
// look for broadcasts every network frame.
|
||||||
lastBroadcastCommandsTimer.isStarted() == false ||
|
sendBroadcastMessage = true;
|
||||||
lastBroadcastCommandsTimer.getMillis() >= maxNetworkCommandListSendTimeWaitWhenAutoPaused))) {
|
|
||||||
|
// If network CRC checking enabled we turn on broadcasting always
|
||||||
|
// bool calculateNetworkCRC = false;
|
||||||
|
// if(isFlagType1BitEnabled(this->gameSettings.getFlagTypes1(),ft1_network_synch_checks) == true ||
|
||||||
|
// isFlagType1BitEnabled(this->gameSettings.getFlagTypes1(),ft1_network_synch_checks_verbose) == true) {
|
||||||
|
//
|
||||||
|
// calculateNetworkCRC = true;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if(calculateNetworkCRC == true ||
|
||||||
|
// (lastBroadcastCommandsTimer.isStarted() == false ||
|
||||||
|
// lastBroadcastCommandsTimer.getMillis() >= MAX_EMPTY_NETWORK_COMMAND_LIST_BROADCAST_INTERVAL_MILLISECONDS)) {
|
||||||
|
//
|
||||||
|
// sendBroadcastMessage = true;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
// Auto pause is enabled due to client lagging, only send empty command
|
||||||
|
// broadcasts every MAX_EMPTY_NETWORK_COMMAND_LIST_BROADCAST_INTERVAL_MILLISECONDS
|
||||||
|
else if(this->getClientsAutoPausedDueToLag() == true &&
|
||||||
|
(lastBroadcastCommandsTimer.isStarted() == false ||
|
||||||
|
lastBroadcastCommandsTimer.getMillis() >= MAX_EMPTY_NETWORK_COMMAND_LIST_BROADCAST_INTERVAL_MILLISECONDS)) {
|
||||||
|
|
||||||
|
sendBroadcastMessage = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sendBroadcastMessage == true) {
|
||||||
|
|
||||||
if(lastBroadcastCommandsTimer.isStarted() == false) {
|
if(lastBroadcastCommandsTimer.isStarted() == false) {
|
||||||
lastBroadcastCommandsTimer.start();
|
lastBroadcastCommandsTimer.start();
|
||||||
|
@ -2366,7 +2395,10 @@ bool ServerInterface::launchGame(const GameSettings *gameSettings) {
|
||||||
shutdownFTPServer();
|
shutdownFTPServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(requiresUPNPTrigger == true) {
|
if((needToRepublishToMasterserver == true ||
|
||||||
|
GlobalStaticFlags::getIsNonGraphicalModeEnabled() == true) &&
|
||||||
|
requiresUPNPTrigger == true) {
|
||||||
|
|
||||||
this->getServerSocket()->NETdiscoverUPnPDevices();
|
this->getServerSocket()->NETdiscoverUPnPDevices();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -328,6 +328,7 @@ public:
|
||||||
|
|
||||||
static Mutex mutexUpnpdiscoverThread;
|
static Mutex mutexUpnpdiscoverThread;
|
||||||
static SDL_Thread *upnpdiscoverThread;
|
static SDL_Thread *upnpdiscoverThread;
|
||||||
|
static bool cancelUpnpdiscoverThread;
|
||||||
};
|
};
|
||||||
|
|
||||||
// =====================================================
|
// =====================================================
|
||||||
|
|
|
@ -75,6 +75,7 @@ int ServerSocket::maxPlayerCount = -1;
|
||||||
int ServerSocket::externalPort = Socket::broadcast_portno;
|
int ServerSocket::externalPort = Socket::broadcast_portno;
|
||||||
BroadCastClientSocketThread *ClientSocket::broadCastClientThread = NULL;
|
BroadCastClientSocketThread *ClientSocket::broadCastClientThread = NULL;
|
||||||
SDL_Thread *ServerSocket::upnpdiscoverThread = NULL;
|
SDL_Thread *ServerSocket::upnpdiscoverThread = NULL;
|
||||||
|
bool ServerSocket::cancelUpnpdiscoverThread = false;
|
||||||
Mutex ServerSocket::mutexUpnpdiscoverThread;
|
Mutex ServerSocket::mutexUpnpdiscoverThread;
|
||||||
//
|
//
|
||||||
// UPnP - Start
|
// UPnP - Start
|
||||||
|
@ -2183,9 +2184,6 @@ ServerSocket::ServerSocket(bool basicMode) : Socket() {
|
||||||
this->basicMode = basicMode;
|
this->basicMode = basicMode;
|
||||||
this->bindSpecificAddress = "";
|
this->bindSpecificAddress = "";
|
||||||
//printf("SERVER SOCKET CONSTRUCTOR\n");
|
//printf("SERVER SOCKET CONSTRUCTOR\n");
|
||||||
//MutexSafeWrapper safeMutexUPNP(&ServerSocket::mutexUpnpdiscoverThread,CODE_AT_LINE);
|
|
||||||
//ServerSocket::upnpdiscoverThread = NULL;
|
|
||||||
//safeMutexUPNP.ReleaseLock();
|
|
||||||
|
|
||||||
boundPort = 0;
|
boundPort = 0;
|
||||||
portBound = false;
|
portBound = false;
|
||||||
|
@ -2205,22 +2203,17 @@ ServerSocket::~ServerSocket() {
|
||||||
stopBroadCastThread();
|
stopBroadCastThread();
|
||||||
|
|
||||||
if(this->basicMode == false) {
|
if(this->basicMode == false) {
|
||||||
//printf("In [%s::%s] Line: %d safeMutexUPNP\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
//printf("SERVER SOCKET DESTRUCTOR\n");
|
|
||||||
MutexSafeWrapper safeMutexUPNP(&ServerSocket::mutexUpnpdiscoverThread,CODE_AT_LINE);
|
MutexSafeWrapper safeMutexUPNP(&ServerSocket::mutexUpnpdiscoverThread,CODE_AT_LINE);
|
||||||
if(ServerSocket::upnpdiscoverThread != NULL) {
|
if(ServerSocket::upnpdiscoverThread != NULL) {
|
||||||
|
|
||||||
|
ServerSocket::cancelUpnpdiscoverThread = true;
|
||||||
SDL_WaitThread(ServerSocket::upnpdiscoverThread, NULL);
|
SDL_WaitThread(ServerSocket::upnpdiscoverThread, NULL);
|
||||||
ServerSocket::upnpdiscoverThread = NULL;
|
ServerSocket::upnpdiscoverThread = NULL;
|
||||||
|
ServerSocket::cancelUpnpdiscoverThread = false;
|
||||||
}
|
}
|
||||||
safeMutexUPNP.ReleaseLock();
|
safeMutexUPNP.ReleaseLock();
|
||||||
//printf("In [%s::%s] Line: %d safeMutexUPNP\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
|
|
||||||
|
|
||||||
//printf("In [%s::%s] Line: %d UPNP_Tools::enabledUPNP = %d\n",__FILE__,__FUNCTION__,__LINE__,UPNP_Tools::enabledUPNP);
|
|
||||||
if (UPNP_Tools::enabledUPNP) {
|
if (UPNP_Tools::enabledUPNP) {
|
||||||
//UPNP_Tools::NETremRedirects(ServerSocket::externalPort);
|
|
||||||
UPNP_Tools::NETremRedirects(this->getExternalPort());
|
UPNP_Tools::NETremRedirects(this->getExternalPort());
|
||||||
//UPNP_Tools::enabledUPNP = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MutexSafeWrapper safeMutexUPNP1(&UPNP_Tools::mutexUPNP,CODE_AT_LINE);
|
MutexSafeWrapper safeMutexUPNP1(&UPNP_Tools::mutexUPNP,CODE_AT_LINE);
|
||||||
|
@ -2477,12 +2470,12 @@ Socket *ServerSocket::accept(bool errorOnFail) {
|
||||||
void ServerSocket::NETdiscoverUPnPDevices() {
|
void ServerSocket::NETdiscoverUPnPDevices() {
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] UPNP - Start\n",__FILE__,__FUNCTION__,__LINE__);
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] UPNP - Start\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
//printf("SERVER SOCKET NETdiscoverUPnPDevices - START\n");
|
|
||||||
//printf("In [%s::%s] Line: %d safeMutexUPNP\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
MutexSafeWrapper safeMutexUPNP(&ServerSocket::mutexUpnpdiscoverThread,CODE_AT_LINE);
|
MutexSafeWrapper safeMutexUPNP(&ServerSocket::mutexUpnpdiscoverThread,CODE_AT_LINE);
|
||||||
if(ServerSocket::upnpdiscoverThread != NULL) {
|
if(ServerSocket::upnpdiscoverThread != NULL) {
|
||||||
|
ServerSocket::cancelUpnpdiscoverThread = true;
|
||||||
SDL_WaitThread(ServerSocket::upnpdiscoverThread, NULL);
|
SDL_WaitThread(ServerSocket::upnpdiscoverThread, NULL);
|
||||||
ServerSocket::upnpdiscoverThread = NULL;
|
ServerSocket::upnpdiscoverThread = NULL;
|
||||||
|
ServerSocket::cancelUpnpdiscoverThread = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// WATCH OUT! Because the thread takes void * as a parameter we MUST cast to the pointer type
|
// WATCH OUT! Because the thread takes void * as a parameter we MUST cast to the pointer type
|
||||||
|
@ -2562,7 +2555,7 @@ int UPNP_Tools::upnp_init(void *param) {
|
||||||
|
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] isUPNP = %d callback = %p\n",__FILE__,__FUNCTION__,__LINE__,UPNP_Tools::isUPNP,callback);
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] isUPNP = %d callback = %p\n",__FILE__,__FUNCTION__,__LINE__,UPNP_Tools::isUPNP,callback);
|
||||||
|
|
||||||
if(UPNP_Tools::isUPNP) {
|
if(UPNP_Tools::isUPNP == true) {
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"Searching for UPnP devices for automatic port forwarding...\n");
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"Searching for UPnP devices for automatic port forwarding...\n");
|
||||||
|
|
||||||
int upnp_delay = 5000;
|
int upnp_delay = 5000;
|
||||||
|
@ -2584,6 +2577,14 @@ int UPNP_Tools::upnp_init(void *param) {
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"UPnP device search finished devlist = %p.\n",devlist);
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"UPnP device search finished devlist = %p.\n",devlist);
|
||||||
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("UPnP device search finished devlist = %p.\n",devlist);
|
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("UPnP device search finished devlist = %p.\n",devlist);
|
||||||
|
|
||||||
|
if(ServerSocket::cancelUpnpdiscoverThread == true) {
|
||||||
|
if(devlist != NULL) {
|
||||||
|
freeUPNPDevlist(devlist);
|
||||||
|
}
|
||||||
|
devlist = NULL;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
if (devlist) {
|
if (devlist) {
|
||||||
dev = devlist;
|
dev = devlist;
|
||||||
while (dev) {
|
while (dev) {
|
||||||
|
@ -2632,6 +2633,14 @@ int UPNP_Tools::upnp_init(void *param) {
|
||||||
devlist = NULL;
|
devlist = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(ServerSocket::cancelUpnpdiscoverThread == true) {
|
||||||
|
if(devlist != NULL) {
|
||||||
|
freeUPNPDevlist(devlist);
|
||||||
|
}
|
||||||
|
devlist = NULL;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
if (!urls.controlURL || urls.controlURL[0] == '\0') {
|
if (!urls.controlURL || urls.controlURL[0] == '\0') {
|
||||||
snprintf(buf, 255,"controlURL not available, UPnP disabled");
|
snprintf(buf, 255,"controlURL not available, UPnP disabled");
|
||||||
if(callback) {
|
if(callback) {
|
||||||
|
@ -2666,6 +2675,14 @@ int UPNP_Tools::upnp_init(void *param) {
|
||||||
|
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"No UPnP devices found.\n");
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"No UPnP devices found.\n");
|
||||||
|
|
||||||
|
if(ServerSocket::cancelUpnpdiscoverThread == true) {
|
||||||
|
if(devlist != NULL) {
|
||||||
|
freeUPNPDevlist(devlist);
|
||||||
|
}
|
||||||
|
devlist = NULL;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
if(callback) {
|
if(callback) {
|
||||||
safeMutexUPNP.ReleaseLock();
|
safeMutexUPNP.ReleaseLock();
|
||||||
callback->UPNPInitStatus(false);
|
callback->UPNPInitStatus(false);
|
||||||
|
@ -2677,6 +2694,14 @@ int UPNP_Tools::upnp_init(void *param) {
|
||||||
snprintf(buf, 255,"UPnP detection routine disabled by user.");
|
snprintf(buf, 255,"UPnP detection routine disabled by user.");
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"UPnP detection routine disabled by user.\n");
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"UPnP detection routine disabled by user.\n");
|
||||||
|
|
||||||
|
if(ServerSocket::cancelUpnpdiscoverThread == true) {
|
||||||
|
if(devlist != NULL) {
|
||||||
|
freeUPNPDevlist(devlist);
|
||||||
|
}
|
||||||
|
devlist = NULL;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
if(callback) {
|
if(callback) {
|
||||||
safeMutexUPNP.ReleaseLock();
|
safeMutexUPNP.ReleaseLock();
|
||||||
callback->UPNPInitStatus(false);
|
callback->UPNPInitStatus(false);
|
||||||
|
@ -2696,14 +2721,14 @@ bool UPNP_Tools::upnp_add_redirect(int ports[2],bool mutexLock) {
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] upnp_add_redir(%d : %d)\n",__FILE__,__FUNCTION__,__LINE__,ports[0],ports[1]);
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] upnp_add_redir(%d : %d)\n",__FILE__,__FUNCTION__,__LINE__,ports[0],ports[1]);
|
||||||
|
|
||||||
if(mutexLock) {
|
if(mutexLock) {
|
||||||
//printf("In [%s::%s] Line: %d safeMutexUPNP\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
MutexSafeWrapper safeMutexUPNP(&ServerSocket::mutexUpnpdiscoverThread,CODE_AT_LINE);
|
MutexSafeWrapper safeMutexUPNP(&ServerSocket::mutexUpnpdiscoverThread,CODE_AT_LINE);
|
||||||
if(ServerSocket::upnpdiscoverThread != NULL) {
|
if(ServerSocket::upnpdiscoverThread != NULL) {
|
||||||
|
ServerSocket::cancelUpnpdiscoverThread = true;
|
||||||
SDL_WaitThread(ServerSocket::upnpdiscoverThread, NULL);
|
SDL_WaitThread(ServerSocket::upnpdiscoverThread, NULL);
|
||||||
ServerSocket::upnpdiscoverThread = NULL;
|
ServerSocket::upnpdiscoverThread = NULL;
|
||||||
|
ServerSocket::cancelUpnpdiscoverThread = false;
|
||||||
}
|
}
|
||||||
safeMutexUPNP.ReleaseLock();
|
safeMutexUPNP.ReleaseLock();
|
||||||
//printf("In [%s::%s] Line: %d safeMutexUPNP\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MutexSafeWrapper safeMutexUPNP(&UPNP_Tools::mutexUPNP,CODE_AT_LINE);
|
MutexSafeWrapper safeMutexUPNP(&UPNP_Tools::mutexUPNP,CODE_AT_LINE);
|
||||||
|
@ -2748,18 +2773,14 @@ bool UPNP_Tools::upnp_add_redirect(int ports[2],bool mutexLock) {
|
||||||
void UPNP_Tools::upnp_rem_redirect(int ext_port) {
|
void UPNP_Tools::upnp_rem_redirect(int ext_port) {
|
||||||
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] upnp_rem_redir(%d)\n",__FILE__,__FUNCTION__,__LINE__,ext_port);
|
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] upnp_rem_redir(%d)\n",__FILE__,__FUNCTION__,__LINE__,ext_port);
|
||||||
|
|
||||||
//printf("SERVER SOCKET upnp_rem_redirect - START\n");
|
|
||||||
|
|
||||||
//printf("In [%s::%s] Line: %d safeMutexUPNP\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
MutexSafeWrapper safeMutexUPNP(&ServerSocket::mutexUpnpdiscoverThread,CODE_AT_LINE);
|
MutexSafeWrapper safeMutexUPNP(&ServerSocket::mutexUpnpdiscoverThread,CODE_AT_LINE);
|
||||||
if(ServerSocket::upnpdiscoverThread != NULL) {
|
if(ServerSocket::upnpdiscoverThread != NULL) {
|
||||||
|
ServerSocket::cancelUpnpdiscoverThread = true;
|
||||||
SDL_WaitThread(ServerSocket::upnpdiscoverThread, NULL);
|
SDL_WaitThread(ServerSocket::upnpdiscoverThread, NULL);
|
||||||
ServerSocket::upnpdiscoverThread = NULL;
|
ServerSocket::upnpdiscoverThread = NULL;
|
||||||
|
ServerSocket::cancelUpnpdiscoverThread = false;
|
||||||
}
|
}
|
||||||
safeMutexUPNP.ReleaseLock();
|
safeMutexUPNP.ReleaseLock();
|
||||||
//printf("In [%s::%s] Line: %d safeMutexUPNP\n",__FILE__,__FUNCTION__,__LINE__);
|
|
||||||
|
|
||||||
//printf("In [%s::%s] Line: %d ext_port = %d urls.controlURL = [%s]\n",__FILE__,__FUNCTION__,__LINE__,ext_port,urls.controlURL);
|
|
||||||
|
|
||||||
MutexSafeWrapper safeMutexUPNP1(&UPNP_Tools::mutexUPNP,CODE_AT_LINE);
|
MutexSafeWrapper safeMutexUPNP1(&UPNP_Tools::mutexUPNP,CODE_AT_LINE);
|
||||||
if (urls.controlURL && urls.controlURL[0] != '\0') {
|
if (urls.controlURL && urls.controlURL[0] != '\0') {
|
||||||
|
|
Loading…
Reference in New Issue