|
Lines 1446-1459
static int
Link Here
|
| 1446 |
channel_handle_rfd(Channel *c, fd_set *readset, fd_set *writeset) |
1446 |
channel_handle_rfd(Channel *c, fd_set *readset, fd_set *writeset) |
| 1447 |
{ |
1447 |
{ |
| 1448 |
char buf[CHAN_RBUF]; |
1448 |
char buf[CHAN_RBUF]; |
| 1449 |
int len; |
1449 |
int len, force; |
| 1450 |
|
1450 |
|
| 1451 |
if (c->rfd != -1 && |
1451 |
force = c->isatty && c->detach_close && c->istate != CHAN_INPUT_CLOSED; |
| 1452 |
(c->detach_close || FD_ISSET(c->rfd, readset))) { |
1452 |
if (c->rfd != -1 && (force || FD_ISSET(c->rfd, readset))) { |
| 1453 |
errno = 0; |
1453 |
errno = 0; |
| 1454 |
len = read(c->rfd, buf, sizeof(buf)); |
1454 |
len = read(c->rfd, buf, sizeof(buf)); |
| 1455 |
if (len < 0 && (errno == EINTR || |
1455 |
if (len < 0 && (errno == EINTR || (errno == EAGAIN && !force))) |
| 1456 |
(errno == EAGAIN && !(c->isatty && c->detach_close)))) |
|
|
| 1457 |
return 1; |
1456 |
return 1; |
| 1458 |
#ifndef PTY_ZEROREAD |
1457 |
#ifndef PTY_ZEROREAD |
| 1459 |
if (len <= 0) { |
1458 |
if (len <= 0) { |