From c2c800d8639b1f34a89548e6c26e6d805036dfdc Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Thu, 30 Oct 2008 19:02:23 +0000 Subject: [PATCH] Move curl_dofreeaddrinfo() and curl_dofreeaddrinfo() implementation from lib/hostip6.c to lib/curl_addrinfo.c and prototypes from lib/hostip.h to lib/curl_addrinfo.h --- lib/curl_addrinfo.c | 54 +++++++++++++++++++++++++++++++++++++++++++++ lib/curl_addrinfo.h | 16 ++++++++++++++ lib/hostip.h | 10 +-------- lib/hostip6.c | 35 +++-------------------------- lib/memdebug.h | 6 ++++- 5 files changed, 79 insertions(+), 42 deletions(-) diff --git a/lib/curl_addrinfo.c b/lib/curl_addrinfo.c index ce6780c4cb9897..1e281347b80689 100644 --- a/lib/curl_addrinfo.c +++ b/lib/curl_addrinfo.c @@ -329,3 +329,57 @@ Curl_he2ai(const struct hostent *he, int port) return firstai; } + +#if defined(CURLDEBUG) && defined(HAVE_FREEADDRINFO) +/* + * curl_dofreeaddrinfo() + * + * This is Strictly for memory tracing and are using the same style as the + * family otherwise present in memdebug.c. I put these ones here since they + * require a bunch of structs I didn't wanna include in memdebug.c + */ + +void +curl_dofreeaddrinfo(struct addrinfo *freethis, + int line, const char *source) +{ + (freeaddrinfo)(freethis); + if(logfile) + fprintf(logfile, "ADDR %s:%d freeaddrinfo(%p)\n", + source, line, (void *)freethis); +} +#endif /* defined(CURLDEBUG) && defined(HAVE_FREEADDRINFO) */ + + +#if defined(CURLDEBUG) && defined(HAVE_GETADDRINFO) +/* + * curl_dogetaddrinfo() + * + * This is Strictly for memory tracing and are using the same style as the + * family otherwise present in memdebug.c. I put these ones here since they + * require a bunch of structs I didn't wanna include in memdebug.c + */ + +int +curl_dogetaddrinfo(const char *hostname, + const char *service, + const struct addrinfo *hints, + struct addrinfo **result, + int line, const char *source) +{ + int res=(getaddrinfo)(hostname, service, hints, result); + if(0 == res) { + /* success */ + if(logfile) + fprintf(logfile, "ADDR %s:%d getaddrinfo() = %p\n", + source, line, (void *)*result); + } + else { + if(logfile) + fprintf(logfile, "ADDR %s:%d getaddrinfo() failed\n", + source, line); + } + return res; +} +#endif /* defined(CURLDEBUG) && defined(HAVE_GETADDRINFO) */ + diff --git a/lib/curl_addrinfo.h b/lib/curl_addrinfo.h index 583f3d082ca975..f6456f96560c0b 100644 --- a/lib/curl_addrinfo.h +++ b/lib/curl_addrinfo.h @@ -78,4 +78,20 @@ Curl_getaddrinfo_ex(const char *nodename, Curl_addrinfo * Curl_he2ai(const struct hostent *he, int port); + +#if defined(CURLDEBUG) && defined(HAVE_FREEADDRINFO) +void +curl_dofreeaddrinfo(struct addrinfo *freethis, + int line, const char *source); +#endif + +#if defined(CURLDEBUG) && defined(HAVE_GETADDRINFO) +int +curl_dogetaddrinfo(const char *hostname, + const char *service, + const struct addrinfo *hints, + struct addrinfo **result, + int line, const char *source); +#endif + #endif /* HEADER_CURL_ADDRINFO_H */ diff --git a/lib/hostip.h b/lib/hostip.h index 1d43a938b114f8..2d892b85aa45ba 100644 --- a/lib/hostip.h +++ b/lib/hostip.h @@ -197,14 +197,7 @@ void Curl_hostcache_prune(struct SessionHandle *data); /* Return # of adresses in a Curl_addrinfo struct */ int Curl_num_addresses (const Curl_addrinfo *addr); -#ifdef CURLDEBUG -void curl_dofreeaddrinfo(struct addrinfo *freethis, - int line, const char *source); -int curl_dogetaddrinfo(const char *hostname, const char *service, - struct addrinfo *hints, - struct addrinfo **result, - int line, const char *source); -#ifdef HAVE_GETNAMEINFO +#if defined(CURLDEBUG) && defined(HAVE_GETNAMEINFO) int curl_dogetnameinfo(GETNAMEINFO_QUAL_ARG1 GETNAMEINFO_TYPE_ARG1 sa, GETNAMEINFO_TYPE_ARG2 salen, char *host, GETNAMEINFO_TYPE_ARG46 hostlen, @@ -212,7 +205,6 @@ int curl_dogetnameinfo(GETNAMEINFO_QUAL_ARG1 GETNAMEINFO_TYPE_ARG1 sa, GETNAMEINFO_TYPE_ARG7 flags, int line, const char *source); #endif -#endif /* This is the callback function that is used when we build with asynch resolve, ipv4 */ diff --git a/lib/hostip6.c b/lib/hostip6.c index 7269e6100583d6..833e50b931a36a 100644 --- a/lib/hostip6.c +++ b/lib/hostip6.c @@ -93,36 +93,17 @@ Curl_addrinfo *Curl_addrinfo_copy(const void *orig, int port) #endif /* CURLRES_ASYNCH */ #endif /* CURLRES_ARES */ -#ifdef CURLDEBUG +#if defined(CURLDEBUG) && defined(HAVE_GETNAMEINFO) /* These are strictly for memory tracing and are using the same style as the * family otherwise present in memdebug.c. I put these ones here since they * require a bunch of structs I didn't wanna include in memdebug.c */ -int curl_dogetaddrinfo(const char *hostname, const char *service, - struct addrinfo *hints, - struct addrinfo **result, - int line, const char *source) -{ - int res=(getaddrinfo)(hostname, service, hints, result); - if(0 == res) { - /* success */ - if(logfile) - fprintf(logfile, "ADDR %s:%d getaddrinfo() = %p\n", - source, line, (void *)*result); - } - else { - if(logfile) - fprintf(logfile, "ADDR %s:%d getaddrinfo() failed\n", - source, line); - } - return res; -} /* * For CURLRES_ARS, this should be written using ares_gethostbyaddr() * (ignoring the fact c-ares doesn't return 'serv'). */ -#ifdef HAVE_GETNAMEINFO + int curl_dogetnameinfo(GETNAMEINFO_QUAL_ARG1 GETNAMEINFO_TYPE_ARG1 sa, GETNAMEINFO_TYPE_ARG2 salen, char *host, GETNAMEINFO_TYPE_ARG46 hostlen, @@ -147,17 +128,7 @@ int curl_dogetnameinfo(GETNAMEINFO_QUAL_ARG1 GETNAMEINFO_TYPE_ARG1 sa, } return res; } -#endif - -void curl_dofreeaddrinfo(struct addrinfo *freethis, - int line, const char *source) -{ - (freeaddrinfo)(freethis); - if(logfile) - fprintf(logfile, "ADDR %s:%d freeaddrinfo(%p)\n", - source, line, (void *)freethis); -} -#endif /* CURLDEBUG */ +#endif /* defined(CURLDEBUG) && defined(HAVE_GETNAMEINFO) */ /* * Curl_ipvalid() checks what CURL_IPRESOLVE_* requirements that might've diff --git a/lib/memdebug.h b/lib/memdebug.h index 8bfcc63b3fc96b..3ed9116358b093 100644 --- a/lib/memdebug.h +++ b/lib/memdebug.h @@ -89,6 +89,7 @@ CURL_EXTERN int curl_fclose(FILE *file, int line, const char *source); #define accept(sock,addr,len)\ curl_accept(sock,addr,len,__LINE__,__FILE__) +#ifdef HAVE_GETADDRINFO #if defined(getaddrinfo) && defined(__osf__) /* OSF/1 and Tru64 have getaddrinfo as a define already, so we cannot define our macro as for other platforms. Instead, we redefine the new name they @@ -100,17 +101,20 @@ CURL_EXTERN int curl_fclose(FILE *file, int line, const char *source); #define getaddrinfo(host,serv,hint,res) \ curl_dogetaddrinfo(host,serv,hint,res,__LINE__,__FILE__) #endif +#endif /* HAVE_GETADDRINFO */ #ifdef HAVE_GETNAMEINFO #undef getnameinfo #define getnameinfo(sa,salen,host,hostlen,serv,servlen,flags) \ curl_dogetnameinfo(sa,salen,host,hostlen,serv,servlen,flags, __LINE__, \ __FILE__) -#endif +#endif /* HAVE_GETNAMEINFO */ +#ifdef HAVE_FREEADDRINFO #undef freeaddrinfo #define freeaddrinfo(data) \ curl_dofreeaddrinfo(data,__LINE__,__FILE__) +#endif /* HAVE_FREEADDRINFO */ /* sclose is probably already defined, redefine it! */ #undef sclose