Important Update:
- SelectableCore: - Skip IP address "0.0.0.0" when resolving localhost
This commit is contained in:
@@ -575,11 +575,13 @@ bool CSelectableCore::ResolveAddress( THandle * Handle )
|
|||||||
int result;
|
int result;
|
||||||
|
|
||||||
// Check if more addresses
|
// Check if more addresses
|
||||||
if (Handle->AddressInfo && Handle->AddressInfo->ai_next)
|
if (Handle->AddressInfo)
|
||||||
{
|
Handle->AddressInfo = Handle->AddressInfo->ai_next;
|
||||||
// Set next address
|
if (Handle->AddressInfo && !strcmp( inet_ntoa(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_addr), "0.0.0.0" ))
|
||||||
Handle->AddressInfo = Handle->AddressInfo->ai_next;
|
Handle->AddressInfo = Handle->AddressInfo->ai_next;
|
||||||
|
|
||||||
|
// Return address
|
||||||
|
if (Handle->AddressInfo) {
|
||||||
if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Use next resolved Address [%s:%s]->[%s:%u]",
|
if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Use next resolved Address [%s:%s]->[%s:%u]",
|
||||||
Name, Handle->Name, Handle->HostName, Handle->PortName,
|
Name, Handle->Name, Handle->HostName, Handle->PortName,
|
||||||
inet_ntoa(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_addr),
|
inet_ntoa(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_addr),
|
||||||
@@ -610,9 +612,20 @@ bool CSelectableCore::ResolveAddress( THandle * Handle )
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Select first address
|
// Select first address, skip "0.0.0.0"
|
||||||
Handle->AddressInfo = Handle->AddressList;
|
Handle->AddressInfo = Handle->AddressList;
|
||||||
|
if (!strcmp( inet_ntoa(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_addr), "0.0.0.0" ))
|
||||||
|
Handle->AddressInfo = Handle->AddressInfo->ai_next;
|
||||||
|
if (!Handle->AddressInfo) {
|
||||||
|
if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Failed to resolve Host Name [%s:%s] (%s)",
|
||||||
|
Name, Handle->Name, Handle->HostName, Handle->PortName, gai_strerror(result) );
|
||||||
|
freeaddrinfo( Handle->AddressList );
|
||||||
|
Handle->AddressList = NULL;
|
||||||
|
Handle->AddressInfo = NULL;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return address
|
||||||
if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Host name resolved [%s:%s]->[%s:%u]",
|
if (Log) Log->Message( LogLevel, dlMedium, "%s: Handle '%s' - Host name resolved [%s:%s]->[%s:%u]",
|
||||||
Name, Handle->Name, Handle->HostName, Handle->PortName,
|
Name, Handle->Name, Handle->HostName, Handle->PortName,
|
||||||
inet_ntoa(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_addr),
|
inet_ntoa(((struct sockaddr_in *)Handle->AddressInfo->ai_addr)->sin_addr),
|
||||||
|
|||||||
Reference in New Issue
Block a user