version 1.348, 2015/10/15 23:51:40 |
version 1.349, 2016/02/05 13:28:19 |
|
|
if (buffer_len(&c->input) < need) { |
if (buffer_len(&c->input) < need) { |
rlen = need - buffer_len(&c->input); |
rlen = need - buffer_len(&c->input); |
len = read(c->rfd, buf, MIN(rlen, CHAN_RBUF)); |
len = read(c->rfd, buf, MIN(rlen, CHAN_RBUF)); |
|
if (len < 0 && (errno == EINTR || errno == EAGAIN)) |
|
return buffer_len(&c->input); |
if (len <= 0) { |
if (len <= 0) { |
if (errno != EINTR && errno != EAGAIN) { |
debug2("channel %d: ctl read<=0 rfd %d len %d", |
debug2("channel %d: ctl read<=0 rfd %d len %d", |
c->self, c->rfd, len); |
c->self, c->rfd, len); |
chan_read_failed(c); |
chan_read_failed(c); |
return 0; |
return 0; |
|
} |
|
} else |
} else |
buffer_append(&c->input, buf, len); |
buffer_append(&c->input, buf, len); |
} |
} |