diff --git a/ares/ares_getnameinfo.c b/ares/ares_getnameinfo.c
index 3b8ca1dcb1f8cfb33b71f634b4f83fb761d46c88..4eeed94cd46ce4b990d5da69f1d0dda93e0e71c5 100644
--- a/ares/ares_getnameinfo.c
+++ b/ares/ares_getnameinfo.c
@@ -22,6 +22,7 @@
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <netdb.h>
+#include <arpa/inet.h>
 #include <arpa/nameser.h>
 #ifdef HAVE_ARPA_NAMESER_COMPAT_H
 #include <arpa/nameser_compat.h>
@@ -32,6 +33,10 @@
 #include <net/if.h>
 #endif
 
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -250,7 +255,7 @@ static char *lookup_service(unsigned short port, int flags, char *buf)
       else
         {
           struct servent *se;
-          char *proto;
+          const char *proto;
  
           if (flags & ARES_NI_UDP)
             proto = "udp";
@@ -319,7 +324,7 @@ static char *ares_striendstr(const char *s1, const char *s2)
           c2++;
         }
     }
-  if (c2 == c1 == NULL)
+  if (c2 == c1 && c2 == NULL)
     return (char *)c1_begin;
   return NULL;
 }