From: Alan T. DeKok Date: Thu, 21 Jun 2018 19:24:48 +0000 (-0400) Subject: move handling of EWOUILDBLOCK to conduit code X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5b2445e6224e509c9002d5119a932f229a41300a;p=thirdparty%2Ffreeradius-server.git move handling of EWOUILDBLOCK to conduit code --- diff --git a/src/modules/proto_control/conduit.c b/src/modules/proto_control/conduit.c index 42f590f749b..6712a131712 100644 --- a/src/modules/proto_control/conduit.c +++ b/src/modules/proto_control/conduit.c @@ -78,7 +78,18 @@ ssize_t fr_conduit_read_async(int fd, fr_conduit_type_t *pconduit, void *out, si *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; diff --git a/src/modules/proto_control/proto_control_unix.c b/src/modules/proto_control/proto_control_unix.c index beb542a8c9a..35eb2bfe5cc 100644 --- a/src/modules/proto_control/proto_control_unix.c +++ b/src/modules/proto_control/proto_control_unix.c @@ -177,13 +177,6 @@ static ssize_t mod_read(void *instance, void **packet_ctx, fr_time_t **recv_time */ 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; }