summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/common')
-rw-r--r--src/common/socket.c7
-rw-r--r--src/common/socket.h6
2 files changed, 10 insertions, 3 deletions
diff --git a/src/common/socket.c b/src/common/socket.c
index a9a9c628b..dc8162ee1 100644
--- a/src/common/socket.c
+++ b/src/common/socket.c
@@ -1392,14 +1392,17 @@ bool session_isActive(int fd)
return ( session_isValid(fd) && !session[fd]->eof );
}
-in_addr_t resolve_hostbyname(char* hostname, char *ip) {
+in_addr_t resolve_hostbyname(char* hostname, unsigned char *ip, char *ip_str) {
struct hostent *h = gethostbyname(hostname);
- char ip_str[16];
+ unsigned char ip_buf[16];
+ char ip2[4];
if (!h) return 0;
+ if (ip == NULL) ip = ip2;
ip[0] = (unsigned char) h->h_addr[0];
ip[1] = (unsigned char) h->h_addr[1];
ip[2] = (unsigned char) h->h_addr[2];
ip[3] = (unsigned char) h->h_addr[3];
+ if (ip_str == NULL) ip_str = ip_buf;
sprintf(ip_str, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
return inet_addr(ip_str);
}
diff --git a/src/common/socket.h b/src/common/socket.h
index 4d8d36807..158759f9e 100644
--- a/src/common/socket.h
+++ b/src/common/socket.h
@@ -9,6 +9,7 @@
#ifdef __WIN32
#define __USE_W32_SOCKETS
#include <windows.h>
+typedef long in_addr_t;
#else
#include <sys/types.h>
#include <sys/socket.h>
@@ -157,7 +158,10 @@ void set_defaultconsoleparse(int (*defaultparse)(char*));
//Resolves the hostname and stores the string representation of the string in ip.
//Meant to simplify calls to gethostbyname without the need of all the
//required network includes.
-in_addr_t resolve_hostbyname(char* hostname, char *ip);
+//hostname is the name to resolve.
+//ip is an array of char[4] where the individual parts of the ip are stored (optional)
+//ip_str is a char[16] where the whole ip is stored in string notation (optional)
+in_addr_t resolve_hostbyname(char* hostname, unsigned char *ip, char *ip_str);
extern unsigned int addr_[16]; // ip addresses of local host (host byte order)
extern unsigned int naddr_; // # of ip addresses