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