if (len >= bufsize) {
rprintf(FERROR, "over-long vstring received (%d > %d)\n",
len, bufsize - 1);
- exit_cleanup(RERR_PROTOCOL);
+ return -1;
}
if (len)
{
size_t n, total = 0;
fd_set w_fds, r_fds;
- int maxfd, count, ret;
+ int maxfd, count, ret, using_r_fds;
struct timeval tv;
no_flush++;
FD_SET(msg_fd_in,&r_fds);
if (msg_fd_in > maxfd)
maxfd = msg_fd_in;
- }
+ using_r_fds = 1;
+ } else
+ using_r_fds = 0;
if (fd != sock_f_out && iobuf_out_cnt && no_flush == 1) {
FD_SET(sock_f_out, &w_fds);
if (sock_f_out > maxfd)
tv.tv_usec = 0;
errno = 0;
- count = select(maxfd + 1, msg_fd_in >= 0 ? &r_fds : NULL,
+ count = select(maxfd + 1, using_r_fds ? &r_fds : NULL,
&w_fds, NULL, &tv);
if (count <= 0) {
continue;
}
- if (msg_fd_in >= 0 && FD_ISSET(msg_fd_in, &r_fds))
+ if (using_r_fds && FD_ISSET(msg_fd_in, &r_fds))
read_msg_fd();
- if (!FD_ISSET(fd, &w_fds)) {
- if (fd != sock_f_out && iobuf_out_cnt) {
- no_flush--;
- io_flush(NORMAL_FLUSH);
- no_flush++;
- }
+ if (!FD_ISSET(fd, &w_fds))
continue;
- }
n = len - total;
if (bwlimit && n > bwlimit_writemax)