blob: f3491201f3744d5ea509da4952c0297cc98fdf12 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
$NetBSD: patch-ah,v 1.3 2004/05/28 12:00:10 kivinen Exp $
--- lib/sshutil/sshsysutil/sshunixfdstream.c.orig 2003-12-03 15:17:31.000000000 +0200
+++ lib/sshutil/sshsysutil/sshunixfdstream.c
@@ -337,16 +337,21 @@ int ssh_stream_fd_write(void *context, c
if (sdata->writefd >= 0)
{
len = write(sdata->writefd, buf, size);
- if (len >= 0)
+ if (len > 0)
return len;
- if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR)
+ if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR ||
+ /* Special case for NetBSD 2.0, it may return len = 0 and errno = 0
+ which simply means, try again */
+ (len == 0 && errno == 0))
{
/* Cannot write more at this time. */
sdata->write_has_failed = TRUE;
ssh_stream_fd_request(sdata);
return -1;
}
+ else if (len == 0)
+ return 0;
/* A real error occurred while writing. */
sdata->write_has_failed = TRUE;
|