diff -u openssh-4.1p1-2/packet.c.orig openssh-4.1p1-2/packet.c --- openssh-4.1p1-2/packet.c.orig 2004-11-05 03:27:55.001000000 -0600 +++ openssh-4.1p1-2/packet.c 2005-08-15 19:14:13.487222900 -0500 @@ -1350,13 +1350,15 @@ int len = buffer_len(&output); if (len > 0) { - len = write(connection_out, buffer_ptr(&output), len); - if (len <= 0) { + int writelen = write(connection_out, buffer_ptr(&output), len); + if (writelen < 0) { if (errno == EAGAIN) return; else fatal("Write failed: %.100s", strerror(errno)); } + if (writelen > 0) + len = writelen; buffer_consume(&output, len); } }