- (djm) OpenBSD CVS Sync
   - djm@cvs.openbsd.org     2001/03/19 03:52:51
     [sftp-client.c]
     Report ssh connection closing correctly; ok deraadt@
diff --git a/ChangeLog b/ChangeLog
index e09afd6..43f8080 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,10 @@
    stuff.  Change suggested by Mark Miller <markm@swoon.net>
  - (bal) Small fix to scp.  %lu vs %ld
  - (bal) NeXTStep lacks S_ISLNK.  Plus split up S_IS* 
+ - (djm) OpenBSD CVS Sync
+   - djm@cvs.openbsd.org     2001/03/19 03:52:51
+     [sftp-client.c]
+     Report ssh connection closing correctly; ok deraadt@
 
 20010318
  - (bal) Fixed scp type casing issue which causes "scp: protocol error: 
@@ -4612,4 +4616,4 @@
  - Wrote replacements for strlcpy and mkdtemp
  - Released 1.0pre1
 
-$Id: ChangeLog,v 1.979 2001/03/19 03:12:25 mouring Exp $
+$Id: ChangeLog,v 1.980 2001/03/19 11:29:46 djm Exp $
diff --git a/sftp-client.c b/sftp-client.c
index b0007a7..7be73d2 100644
--- a/sftp-client.c
+++ b/sftp-client.c
@@ -29,7 +29,7 @@
 /* XXX: copy between two remote sites */
 
 #include "includes.h"
-RCSID("$OpenBSD: sftp-client.c,v 1.14 2001/03/16 08:16:17 djm Exp $");
+RCSID("$OpenBSD: sftp-client.c,v 1.15 2001/03/19 10:52:51 djm Exp $");
 
 #include "ssh.h"
 #include "buffer.h"
@@ -77,7 +77,9 @@
 	unsigned char buf[4096];
 
 	len = atomicio(read, fd, buf, 4);
-	if (len != 4)
+	if (len == 0)
+		fatal("Connection closed");
+	else if (len == -1)
 		fatal("Couldn't read packet: %s", strerror(errno));
 
 	msg_len = GET_32BIT(buf);
@@ -86,7 +88,9 @@
 
 	while (msg_len) {
 		len = atomicio(read, fd, buf, MIN(msg_len, sizeof(buf)));
-		if (len <= 0)
+		if (len == 0)
+			fatal("Connection closed");
+		else if (len == -1)
 			fatal("Couldn't read packet: %s", strerror(errno));
 
 		msg_len -= len;