$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;