summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--channels.c9
-rw-r--r--debian/changelog3
2 files changed, 7 insertions, 5 deletions
diff --git a/channels.c b/channels.c
index 530c0d460..6b0fb0b71 100644
--- a/channels.c
+++ b/channels.c
@@ -1446,14 +1446,13 @@ static int
1446channel_handle_rfd(Channel *c, fd_set *readset, fd_set *writeset) 1446channel_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) {
diff --git a/debian/changelog b/debian/changelog
index 95a7c741b..7ffc040da 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -12,6 +12,9 @@ openssh (1:4.6p1-2) UNRELEASED; urgency=low
12 * Add try-restart action to init script. 12 * Add try-restart action to init script.
13 * Add /etc/network/if-up.d/openssh-server to restart sshd when new 13 * Add /etc/network/if-up.d/openssh-server to restart sshd when new
14 interfaces appear (LP: #103436). 14 interfaces appear (LP: #103436).
15 * Backport from upstream:
16 - Silence spurious error messages from hang-on-exit fix
17 (http://bugzilla.mindrot.org/show_bug.cgi?id=1306, closes: #429531).
15 18
16 -- Colin Watson <cjwatson@debian.org> Wed, 13 Jun 2007 00:56:45 +0100 19 -- Colin Watson <cjwatson@debian.org> Wed, 13 Jun 2007 00:56:45 +0100
17 20