Require STUN public IP address to proceed with testing

This commit is contained in:
Cameron Gutman 2019-01-04 20:39:20 -08:00
parent 18b704b85a
commit a835cf43a5

View File

@ -460,10 +460,10 @@ bool CheckWANAccess(PSOCKADDR_IN wanAddr, PSOCKADDR_IN reportedWanAddr, bool* fo
printf("Detecting WAN IP address via UPnP..."); printf("Detecting WAN IP address via UPnP...");
ret = UPNP_GetExternalIPAddress(urls.controlURL, data.first.servicetype, wanAddrStr); ret = UPNP_GetExternalIPAddress(urls.controlURL, data.first.servicetype, wanAddrStr);
if (ret == UPNPCOMMAND_SUCCESS && strlen(wanAddrStr) > 0) { if (ret == UPNPCOMMAND_SUCCESS && strlen(wanAddrStr) > 0) {
reportedWanAddr->sin_addr.S_un.S_addr = wanAddr->sin_addr.S_un.S_addr = inet_addr(wanAddrStr); reportedWanAddr->sin_addr.S_un.S_addr = inet_addr(wanAddrStr);
printf("%s\n", wanAddrStr); printf("%s\n", wanAddrStr);
if (wanAddr->sin_addr.S_un.S_addr != 0) { if (reportedWanAddr->sin_addr.S_un.S_addr != 0) {
gotReportedWanAddress = true; gotReportedWanAddress = true;
} }
} }
@ -514,10 +514,10 @@ bool CheckWANAccess(PSOCKADDR_IN wanAddr, PSOCKADDR_IN reportedWanAddr, bool* fo
if (natPmpErr == 0) { if (natPmpErr == 0) {
char addrStr[64]; char addrStr[64];
reportedWanAddr->sin_addr = wanAddr->sin_addr = response.pnu.publicaddress.addr; reportedWanAddr->sin_addr = response.pnu.publicaddress.addr;
inet_ntop(AF_INET, &response.pnu.publicaddress.addr, addrStr, sizeof(addrStr)); inet_ntop(AF_INET, &response.pnu.publicaddress.addr, addrStr, sizeof(addrStr));
printf("%s\n", addrStr); printf("%s\n", addrStr);
if (wanAddr->sin_addr.S_un.S_addr != 0) { if (reportedWanAddr->sin_addr.S_un.S_addr != 0) {
gotReportedWanAddress = true; gotReportedWanAddress = true;
if (!foundUpnpIgd) { if (!foundUpnpIgd) {
@ -534,10 +534,8 @@ bool CheckWANAccess(PSOCKADDR_IN wanAddr, PSOCKADDR_IN reportedWanAddr, bool* fo
printf("Detecting WAN IP address via STUN..."); printf("Detecting WAN IP address via STUN...");
if (!getExternalAddressPortIP4(IPPROTO_UDP, 0, wanAddr)) { if (!getExternalAddressPortIP4(IPPROTO_UDP, 0, wanAddr)) {
if (!gotReportedWanAddress) { DisplayMessage("Unable to determine your public IP address. Please check your Internet connection.");
DisplayMessage("Unable to determine your public IP address. Please check your Internet connection."); return false;
return false;
}
} }
else { else {
char addrStr[64]; char addrStr[64];