summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2009-09-26 14:53:59 +1000
committerDamien Miller <djm@mindrot.org>2009-09-26 14:53:59 +1000
commit78e5bf0ab3e8d7f8aabf547880160cc39ae59574 (patch)
treef86fffcee972c422e37fa9fe42a2831211700b8d
parent6e0d6d64b2100fbe0ea7bb0010fe51b2224d74ee (diff)
- (djm) [packet.c] Restore EWOULDBLOCK handling that got lost somewhere
-rw-r--r--ChangeLog1
-rw-r--r--packet.c9
2 files changed, 7 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index ec354c5f..3d4a5747 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@
- (djm) [contrib/caldera/openssh.spec contrib/redhat/openssh.spec]
[contrib/suse/openssh.spec] Update for release
- (djm) [README] update relnotes URL
+ - (djm) [packet.c] Restore EWOULDBLOCK handling that got lost somewhere
20090911
- (dtucker) [configure.ac] Change the -lresolv check so it works on Mac OS X
diff --git a/packet.c b/packet.c
index 600e015f..994e35b6 100644
--- a/packet.c
+++ b/packet.c
@@ -1070,7 +1070,8 @@ packet_read_seqnr(u_int32_t *seqnr_p)
if ((ret = select(active_state->connection_in + 1, setp,
NULL, NULL, timeoutp)) >= 0)
break;
- if (errno != EAGAIN && errno != EINTR)
+ if (errno != EAGAIN && errno != EINTR &&
+ errno != EWOULDBLOCK)
break;
if (active_state->packet_timeout_ms == -1)
continue;
@@ -1643,7 +1644,8 @@ packet_write_poll(void)
len = roaming_write(active_state->connection_out,
buffer_ptr(&active_state->output), len, &cont);
if (len == -1) {
- if (errno == EINTR || errno == EAGAIN)
+ if (errno == EINTR || errno == EAGAIN ||
+ errno == EWOULDBLOCK)
return;
fatal("Write failed: %.100s", strerror(errno));
}
@@ -1685,7 +1687,8 @@ packet_write_wait(void)
if ((ret = select(active_state->connection_out + 1,
NULL, setp, NULL, timeoutp)) >= 0)
break;
- if (errno != EAGAIN && errno != EINTR)
+ if (errno != EAGAIN && errno != EINTR &&
+ errno != EWOULDBLOCK)
break;
if (active_state->packet_timeout_ms == -1)
continue;