replaced gethostbyname with getaddrinfo as it is not thread safe

This commit is contained in:
Dhanya Maliakal 2017-11-10 16:30:38 +01:00
parent fb0afc282d
commit 739187943d

View File

@ -6316,13 +6316,15 @@ int slsDetector::setUDPConnection(){
strcpy(thisDetector->receiverUDPIP,thisDetector->receiver_hostname); strcpy(thisDetector->receiverUDPIP,thisDetector->receiver_hostname);
//if hostname not ip, convert it to ip //if hostname not ip, convert it to ip
else{ else{
struct hostent *he = gethostbyname(thisDetector->receiver_hostname); struct addrinfo *result;
if (he == NULL){ if (!dataSocket->ConvertHostnameToInternetAddress(thisDetector->receiver_hostname, &result)) {
cout<<"rx_hostname:"<<thisDetector->receiver_hostname<<endl; // on success
std::cout << "no rx_udpip given and could not convert receiver hostname to ip" << endl; memset(thisDetector->receiverUDPIP, 0, MAX_STR_LENGTH);
return FAIL; // on failure, back to none
}else if (dataSocket->ConvertInternetAddresstoIpString(result, thisDetector->receiverUDPIP, MAX_STR_LENGTH)) {
strcpy(thisDetector->receiverUDPIP,inet_ntoa(*(struct in_addr*)he->h_addr)); strcpy(thisDetector->receiverUDPIP, "none");
}
}
} }
} }
@ -6379,7 +6381,6 @@ int slsDetector::configureMAC(){
char arg[6][50]={"","","","","",""}; char arg[6][50]={"","","","","",""};
int retval=-1; int retval=-1;
//if udpip wasnt initialized in config file //if udpip wasnt initialized in config file
if(!(strcmp(thisDetector->receiverUDPIP,"none"))){ if(!(strcmp(thisDetector->receiverUDPIP,"none"))){
//hostname is an ip address //hostname is an ip address
@ -6387,13 +6388,14 @@ int slsDetector::configureMAC(){
strcpy(thisDetector->receiverUDPIP,thisDetector->receiver_hostname); strcpy(thisDetector->receiverUDPIP,thisDetector->receiver_hostname);
//if hostname not ip, convert it to ip //if hostname not ip, convert it to ip
else{ else{
struct hostent *he = gethostbyname(thisDetector->receiver_hostname); struct addrinfo *result;
if (he != NULL) if (!dataSocket->ConvertHostnameToInternetAddress(thisDetector->receiver_hostname, &result)) {
strcpy(thisDetector->receiverUDPIP,inet_ntoa(*(struct in_addr*)he->h_addr)); // on success
else{ memset(thisDetector->receiverUDPIP, 0, MAX_STR_LENGTH);
std::cout << "configure mac failed. no rx_udpip given and invalid receiver hostname" << endl; // on failure, back to none
setErrorMask((getErrorMask())|(COULD_NOT_CONFIGURE_MAC)); if (dataSocket->ConvertInternetAddresstoIpString(result, thisDetector->receiverUDPIP, MAX_STR_LENGTH)) {
return FAIL; strcpy(thisDetector->receiverUDPIP, "none");
}
} }
} }
} }