Fixed resolve type-conversion issue

This commit is contained in:
Kenny Lam 2017-10-25 00:30:23 +08:00
parent c6cd29dd6f
commit 6f3eba419e

View File

@ -795,6 +795,17 @@ int server_on_raw_recv_ready(conn_info_t &conn_info,char * ip_port,char type,cha
tmp_conv_id); tmp_conv_id);
return 0; return 0;
} }
struct hostent *he;
if ( (he = gethostbyname(remote_host) ) == NULL ) {
mylog(log_warn,"Unable to resolve hostname: %s, remote ip wasn't updated.\n",remote_host);
} else {
struct in_addr **addr_list = (struct in_addr **)he->h_addr_list;
if ((*addr_list[0]).s_addr!=remote_ip_uint32) {
remote_ip_uint32=(*addr_list[0]).s_addr;
mylog(log_info,"Updated remote ip '%s' as resolved result of '%s'\n",my_ntoa(remote_ip_uint32),remote_host);
}
}
struct sockaddr_in remote_addr_in={0}; struct sockaddr_in remote_addr_in={0};
socklen_t slen = sizeof(sockaddr_in); socklen_t slen = sizeof(sockaddr_in);
@ -1617,7 +1628,8 @@ int main(int argc, char *argv[])
mylog(log_error,"Unable to resolve hostname: %s\n",remote_host); mylog(log_error,"Unable to resolve hostname: %s\n",remote_host);
exit(1); /* error */ exit(1); /* error */
} }
remote_ip_uint32=inet_addr(he->h_addr_list[0]); struct in_addr **addr_list = (struct in_addr **)he->h_addr_list;
remote_ip_uint32=(*addr_list[0]).s_addr;
local_ip_uint32=inet_addr(local_ip); local_ip_uint32=inet_addr(local_ip);
source_ip_uint32=inet_addr(source_ip); source_ip_uint32=inet_addr(source_ip);