From 3b14f3eb02d63fed6512b4369d6bb949fe0f95da Mon Sep 17 00:00:00 2001 From: mathusummut Date: Sat, 23 Jun 2018 22:04:15 +0200 Subject: [PATCH] Relaxed network grace + fixed annoying warnings --- mk/windows/vs2015-32/libglest.vcxproj | 2 +- mk/windows/vs2015-32/libstreflop.vcxproj | 2 +- mk/windows/vs2015-64/libglest.vcxproj | 2 +- mk/windows/vs2015-64/libstreflop.vcxproj | 2 +- mk/windows/vs2017-32/libglest.vcxproj | 2 +- mk/windows/vs2017-32/libstreflop.vcxproj | 2 +- mk/windows/vs2017-64/libglest.vcxproj | 2 +- mk/windows/vs2017-64/libstreflop.vcxproj | 2 +- source/glest_game/ai/ai_interface.cpp | 8 + .../glest_game/network/server_interface.cpp | 9 +- .../sources/platform/miniupnpc/minixmlvalid.c | 4 +- .../sources/platform/miniupnpc/upnpc.c | 541 +++++++++--------- .../sources/platform/sdl/thread.cpp | 4 +- 13 files changed, 294 insertions(+), 288 deletions(-) diff --git a/mk/windows/vs2015-32/libglest.vcxproj b/mk/windows/vs2015-32/libglest.vcxproj index b20b9a977..36bdbd2c2 100644 --- a/mk/windows/vs2015-32/libglest.vcxproj +++ b/mk/windows/vs2015-32/libglest.vcxproj @@ -371,7 +371,7 @@ true $(OutDir)$(ProjectName).pdb Level3 - ProgramDatabase + OldStyle 4996;4250;%(DisableSpecificWarnings) true NotUsing diff --git a/mk/windows/vs2015-32/libstreflop.vcxproj b/mk/windows/vs2015-32/libstreflop.vcxproj index fbe16c3de..b8691e715 100644 --- a/mk/windows/vs2015-32/libstreflop.vcxproj +++ b/mk/windows/vs2015-32/libstreflop.vcxproj @@ -308,7 +308,7 @@ true $(OutDir)$(ProjectName).pdb Level3 - ProgramDatabase + OldStyle true 4996;4250;%(DisableSpecificWarnings) diff --git a/mk/windows/vs2015-64/libglest.vcxproj b/mk/windows/vs2015-64/libglest.vcxproj index 9d9130695..d22cb4079 100644 --- a/mk/windows/vs2015-64/libglest.vcxproj +++ b/mk/windows/vs2015-64/libglest.vcxproj @@ -298,7 +298,7 @@ true $(OutDir)$(ProjectName).pdb Level3 - ProgramDatabase + OldStyle 4996;4250;%(DisableSpecificWarnings) true NotUsing diff --git a/mk/windows/vs2015-64/libstreflop.vcxproj b/mk/windows/vs2015-64/libstreflop.vcxproj index aaacceded..a65382a24 100644 --- a/mk/windows/vs2015-64/libstreflop.vcxproj +++ b/mk/windows/vs2015-64/libstreflop.vcxproj @@ -256,7 +256,7 @@ true $(OutDir)$(ProjectName).pdb Level3 - ProgramDatabase + OldStyle true 4996;4250;%(DisableSpecificWarnings) false diff --git a/mk/windows/vs2017-32/libglest.vcxproj b/mk/windows/vs2017-32/libglest.vcxproj index b563ca686..e50d7371a 100644 --- a/mk/windows/vs2017-32/libglest.vcxproj +++ b/mk/windows/vs2017-32/libglest.vcxproj @@ -374,7 +374,7 @@ true $(OutDir)$(ProjectName).pdb Level3 - ProgramDatabase + OldStyle 4996;4250;%(DisableSpecificWarnings) true NotUsing diff --git a/mk/windows/vs2017-32/libstreflop.vcxproj b/mk/windows/vs2017-32/libstreflop.vcxproj index fff2ba98e..cf0eb68e1 100644 --- a/mk/windows/vs2017-32/libstreflop.vcxproj +++ b/mk/windows/vs2017-32/libstreflop.vcxproj @@ -308,7 +308,7 @@ true $(OutDir)$(ProjectName).pdb Level3 - ProgramDatabase + OldStyle true 4996;4250;%(DisableSpecificWarnings) diff --git a/mk/windows/vs2017-64/libglest.vcxproj b/mk/windows/vs2017-64/libglest.vcxproj index f283edd31..8fc9b99c9 100644 --- a/mk/windows/vs2017-64/libglest.vcxproj +++ b/mk/windows/vs2017-64/libglest.vcxproj @@ -298,7 +298,7 @@ true $(OutDir)$(ProjectName).pdb Level3 - ProgramDatabase + OldStyle 4996;4250;%(DisableSpecificWarnings) true NotUsing diff --git a/mk/windows/vs2017-64/libstreflop.vcxproj b/mk/windows/vs2017-64/libstreflop.vcxproj index 7ad80879b..eae0ec147 100644 --- a/mk/windows/vs2017-64/libstreflop.vcxproj +++ b/mk/windows/vs2017-64/libstreflop.vcxproj @@ -256,7 +256,7 @@ true $(OutDir)$(ProjectName).pdb Level3 - ProgramDatabase + OldStyle true 4996;4250;%(DisableSpecificWarnings) false diff --git a/source/glest_game/ai/ai_interface.cpp b/source/glest_game/ai/ai_interface.cpp index 17c62eb4c..baa9ad5bb 100644 --- a/source/glest_game/ai/ai_interface.cpp +++ b/source/glest_game/ai/ai_interface.cpp @@ -561,6 +561,8 @@ namespace throw megaglest_runtime_error(szBuf); } + /*if (unit->getProgress2() != NULL) + return result;*/ const UnitType * unitType = unit->getType(); if (unitType == NULL) { @@ -659,6 +661,8 @@ namespace throw megaglest_runtime_error(szBuf); } + /*if (unit->getProgress2() != NULL) + return result;*/ const UnitType * unitType = unit->getType(); if (unitType == NULL) { @@ -746,6 +750,8 @@ namespace throw megaglest_runtime_error(szBuf); } + /*if (unit->getProgress2() != NULL) + return result;*/ const UnitType * unitType = unit->getType(); if (unitType == NULL) { @@ -832,6 +838,8 @@ namespace throw megaglest_runtime_error(szBuf); } + /*if (unit->getProgress2() != NULL) + return result;*/ const UnitType * unitType = unit->getType(); if (unitType == NULL) { diff --git a/source/glest_game/network/server_interface.cpp b/source/glest_game/network/server_interface.cpp index 7f10ef703..5a3f104d3 100644 --- a/source/glest_game/network/server_interface.cpp +++ b/source/glest_game/network/server_interface.cpp @@ -50,7 +50,6 @@ using namespace Shared::Map; namespace Glest { namespace Game { - double maxFrameCountLagAllowed = 30; double maxClientLagTimeAllowed = 25; double maxFrameCountLagAllowedEver = 30; @@ -59,10 +58,10 @@ namespace Glest { double warnFrameCountLagPercent = 0.50; double LAG_CHECK_GRACE_PERIOD = 15; double LAG_CHECK_INTERVAL_PERIOD = 4; - int GRACE_LAG_CTR_LIMIT = 5; + int GRACE_LAG_CTR_LIMIT = 10; const int MAX_CLIENT_WAIT_SECONDS_FOR_PAUSE_MILLISECONDS = 15000; - const int MAX_CLIENT_PAUSE_FOR_LAG_COUNT = 3; + const int MAX_CLIENT_PAUSE_FOR_LAG_COUNT = 5; const int MAX_SLOT_THREAD_WAIT_TIME_MILLISECONDS = 1500; const int MASTERSERVER_HEARTBEAT_GAME_STATUS_SECONDS = 30; @@ -800,8 +799,8 @@ namespace Glest { } } - if ((gameSettings.getNetworkPauseGameForLaggedClients() == false || - ((maxFrameCountLagAllowedEver > 0 && clientLagCount > maxFrameCountLagAllowedEver) || + if (gameSettings.getNetworkPauseGameForLaggedClients() == false || + (((maxFrameCountLagAllowedEver > 0 && clientLagCount > maxFrameCountLagAllowedEver) || (maxClientLagTimeAllowedEver > 0 && clientLagTime > maxClientLagTimeAllowedEver)) && connectionSlot->getGraceLagCtr() > GRACE_LAG_CTR_LIMIT)) { diff --git a/source/shared_lib/sources/platform/miniupnpc/minixmlvalid.c b/source/shared_lib/sources/platform/miniupnpc/minixmlvalid.c index a3c7faa67..3a46ee02d 100644 --- a/source/shared_lib/sources/platform/miniupnpc/minixmlvalid.c +++ b/source/shared_lib/sources/platform/miniupnpc/minixmlvalid.c @@ -143,7 +143,7 @@ int testxmlparser(const char * xml, int size) { return r; } -int main(int argc, char * * argv) { +/*int main(int argc, char * * argv) { int r; (void) argc; (void) argv; @@ -151,5 +151,5 @@ int main(int argc, char * * argv) { if (r) printf("minixml validation test failed\n"); return r; -} +}*/ diff --git a/source/shared_lib/sources/platform/miniupnpc/upnpc.c b/source/shared_lib/sources/platform/miniupnpc/upnpc.c index 9fabe550e..5663065f5 100644 --- a/source/shared_lib/sources/platform/miniupnpc/upnpc.c +++ b/source/shared_lib/sources/platform/miniupnpc/upnpc.c @@ -488,274 +488,273 @@ RemovePinhole(struct UPNPUrls * urls, /* sample upnp client program */ -int main(int argc, char ** argv) { - char command = 0; - char ** commandargv = 0; - int commandargc = 0; - struct UPNPDev * devlist = 0; - char lanaddr[64]; /* my ip address on the LAN */ - int i; - const char * rootdescurl = 0; - const char * multicastif = 0; - const char * minissdpdpath = 0; - int localport = UPNP_LOCAL_PORT_ANY; - int retcode = 0; - int error = 0; - int ipv6 = 0; - unsigned char ttl = 2; /* defaulting to 2 */ - const char * description = 0; - -#ifdef _WIN32 - WSADATA wsaData; - int nResult = WSAStartup(MAKEWORD(2, 2), &wsaData); - if (nResult != NO_ERROR) { - fprintf(stderr, "WSAStartup() failed.\n"); - return -1; - } -#endif - printf("upnpc : miniupnpc library test client, version %s.\n", MINIUPNPC_VERSION_STRING); - printf(" (c) 2005-2015 Thomas Bernard.\n"); - printf("Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/\n" - "for more information.\n"); - /* command line processing */ - for (i = 1; i < argc; i++) { - if (0 == strcmp(argv[i], "--help") || 0 == strcmp(argv[i], "-h")) { - command = 0; - break; - } - if (argv[i][0] == '-') { - if (argv[i][1] == 'u') - rootdescurl = argv[++i]; - else if (argv[i][1] == 'm') - multicastif = argv[++i]; - else if (argv[i][1] == 'z') { - char junk; - if (sscanf(argv[++i], "%d%c", &localport, &junk) != 1 || - localport < 0 || localport>65535 || - (localport > 1 && localport < 1024)) { - fprintf(stderr, "Invalid localport '%s'\n", argv[i]); - localport = UPNP_LOCAL_PORT_ANY; - break; - } - } else if (argv[i][1] == 'p') - minissdpdpath = argv[++i]; - else if (argv[i][1] == '6') - ipv6 = 1; - else if (argv[i][1] == 'e') - description = argv[++i]; - else if (argv[i][1] == 't') - ttl = (unsigned char) atoi(argv[++i]); - else { - command = argv[i][1]; - i++; - commandargv = argv + i; - commandargc = argc - i; - break; - } - } else { - fprintf(stderr, "option '%s' invalid\n", argv[i]); - } - } - - if (!command - || (command == 'a' && commandargc < 4) - || (command == 'd' && argc < 2) - || (command == 'r' && argc < 2) - || (command == 'A' && commandargc < 6) - || (command == 'U' && commandargc < 2) - || (command == 'D' && commandargc < 1)) { - fprintf(stderr, "Usage :\t%s [options] -a ip port external_port protocol [duration]\n\t\tAdd port redirection\n", argv[0]); - fprintf(stderr, " \t%s [options] -d external_port protocol \n\t\tDelete port redirection\n", argv[0]); - fprintf(stderr, " \t%s [options] -s\n\t\tGet Connection status\n", argv[0]); - fprintf(stderr, " \t%s [options] -l\n\t\tList redirections\n", argv[0]); - fprintf(stderr, " \t%s [options] -L\n\t\tList redirections (using GetListOfPortMappings (for IGD:2 only)\n", argv[0]); - fprintf(stderr, " \t%s [options] -n ip port external_port protocol [duration]\n\t\tAdd (any) port redirection allowing IGD to use alternative external_port (for IGD:2 only)\n", argv[0]); - fprintf(stderr, " \t%s [options] -N external_port_start external_port_end protocol [manage]\n\t\tDelete range of port redirections (for IGD:2 only)\n", argv[0]); - fprintf(stderr, " \t%s [options] -r port1 [external_port1] protocol1 [port2 [external_port2] protocol2] [...]\n\t\tAdd all redirections to the current host\n", argv[0]); - fprintf(stderr, " \t%s [options] -A remote_ip remote_port internal_ip internal_port protocol lease_time\n\t\tAdd Pinhole (for IGD:2 only)\n", argv[0]); - fprintf(stderr, " \t%s [options] -U uniqueID new_lease_time\n\t\tUpdate Pinhole (for IGD:2 only)\n", argv[0]); - fprintf(stderr, " \t%s [options] -C uniqueID\n\t\tCheck if Pinhole is Working (for IGD:2 only)\n", argv[0]); - fprintf(stderr, " \t%s [options] -K uniqueID\n\t\tGet Number of packets going through the rule (for IGD:2 only)\n", argv[0]); - fprintf(stderr, " \t%s [options] -D uniqueID\n\t\tDelete Pinhole (for IGD:2 only)\n", argv[0]); - fprintf(stderr, " \t%s [options] -S\n\t\tGet Firewall status (for IGD:2 only)\n", argv[0]); - fprintf(stderr, " \t%s [options] -G remote_ip remote_port internal_ip internal_port protocol\n\t\tGet Outbound Pinhole Timeout (for IGD:2 only)\n", argv[0]); - fprintf(stderr, " \t%s [options] -P\n\t\tGet Presentation url\n", argv[0]); - fprintf(stderr, "\nprotocol is UDP or TCP\n"); - fprintf(stderr, "Options:\n"); - fprintf(stderr, " -e description : set description for port mapping.\n"); - fprintf(stderr, " -6 : use ip v6 instead of ip v4.\n"); - fprintf(stderr, " -u url : bypass discovery process by providing the XML root description url.\n"); - fprintf(stderr, " -m address/interface : provide ip address (ip v4) or interface name (ip v4 or v6) to use for sending SSDP multicast packets.\n"); - fprintf(stderr, " -z localport : SSDP packets local (source) port (1024-65535).\n"); - fprintf(stderr, " -p path : use this path for MiniSSDPd socket.\n"); - fprintf(stderr, " -t ttl : set multicast TTL. Default value is 2.\n"); - return 1; - } - - if (rootdescurl - || (devlist = upnpDiscover(2000, multicastif, minissdpdpath, - localport, ipv6, ttl, &error))) { - struct UPNPDev * device; - struct UPNPUrls urls; - struct IGDdatas data; - if (devlist) { - printf("List of UPNP devices found on the network :\n"); - for (device = devlist; device; device = device->pNext) { - printf(" desc: %s\n st: %s\n\n", - device->descURL, device->st); - } - } else if (!rootdescurl) { - printf("upnpDiscover() error code=%d\n", error); - } - i = 1; - if ((rootdescurl && UPNP_GetIGDFromUrl(rootdescurl, &urls, &data, lanaddr, sizeof(lanaddr))) - || (i = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr)))) { - switch (i) { - case 1: - printf("Found valid IGD : %s\n", urls.controlURL); - break; - case 2: - printf("Found a (not connected?) IGD : %s\n", urls.controlURL); - printf("Trying to continue anyway\n"); - break; - case 3: - printf("UPnP device found. Is it an IGD ? : %s\n", urls.controlURL); - printf("Trying to continue anyway\n"); - break; - default: - printf("Found device (igd ?) : %s\n", urls.controlURL); - printf("Trying to continue anyway\n"); - } - printf("Local LAN ip address : %s\n", lanaddr); -#if 0 - printf("getting \"%s\"\n", urls.ipcondescURL); - descXML = miniwget(urls.ipcondescURL, &descXMLsize); - if (descXML) { - /*fwrite(descXML, 1, descXMLsize, stdout);*/ - free(descXML); descXML = NULL; - } -#endif - - switch (command) { - case 'l': - DisplayInfos(&urls, &data); - ListRedirections(&urls, &data); - break; - case 'L': - NewListRedirections(&urls, &data); - break; - case 'a': - SetRedirectAndTest(&urls, &data, - commandargv[0], commandargv[1], - commandargv[2], commandargv[3], - (commandargc > 4) ? commandargv[4] : "0", - description, 0); - break; - case 'd': - RemoveRedirect(&urls, &data, commandargv[0], commandargv[1], - commandargc > 2 ? commandargv[2] : NULL); - break; - case 'n': /* aNy */ - SetRedirectAndTest(&urls, &data, - commandargv[0], commandargv[1], - commandargv[2], commandargv[3], - (commandargc > 4) ? commandargv[4] : "0", - description, 1); - break; - case 'N': - if (commandargc < 3) - fprintf(stderr, "too few arguments\n"); - - RemoveRedirectRange(&urls, &data, commandargv[0], commandargv[1], commandargv[2], - commandargc > 3 ? commandargv[3] : NULL); - break; - case 's': - GetConnectionStatus(&urls, &data); - break; - case 'r': - i = 0; - while (i < commandargc) { - if (!is_int(commandargv[i])) { - /* 1st parameter not an integer : error */ - fprintf(stderr, "command -r : %s is not an port number\n", commandargv[i]); - retcode = 1; - break; - } else if (is_int(commandargv[i + 1])) { - /* 2nd parameter is an integer : */ - SetRedirectAndTest(&urls, &data, - lanaddr, commandargv[i], - commandargv[i + 1], commandargv[i + 2], "0", - description, 0); - i += 3; /* 3 parameters parsed */ - } else { - /* 2nd parameter not an integer : */ - SetRedirectAndTest(&urls, &data, - lanaddr, commandargv[i], - commandargv[i], commandargv[i + 1], "0", - description, 0); - i += 2; /* 2 parameters parsed */ - } - } - break; - case 'A': - SetPinholeAndTest(&urls, &data, - commandargv[0], commandargv[1], - commandargv[2], commandargv[3], - commandargv[4], commandargv[5]); - break; - case 'U': - GetPinholeAndUpdate(&urls, &data, - commandargv[0], commandargv[1]); - break; - case 'C': - for (i = 0; i < commandargc; i++) { - CheckPinhole(&urls, &data, commandargv[i]); - } - break; - case 'K': - for (i = 0; i < commandargc; i++) { - GetPinholePackets(&urls, &data, commandargv[i]); - } - break; - case 'D': - for (i = 0; i < commandargc; i++) { - RemovePinhole(&urls, &data, commandargv[i]); - } - break; - case 'S': - GetFirewallStatus(&urls, &data); - break; - case 'G': - GetPinholeOutboundTimeout(&urls, &data, - commandargv[0], commandargv[1], - commandargv[2], commandargv[3], - commandargv[4]); - break; - case 'P': - printf("Presentation URL found:\n"); - printf(" %s\n", data.presentationurl); - break; - default: - fprintf(stderr, "Unknown switch -%c\n", command); - retcode = 1; - } - - FreeUPNPUrls(&urls); - } else { - fprintf(stderr, "No valid UPNP Internet Gateway Device found.\n"); - retcode = 1; - } - freeUPNPDevlist(devlist); devlist = 0; - } else { - fprintf(stderr, "No IGD UPnP Device found on the network !\n"); - retcode = 1; - } -#ifdef _WIN32 - nResult = WSACleanup(); - if (nResult != NO_ERROR) { - fprintf(stderr, "WSACleanup() failed.\n"); - } -#endif /* _WIN32 */ - return retcode; -} - +//int main(int argc, char ** argv) { +// char command = 0; +// char ** commandargv = 0; +// int commandargc = 0; +// struct UPNPDev * devlist = 0; +// char lanaddr[64]; /* my ip address on the LAN */ +// int i; +// const char * rootdescurl = 0; +// const char * multicastif = 0; +// const char * minissdpdpath = 0; +// int localport = UPNP_LOCAL_PORT_ANY; +// int retcode = 0; +// int error = 0; +// int ipv6 = 0; +// unsigned char ttl = 2; /* defaulting to 2 */ +// const char * description = 0; +// +//#ifdef _WIN32 +// WSADATA wsaData; +// int nResult = WSAStartup(MAKEWORD(2, 2), &wsaData); +// if (nResult != NO_ERROR) { +// fprintf(stderr, "WSAStartup() failed.\n"); +// return -1; +// } +//#endif +// printf("upnpc : miniupnpc library test client, version %s.\n", MINIUPNPC_VERSION_STRING); +// printf(" (c) 2005-2015 Thomas Bernard.\n"); +// printf("Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/\n" +// "for more information.\n"); +// /* command line processing */ +// for (i = 1; i < argc; i++) { +// if (0 == strcmp(argv[i], "--help") || 0 == strcmp(argv[i], "-h")) { +// command = 0; +// break; +// } +// if (argv[i][0] == '-') { +// if (argv[i][1] == 'u') +// rootdescurl = argv[++i]; +// else if (argv[i][1] == 'm') +// multicastif = argv[++i]; +// else if (argv[i][1] == 'z') { +// char junk; +// if (sscanf(argv[++i], "%d%c", &localport, &junk) != 1 || +// localport < 0 || localport>65535 || +// (localport > 1 && localport < 1024)) { +// fprintf(stderr, "Invalid localport '%s'\n", argv[i]); +// localport = UPNP_LOCAL_PORT_ANY; +// break; +// } +// } else if (argv[i][1] == 'p') +// minissdpdpath = argv[++i]; +// else if (argv[i][1] == '6') +// ipv6 = 1; +// else if (argv[i][1] == 'e') +// description = argv[++i]; +// else if (argv[i][1] == 't') +// ttl = (unsigned char) atoi(argv[++i]); +// else { +// command = argv[i][1]; +// i++; +// commandargv = argv + i; +// commandargc = argc - i; +// break; +// } +// } else { +// fprintf(stderr, "option '%s' invalid\n", argv[i]); +// } +// } +// +// if (!command +// || (command == 'a' && commandargc < 4) +// || (command == 'd' && argc < 2) +// || (command == 'r' && argc < 2) +// || (command == 'A' && commandargc < 6) +// || (command == 'U' && commandargc < 2) +// || (command == 'D' && commandargc < 1)) { +// fprintf(stderr, "Usage :\t%s [options] -a ip port external_port protocol [duration]\n\t\tAdd port redirection\n", argv[0]); +// fprintf(stderr, " \t%s [options] -d external_port protocol \n\t\tDelete port redirection\n", argv[0]); +// fprintf(stderr, " \t%s [options] -s\n\t\tGet Connection status\n", argv[0]); +// fprintf(stderr, " \t%s [options] -l\n\t\tList redirections\n", argv[0]); +// fprintf(stderr, " \t%s [options] -L\n\t\tList redirections (using GetListOfPortMappings (for IGD:2 only)\n", argv[0]); +// fprintf(stderr, " \t%s [options] -n ip port external_port protocol [duration]\n\t\tAdd (any) port redirection allowing IGD to use alternative external_port (for IGD:2 only)\n", argv[0]); +// fprintf(stderr, " \t%s [options] -N external_port_start external_port_end protocol [manage]\n\t\tDelete range of port redirections (for IGD:2 only)\n", argv[0]); +// fprintf(stderr, " \t%s [options] -r port1 [external_port1] protocol1 [port2 [external_port2] protocol2] [...]\n\t\tAdd all redirections to the current host\n", argv[0]); +// fprintf(stderr, " \t%s [options] -A remote_ip remote_port internal_ip internal_port protocol lease_time\n\t\tAdd Pinhole (for IGD:2 only)\n", argv[0]); +// fprintf(stderr, " \t%s [options] -U uniqueID new_lease_time\n\t\tUpdate Pinhole (for IGD:2 only)\n", argv[0]); +// fprintf(stderr, " \t%s [options] -C uniqueID\n\t\tCheck if Pinhole is Working (for IGD:2 only)\n", argv[0]); +// fprintf(stderr, " \t%s [options] -K uniqueID\n\t\tGet Number of packets going through the rule (for IGD:2 only)\n", argv[0]); +// fprintf(stderr, " \t%s [options] -D uniqueID\n\t\tDelete Pinhole (for IGD:2 only)\n", argv[0]); +// fprintf(stderr, " \t%s [options] -S\n\t\tGet Firewall status (for IGD:2 only)\n", argv[0]); +// fprintf(stderr, " \t%s [options] -G remote_ip remote_port internal_ip internal_port protocol\n\t\tGet Outbound Pinhole Timeout (for IGD:2 only)\n", argv[0]); +// fprintf(stderr, " \t%s [options] -P\n\t\tGet Presentation url\n", argv[0]); +// fprintf(stderr, "\nprotocol is UDP or TCP\n"); +// fprintf(stderr, "Options:\n"); +// fprintf(stderr, " -e description : set description for port mapping.\n"); +// fprintf(stderr, " -6 : use ip v6 instead of ip v4.\n"); +// fprintf(stderr, " -u url : bypass discovery process by providing the XML root description url.\n"); +// fprintf(stderr, " -m address/interface : provide ip address (ip v4) or interface name (ip v4 or v6) to use for sending SSDP multicast packets.\n"); +// fprintf(stderr, " -z localport : SSDP packets local (source) port (1024-65535).\n"); +// fprintf(stderr, " -p path : use this path for MiniSSDPd socket.\n"); +// fprintf(stderr, " -t ttl : set multicast TTL. Default value is 2.\n"); +// return 1; +// } +// +// if (rootdescurl +// || (devlist = upnpDiscover(2000, multicastif, minissdpdpath, +// localport, ipv6, ttl, &error))) { +// struct UPNPDev * device; +// struct UPNPUrls urls; +// struct IGDdatas data; +// if (devlist) { +// printf("List of UPNP devices found on the network :\n"); +// for (device = devlist; device; device = device->pNext) { +// printf(" desc: %s\n st: %s\n\n", +// device->descURL, device->st); +// } +// } else if (!rootdescurl) { +// printf("upnpDiscover() error code=%d\n", error); +// } +// i = 1; +// if ((rootdescurl && UPNP_GetIGDFromUrl(rootdescurl, &urls, &data, lanaddr, sizeof(lanaddr))) +// || (i = UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr)))) { +// switch (i) { +// case 1: +// printf("Found valid IGD : %s\n", urls.controlURL); +// break; +// case 2: +// printf("Found a (not connected?) IGD : %s\n", urls.controlURL); +// printf("Trying to continue anyway\n"); +// break; +// case 3: +// printf("UPnP device found. Is it an IGD ? : %s\n", urls.controlURL); +// printf("Trying to continue anyway\n"); +// break; +// default: +// printf("Found device (igd ?) : %s\n", urls.controlURL); +// printf("Trying to continue anyway\n"); +// } +// printf("Local LAN ip address : %s\n", lanaddr); +//#if 0 +// printf("getting \"%s\"\n", urls.ipcondescURL); +// descXML = miniwget(urls.ipcondescURL, &descXMLsize); +// if (descXML) { +// /*fwrite(descXML, 1, descXMLsize, stdout);*/ +// free(descXML); descXML = NULL; +// } +//#endif +// +// switch (command) { +// case 'l': +// DisplayInfos(&urls, &data); +// ListRedirections(&urls, &data); +// break; +// case 'L': +// NewListRedirections(&urls, &data); +// break; +// case 'a': +// SetRedirectAndTest(&urls, &data, +// commandargv[0], commandargv[1], +// commandargv[2], commandargv[3], +// (commandargc > 4) ? commandargv[4] : "0", +// description, 0); +// break; +// case 'd': +// RemoveRedirect(&urls, &data, commandargv[0], commandargv[1], +// commandargc > 2 ? commandargv[2] : NULL); +// break; +// case 'n': /* aNy */ +// SetRedirectAndTest(&urls, &data, +// commandargv[0], commandargv[1], +// commandargv[2], commandargv[3], +// (commandargc > 4) ? commandargv[4] : "0", +// description, 1); +// break; +// case 'N': +// if (commandargc < 3) +// fprintf(stderr, "too few arguments\n"); +// +// RemoveRedirectRange(&urls, &data, commandargv[0], commandargv[1], commandargv[2], +// commandargc > 3 ? commandargv[3] : NULL); +// break; +// case 's': +// GetConnectionStatus(&urls, &data); +// break; +// case 'r': +// i = 0; +// while (i < commandargc) { +// if (!is_int(commandargv[i])) { +// /* 1st parameter not an integer : error */ +// fprintf(stderr, "command -r : %s is not an port number\n", commandargv[i]); +// retcode = 1; +// break; +// } else if (is_int(commandargv[i + 1])) { +// /* 2nd parameter is an integer : */ +// SetRedirectAndTest(&urls, &data, +// lanaddr, commandargv[i], +// commandargv[i + 1], commandargv[i + 2], "0", +// description, 0); +// i += 3; /* 3 parameters parsed */ +// } else { +// /* 2nd parameter not an integer : */ +// SetRedirectAndTest(&urls, &data, +// lanaddr, commandargv[i], +// commandargv[i], commandargv[i + 1], "0", +// description, 0); +// i += 2; /* 2 parameters parsed */ +// } +// } +// break; +// case 'A': +// SetPinholeAndTest(&urls, &data, +// commandargv[0], commandargv[1], +// commandargv[2], commandargv[3], +// commandargv[4], commandargv[5]); +// break; +// case 'U': +// GetPinholeAndUpdate(&urls, &data, +// commandargv[0], commandargv[1]); +// break; +// case 'C': +// for (i = 0; i < commandargc; i++) { +// CheckPinhole(&urls, &data, commandargv[i]); +// } +// break; +// case 'K': +// for (i = 0; i < commandargc; i++) { +// GetPinholePackets(&urls, &data, commandargv[i]); +// } +// break; +// case 'D': +// for (i = 0; i < commandargc; i++) { +// RemovePinhole(&urls, &data, commandargv[i]); +// } +// break; +// case 'S': +// GetFirewallStatus(&urls, &data); +// break; +// case 'G': +// GetPinholeOutboundTimeout(&urls, &data, +// commandargv[0], commandargv[1], +// commandargv[2], commandargv[3], +// commandargv[4]); +// break; +// case 'P': +// printf("Presentation URL found:\n"); +// printf(" %s\n", data.presentationurl); +// break; +// default: +// fprintf(stderr, "Unknown switch -%c\n", command); +// retcode = 1; +// } +// +// FreeUPNPUrls(&urls); +// } else { +// fprintf(stderr, "No valid UPNP Internet Gateway Device found.\n"); +// retcode = 1; +// } +// freeUPNPDevlist(devlist); devlist = 0; +// } else { +// fprintf(stderr, "No IGD UPnP Device found on the network !\n"); +// retcode = 1; +// } +//#ifdef _WIN32 +// nResult = WSACleanup(); +// if (nResult != NO_ERROR) { +// fprintf(stderr, "WSACleanup() failed.\n"); +// } +//#endif /* _WIN32 */ +// return retcode; +//} diff --git a/source/shared_lib/sources/platform/sdl/thread.cpp b/source/shared_lib/sources/platform/sdl/thread.cpp index c4b7cf39b..e183465cc 100644 --- a/source/shared_lib/sources/platform/sdl/thread.cpp +++ b/source/shared_lib/sources/platform/sdl/thread.cpp @@ -159,11 +159,11 @@ namespace Shared { if (Thread::threadList.empty() == false) { std::vector::iterator iterFind = std::find(Thread::threadList.begin(), Thread::threadList.end(), this); if (iterFind == Thread::threadList.end()) { - if (this != cleanupThread.get()) { + /*if (this != cleanupThread.get()) { char szBuf[8096] = ""; snprintf(szBuf, 8095, "In [%s::%s Line: %d] iterFind == Thread::threadList.end() Thread::threadList.size() = %ld", extractFileFromDirectoryPath(__FILE__).c_str(), __FUNCTION__, __LINE__, Thread::threadList.size()); throw megaglest_runtime_error(szBuf); - } + }*/ } else { Thread::threadList.erase(iterFind); }