diff --git a/ares/ares_private.h b/ares/ares_private.h
index 123c96a0c27938da4c9755238bebb0feaa2e376a..7a755e00460d91772601130e0ed647896ecb37cb 100644
--- a/ares/ares_private.h
+++ b/ares/ares_private.h
@@ -57,7 +57,7 @@
 struct send_request {
   /* Remaining data to send */
   const unsigned char *data;
-  int len;
+  size_t len;
 
   /* Next request in queue */
   struct send_request *next;
diff --git a/ares/ares_process.c b/ares/ares_process.c
index b2661f73009c230cdaeb8d6004a45cd983c1110e..6a7585c0a174d9ef77975eaa800f197f3488f7e7 100644
--- a/ares/ares_process.c
+++ b/ares/ares_process.c
@@ -119,7 +119,7 @@ static void write_tcp_data(ares_channel channel, fd_set *write_fds, time_t now)
 	  while (count)
 	    {
 	      sendreq = server->qhead;
-	      if (count >= sendreq->len)
+	      if ((size_t)count >= sendreq->len)
 		{
 		  count -= sendreq->len;
 		  server->qhead = sendreq->next;
@@ -150,7 +150,7 @@ static void write_tcp_data(ares_channel channel, fd_set *write_fds, time_t now)
 	    }
 
 	  /* Advance the send queue by as many bytes as we sent. */
-	  if (count == sendreq->len)
+	  if ((size_t)count == sendreq->len)
 	    {
 	      server->qhead = sendreq->next;
 	      if (server->qhead == NULL)