From f9d673dcf3e0f934afb684234938c83b68358679 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Wed, 4 Feb 2015 08:47:25 +0100 Subject: [PATCH] - now uses getaddrinfo in socket_linux.c --- src/hal/socket/linux/socket_linux.c | 31 +++++++++++++------ .../server/mms_named_variable_list_service.c | 2 -- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/hal/socket/linux/socket_linux.c b/src/hal/socket/linux/socket_linux.c index a206da8..430caa4 100644 --- a/src/hal/socket/linux/socket_linux.c +++ b/src/hal/socket/linux/socket_linux.c @@ -135,24 +135,35 @@ activateKeepAlive(int sd) static bool prepareServerAddress(const char* address, int port, struct sockaddr_in* sockaddr) { + bool retVal = true; - memset((char *) sockaddr , 0, sizeof(struct sockaddr_in)); + memset((char *) sockaddr, 0, sizeof(struct sockaddr_in)); - if (address != NULL) { - struct hostent *server; - server = gethostbyname(address); + if (address != NULL) { + struct addrinfo addr_hints; + struct addrinfo *lookup_result; + int result; - if (server == NULL) return false; + memset(&addr_hints, 0, sizeof(struct addrinfo)); + addr_hints.ai_family = AF_INET; + result = getaddrinfo(address, NULL, &addr_hints, &lookup_result); - memcpy((char *) &sockaddr->sin_addr.s_addr, (char *) server->h_addr, server->h_length); - } - else - sockaddr->sin_addr.s_addr = htonl(INADDR_ANY); + if (result != 0) { + retVal = false; + goto exit_function; + } + + memcpy(sockaddr, lookup_result->ai_addr, sizeof(struct sockaddr_in)); + freeaddrinfo(lookup_result); + } + else + sockaddr->sin_addr.s_addr = htonl(INADDR_ANY); sockaddr->sin_family = AF_INET; sockaddr->sin_port = htons(port); - return true; +exit_function: + return retVal; } static void diff --git a/src/mms/iso_mms/server/mms_named_variable_list_service.c b/src/mms/iso_mms/server/mms_named_variable_list_service.c index c0325cc..d52ab00 100644 --- a/src/mms/iso_mms/server/mms_named_variable_list_service.c +++ b/src/mms/iso_mms/server/mms_named_variable_list_service.c @@ -541,8 +541,6 @@ mmsServer_handleGetNamedVariableListAttributesRequest( StringUtils_createStringFromBufferInBuffer(listName, request->choice.aaspecific.buf, request->choice.aaspecific.size); - MmsDevice* mmsDevice = MmsServer_getDevice(connection->server); - MmsNamedVariableList varList = MmsServerConnection_getNamedVariableList(connection, listName); if (varList != NULL)