Relaxed network grace + fixed annoying warnings

This commit is contained in:
mathusummut
2018-06-23 22:04:15 +02:00
parent 2e9623c8da
commit 3b14f3eb02
13 changed files with 294 additions and 288 deletions

View File

@@ -371,7 +371,7 @@
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
<DisableSpecificWarnings>4996;4250;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<PrecompiledHeader>NotUsing</PrecompiledHeader>

View File

@@ -308,7 +308,7 @@
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<DisableSpecificWarnings>4996;4250;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>

View File

@@ -298,7 +298,7 @@
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
<DisableSpecificWarnings>4996;4250;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<PrecompiledHeader>NotUsing</PrecompiledHeader>

View File

@@ -256,7 +256,7 @@
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<DisableSpecificWarnings>4996;4250;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<OmitFramePointers>false</OmitFramePointers>

View File

@@ -374,7 +374,7 @@
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
<DisableSpecificWarnings>4996;4250;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<PrecompiledHeader>NotUsing</PrecompiledHeader>

View File

@@ -308,7 +308,7 @@
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<DisableSpecificWarnings>4996;4250;%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>

View File

@@ -298,7 +298,7 @@
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
<DisableSpecificWarnings>4996;4250;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<PrecompiledHeader>NotUsing</PrecompiledHeader>

View File

@@ -256,7 +256,7 @@
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<ProgramDataBaseFileName>$(OutDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DebugInformationFormat>OldStyle</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<DisableSpecificWarnings>4996;4250;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<OmitFramePointers>false</OmitFramePointers>

View File

@@ -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) {

View File

@@ -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)) {

View File

@@ -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;
}
}*/

View File

@@ -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 <remote host>\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 : <port> <external_port> <protocol> */
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 : <port> <protocol> */
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 <remote host>\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 : <port> <external_port> <protocol> */
// 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 : <port> <protocol> */
// 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;
//}

View File

@@ -159,11 +159,11 @@ namespace Shared {
if (Thread::threadList.empty() == false) {
std::vector<Thread *>::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);
}