summaryrefslogtreecommitdiff
path: root/security/ssh2/patches/patch-ah
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;