*pconduit = FR_CONDUIT_WANT_MORE;
r = lo_read(fd, buffer + offset, sizeof(hdr) - offset);
- if (r <= 0) return r;
+ if (r == 0) return 0; /* closed */
+
+ if (r < 0) {
+#ifdef EWOULDBLOCK
+ if (errno == EWOULDBLOCK) return 0;
+#endif
+#ifdef EAGAIN
+ if (errno == EAGAIN) return 0;
+#endif
+
+ return r;
+ }
*leftover += r;
offset += r;
*/
data_size = fr_conduit_read_async(inst->sockfd, &conduit, buffer, buffer_len, leftover);
if (data_size < 0) {
-#ifdef EWOULDBLOCK
- if (errno == EWOULDBLOCK) return 0;
-#endif
-#ifdef EAGAIN
- if (errno == EAGAIN) return 0;
-#endif
-
DEBUG2("proto_control_unix got read error %zd: %s", data_size, fr_strerror());
return data_size;
}