aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xinclude/asterisk/utils.h3
-rwxr-xr-xutils.c6
2 files changed, 9 insertions, 0 deletions
diff --git a/include/asterisk/utils.h b/include/asterisk/utils.h
index e6e4e6f79..9a3b57329 100755
--- a/include/asterisk/utils.h
+++ b/include/asterisk/utils.h
@@ -32,6 +32,9 @@ extern int test_for_thread_safety(void);
extern const char *ast_inet_ntoa(char *buf, int bufsiz, struct in_addr ia);
extern int ast_utils_init(void);
+#ifdef inet_ntoa
+#undef inet_ntoa
+#endif
#define inet_ntoa __dont__use__inet_ntoa__use__ast_inet_ntoa__instead__
#endif
diff --git a/utils.c b/utils.c
index 45be32230..63aca4521 100755
--- a/utils.c
+++ b/utils.c
@@ -14,6 +14,7 @@
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
+#include <netinet/in.h>
#include <arpa/inet.h>
#include <asterisk/lock.h>
#include <asterisk/utils.h>
@@ -29,6 +30,7 @@ static char b2a[256];
AST_MUTEX_DEFINE_STATIC(__mutex);
+/* Recursive replacement for gethostbyname for BSD-based systems */
static int gethostbyname_r (const char *name, struct hostent *ret, char *buf,
size_t buflen, struct hostent **result,
int *h_errnop)
@@ -126,6 +128,9 @@ static int gethostbyname_r (const char *name, struct hostent *ret, char *buf,
#endif
+/* Recursive thread safe version of gethostbyname that replaces the
+ standard gethostbyname (which is not recursive)
+*/
struct hostent *ast_gethostbyname(const char *host, struct ast_hostent *hp)
{
int res;
@@ -328,6 +333,7 @@ static void base64_init(void)
#endif
}
+/* Recursive thread safe replacement of inet_ntoa */
const char *ast_inet_ntoa(char *buf, int bufsiz, struct in_addr ia)
{
return inet_ntop(AF_INET, &ia, buf, bufsiz);