Loading ares/ares_gethostbyname.c +20 −119 Original line number Diff line number Diff line Loading @@ -116,7 +116,7 @@ static void next_lookup(struct host_query *hquery) { int status; const char *p; struct hostent *host = NULL; struct hostent *host; for (p = hquery->remaining_lookups; *p; p++) { Loading Loading @@ -151,7 +151,7 @@ static void host_callback(void *arg, int status, unsigned char *abuf, int alen) { struct host_query *hquery = (struct host_query *) arg; ares_channel channel = hquery->channel; struct hostent *host = NULL; struct hostent *host; if (status == ARES_SUCCESS) { Loading Loading @@ -242,86 +242,12 @@ static int fake_hostent(const char *name, int family, ares_host_callback callbac return 1; } static int add_host(struct hostent *hostent, struct hostent **host) { char **p; char **h_addr_list = NULL; struct hostent *hostptr = *host; int count = 0; int index = 0; if (hostptr == NULL) { *host = hostent; return 0; } for (p = hostptr->h_addr_list; *p; p++) { count++; } for (p = hostent->h_addr_list; *p; p++) { count++; } h_addr_list = malloc((count+1) * sizeof(char *)); if (!h_addr_list) { *host = NULL; return -1; } for (p = hostptr->h_addr_list; *p; p++) { h_addr_list[index] = malloc(sizeof(struct in_addr)); if (h_addr_list[index]) { memcpy(h_addr_list[index], *p, sizeof(struct in_addr)); } else { free(h_addr_list); return -1; } index++; } for(p = hostent->h_addr_list; *p; p++) { h_addr_list[index] = malloc(sizeof(struct in_addr)); if (h_addr_list[index]) { memcpy(h_addr_list[index], *p, sizeof(struct in_addr)); } else { free(h_addr_list); return -1; } index++; } h_addr_list[index] = NULL; for (p = hostptr->h_addr_list; *p; p++) { free(*p); } free(hostptr->h_addr_list); hostptr->h_addr_list = h_addr_list; return 0; } static int file_lookup(const char *name, int family, struct hostent **host) { FILE *fp; char **alias; int status; int error; int match; struct hostent *hostent = NULL; #ifdef WIN32 char PATH_HOSTS[MAX_PATH]; Loading Loading @@ -372,45 +298,20 @@ static int file_lookup(const char *name, int family, struct hostent **host) } while ((status = ares__get_hostent(fp, family, host)) == ARES_SUCCESS) { match = 0; hostent = *host; if (strcasecmp((*host)->h_name, name) == 0) { match = 1; } else { break; for (alias = (*host)->h_aliases; *alias; alias++) { if (strcasecmp(*alias, name) == 0) { match = 1; break; } } } if (match) { if(!add_host(hostent, host)) ares_free_hostent(hostent); else { *host = NULL; } } else { if (*alias) break; ares_free_hostent(*host); *host = NULL; } } fclose(fp); if (status == ARES_EOF) { if ( *host) status = ARES_SUCCESS; else status = ARES_ENOTFOUND; } if (status != ARES_SUCCESS) *host = NULL; return status; Loading Loading
ares/ares_gethostbyname.c +20 −119 Original line number Diff line number Diff line Loading @@ -116,7 +116,7 @@ static void next_lookup(struct host_query *hquery) { int status; const char *p; struct hostent *host = NULL; struct hostent *host; for (p = hquery->remaining_lookups; *p; p++) { Loading Loading @@ -151,7 +151,7 @@ static void host_callback(void *arg, int status, unsigned char *abuf, int alen) { struct host_query *hquery = (struct host_query *) arg; ares_channel channel = hquery->channel; struct hostent *host = NULL; struct hostent *host; if (status == ARES_SUCCESS) { Loading Loading @@ -242,86 +242,12 @@ static int fake_hostent(const char *name, int family, ares_host_callback callbac return 1; } static int add_host(struct hostent *hostent, struct hostent **host) { char **p; char **h_addr_list = NULL; struct hostent *hostptr = *host; int count = 0; int index = 0; if (hostptr == NULL) { *host = hostent; return 0; } for (p = hostptr->h_addr_list; *p; p++) { count++; } for (p = hostent->h_addr_list; *p; p++) { count++; } h_addr_list = malloc((count+1) * sizeof(char *)); if (!h_addr_list) { *host = NULL; return -1; } for (p = hostptr->h_addr_list; *p; p++) { h_addr_list[index] = malloc(sizeof(struct in_addr)); if (h_addr_list[index]) { memcpy(h_addr_list[index], *p, sizeof(struct in_addr)); } else { free(h_addr_list); return -1; } index++; } for(p = hostent->h_addr_list; *p; p++) { h_addr_list[index] = malloc(sizeof(struct in_addr)); if (h_addr_list[index]) { memcpy(h_addr_list[index], *p, sizeof(struct in_addr)); } else { free(h_addr_list); return -1; } index++; } h_addr_list[index] = NULL; for (p = hostptr->h_addr_list; *p; p++) { free(*p); } free(hostptr->h_addr_list); hostptr->h_addr_list = h_addr_list; return 0; } static int file_lookup(const char *name, int family, struct hostent **host) { FILE *fp; char **alias; int status; int error; int match; struct hostent *hostent = NULL; #ifdef WIN32 char PATH_HOSTS[MAX_PATH]; Loading Loading @@ -372,45 +298,20 @@ static int file_lookup(const char *name, int family, struct hostent **host) } while ((status = ares__get_hostent(fp, family, host)) == ARES_SUCCESS) { match = 0; hostent = *host; if (strcasecmp((*host)->h_name, name) == 0) { match = 1; } else { break; for (alias = (*host)->h_aliases; *alias; alias++) { if (strcasecmp(*alias, name) == 0) { match = 1; break; } } } if (match) { if(!add_host(hostent, host)) ares_free_hostent(hostent); else { *host = NULL; } } else { if (*alias) break; ares_free_hostent(*host); *host = NULL; } } fclose(fp); if (status == ARES_EOF) { if ( *host) status = ARES_SUCCESS; else status = ARES_ENOTFOUND; } if (status != ARES_SUCCESS) *host = NULL; return status; Loading