Add better error handling.

This commit is contained in:
2024-03-20 06:51:57 -04:00
parent da53ead8d3
commit c6d9a3844a
11 changed files with 261 additions and 12 deletions

View File

@@ -54,25 +54,42 @@ namespace IPMonitor
{
int MAX_RETRIES=5;
int TIMEOUT_BETWEEN_ATTEMPTS=30000;
String request="http://checkip.dyndns.org/";
try
{
String address = null;
String request="http://checkip.dyndns.org/";
for(int index=0;index<MAX_RETRIES && null==address;index++)
{
if(!NetworkStatus.IsNetworkAvailable(0))
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[IPMonitor::GetPublicIPAddress] The Network seems to be disconnected. Will retry after {0} (ms) ",request,TIMEOUT_BETWEEN_ATTEMPTS));
try{Thread.Sleep(TIMEOUT_BETWEEN_ATTEMPTS);}catch{;}
continue;
}
address = GetHttpRequest(request);
if(null==address)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[IPMonitor::GetPublicIPAddress] Request failed {0}. Will retry after {1} (ms) ",request,TIMEOUT_BETWEEN_ATTEMPTS));
try{Thread.Sleep(TIMEOUT_BETWEEN_ATTEMPTS);}catch{;}
continue;
}
}
int first = address.IndexOf("Address: ") + 9;
int last = address.LastIndexOf("</body>");
address = address.Substring(first, last - first);
return address;
try
{
int first = address.IndexOf("Address: ") + 9;
int last = address.LastIndexOf("</body>");
address = address.Substring(first, last - first);
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Request succeeded: {0} -> {1}",request,address));
return address;
}
catch(Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Exception parsing address: {0}",exception.ToString()));
return null;
}
}
catch(Exception exception)
{