Ensure socket is nonblocking before draining. Bug 1914
[exim.git] / src / src / transports / smtp.c
index 6c6a102661f705ec37512e73f521b6af3acbcb35..d6ef34eff09d875678c5efcf26d54f0ac97485cb 100644 (file)
@@ -3168,8 +3168,9 @@ HDEBUG(D_transport|D_acl|D_v) debug_printf("  SMTP(close)>>\n");
 if (lflags.send_quit)
   {
   shutdown(outblock.sock, SHUT_WR);
-  for (rc = 16; read(inblock.sock, inbuffer, sizeof(inbuffer)) > 0 && rc > 0;)
-    rc--;                              /* drain socket */
+  if (fcntl(inblock.sock, F_SETFL, O_NONBLOCK) == 0)
+    for (rc = 16; read(inblock.sock, inbuffer, sizeof(inbuffer)) > 0 && rc > 0;)
+      rc--;                            /* drain socket */
   }
 (void)close(inblock.sock);