|
@@ -171,10 +171,12 @@ pipe_drain(int fd)
|
|
|
{
|
|
|
char buf[32];
|
|
|
ssize_t r;
|
|
|
- while ((r = read_ni(fd, buf, sizeof(buf))) >= 0)
|
|
|
- ;
|
|
|
- if (r == 0 || errno != EAGAIN)
|
|
|
+ do {
|
|
|
+ r = read_ni(fd, buf, sizeof(buf));
|
|
|
+ } while (r > 0);
|
|
|
+ if (r < 0 && errno != EAGAIN)
|
|
|
return -1;
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
#endif
|
|
@@ -193,10 +195,12 @@ sock_drain(tor_socket_t fd)
|
|
|
{
|
|
|
char buf[32];
|
|
|
ssize_t r;
|
|
|
- while ((r = recv_ni(fd, buf, sizeof(buf), 0)) >= 0)
|
|
|
- ;
|
|
|
- if (r == 0 || !ERRNO_IS_EAGAIN(tor_socket_errno(fd)))
|
|
|
+ do {
|
|
|
+ r = recv_ni(fd, buf, sizeof(buf), 0);
|
|
|
+ } while (r > 0);
|
|
|
+ if (r < 0 && !ERRNO_IS_EAGAIN(tor_socket_errno(fd)))
|
|
|
return -1;
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|