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 ec354c5fd..3d4a57479 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@
2 - (djm) [contrib/caldera/openssh.spec contrib/redhat/openssh.spec] 2 - (djm) [contrib/caldera/openssh.spec contrib/redhat/openssh.spec]
3 [contrib/suse/openssh.spec] Update for release 3 [contrib/suse/openssh.spec] Update for release
4 - (djm) [README] update relnotes URL 4 - (djm) [README] update relnotes URL
5 - (djm) [packet.c] Restore EWOULDBLOCK handling that got lost somewhere
5 6
620090911 720090911
7 - (dtucker) [configure.ac] Change the -lresolv check so it works on Mac OS X 8 - (dtucker) [configure.ac] Change the -lresolv check so it works on Mac OS X
diff --git a/packet.c b/packet.c
index 600e015fb..994e35b6d 100644
--- a/packet.c
+++ b/packet.c
@@ -1070,7 +1070,8 @@ packet_read_seqnr(u_int32_t *seqnr_p)
1070 if ((ret = select(active_state->connection_in + 1, setp, 1070 if ((ret = select(active_state->connection_in + 1, setp,
1071 NULL, NULL, timeoutp)) >= 0) 1071 NULL, NULL, timeoutp)) >= 0)
1072 break; 1072 break;
1073 if (errno != EAGAIN && errno != EINTR) 1073 if (errno != EAGAIN && errno != EINTR &&
1074 errno != EWOULDBLOCK)
1074 break; 1075 break;
1075 if (active_state->packet_timeout_ms == -1) 1076 if (active_state->packet_timeout_ms == -1)
1076 continue; 1077 continue;
@@ -1643,7 +1644,8 @@ packet_write_poll(void)
1643 len = roaming_write(active_state->connection_out, 1644 len = roaming_write(active_state->connection_out,
1644 buffer_ptr(&active_state->output), len, &cont); 1645 buffer_ptr(&active_state->output), len, &cont);
1645 if (len == -1) { 1646 if (len == -1) {
1646 if (errno == EINTR || errno == EAGAIN) 1647 if (errno == EINTR || errno == EAGAIN ||
1648 errno == EWOULDBLOCK)
1647 return; 1649 return;
1648 fatal("Write failed: %.100s", strerror(errno)); 1650 fatal("Write failed: %.100s", strerror(errno));
1649 } 1651 }
@@ -1685,7 +1687,8 @@ packet_write_wait(void)
1685 if ((ret = select(active_state->connection_out + 1, 1687 if ((ret = select(active_state->connection_out + 1,
1686 NULL, setp, NULL, timeoutp)) >= 0) 1688 NULL, setp, NULL, timeoutp)) >= 0)
1687 break; 1689 break;
1688 if (errno != EAGAIN && errno != EINTR) 1690 if (errno != EAGAIN && errno != EINTR &&
1691 errno != EWOULDBLOCK)
1689 break; 1692 break;
1690 if (active_state->packet_timeout_ms == -1) 1693 if (active_state->packet_timeout_ms == -1)
1691 continue; 1694 continue;