From 663d2080d14715602674f0afc2bd85b1438152d4 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Thu, 29 Jan 2004 11:23:36 +0000
Subject: [PATCH] Dirk Manske fixed a flaw in the setting of the socket to
 non-blocking

---
 ares/CHANGES        | 4 ++++
 ares/ares_process.c | 6 ++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/ares/CHANGES b/ares/CHANGES
index 14c806c6af..d01629fbf2 100644
--- a/ares/CHANGES
+++ b/ares/CHANGES
@@ -5,6 +5,10 @@ doesn't want these improvements.
 The package is called 'c-ares' for now since I (Daniel Stenberg) want this for
 use within the curl project (hence the letter C) and it makes a nice pun.
 
+* January 29, 2004:
+
+- Dirk Manske fixed how the socket is set non-blocking.
+
 * January 4, 2004:
 
 - Dominick Meglio made the private gettimeofday() become ares_gettimeofday()
diff --git a/ares/ares_process.c b/ares/ares_process.c
index ee9623ac5a..b90049e605 100644
--- a/ares/ares_process.c
+++ b/ares/ares_process.c
@@ -464,12 +464,14 @@ static int open_tcp_socket(ares_channel channel, struct server_state *server)
   flags = 1;
   ioctlsocket(s, FIONBIO, &flags);
 #else
-  if (fcntl(s, F_GETFL, &flags) == -1)
+  flags = fcntl(s, F_GETFL, 0);
+
+  if (flags == -1)
     {
       close(s);
       return -1;
     }
-  flags &= O_NONBLOCK;
+  flags |= O_NONBLOCK;
   if (fcntl(s, F_SETFL, flags) == -1)
     {
       close(s);
-- 
GitLab