summaryrefslogtreecommitdiff
path: root/ares/ares_process.c
diff options
context:
space:
mode:
Diffstat (limited to 'ares/ares_process.c')
-rw-r--r--ares/ares_process.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/ares/ares_process.c b/ares/ares_process.c
index 9e5156e4e..4a88b76a8 100644
--- a/ares/ares_process.c
+++ b/ares/ares_process.c
@@ -16,27 +16,33 @@
#include "setup.h"
#include <sys/types.h>
-#ifdef WIN32
+#if defined(WIN32) && !defined(WATT32)
#include "nameser.h"
+
#else
#include <sys/socket.h>
+#ifdef HAVE_SYS_UIO_H
#include <sys/uio.h>
+#endif
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/nameser.h>
+#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#endif
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <time.h>
#include <errno.h>
+
#include "ares.h"
#include "ares_dns.h"
#include "ares_private.h"
-#ifdef WIN32
+#if defined(WIN32) || defined(WATT32)
#define GET_ERRNO() WSAGetLastError()
#else
#define GET_ERRNO() errno
@@ -234,7 +240,8 @@ static void read_tcp_data(ares_channel channel, fd_set *read_fds, time_t now)
*/
process_answer(channel, server->tcp_buffer, server->tcp_length,
i, 1, now);
- free(server->tcp_buffer);
+ if (server->tcp_buffer)
+ free(server->tcp_buffer);
server->tcp_buffer = NULL;
server->tcp_lenbuf_pos = 0;
}