Merge end-of-December changes from HEAD to u2_10_12_branch.
[ircu2.10.12-pk.git] / ircd / os_generic.c
index 72fba12f21ba657320e01d6ff4d841526bc2731d..1c6489b3a6cce1c20f8d1704c814a0dd427bae07 100644 (file)
@@ -450,9 +450,13 @@ IOResult os_recv_nonb(int fd, char* buf, unsigned int length,
   if (0 < (res = recv(fd, buf, length, 0))) {
     *count_out = (unsigned) res;
     return IO_SUCCESS;
+  } else if (res == 0) {
+    *count_out = 0;
+    errno = 0; /* or ECONNRESET? */
+    return IO_FAILURE;
   } else {
     *count_out = 0;
-    return (res < 0) && is_blocked(errno) ? IO_BLOCKED : IO_FAILURE;
+    return is_blocked(errno) ? IO_BLOCKED : IO_FAILURE;
   }
 }