diff options
author | djm <djm> | 2008-07-04 23:40:56 +0000 |
---|---|---|
committer | djm <djm> | 2008-07-04 23:40:56 +0000 |
commit | ca1ffcdb1060e5d59a0c9e9e4a05547da8082153 (patch) | |
tree | 4e633e5e5bc2e7e5d73c7f55c263a783997c560b | |
parent | 67d7c8371527b30f489e94bf8e2ee4b5e5f7e684 (diff) | |
download | openssh-ca1ffcdb1060e5d59a0c9e9e4a05547da8082153.tar.gz |
- OpenBSD CVS Sync
- djm@cvs.openbsd.org 2008/07/04 23:08:25
[packet.c]
handle EINTR in packet_write_poll()l ok dtucker@
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | packet.c | 13 |
2 files changed, 13 insertions, 6 deletions
@@ -5,6 +5,10 @@ - (djm) [atomicio.c configure.ac] Disable poll() fallback in atomiciov for Tru64. readv doesn't seem to be a comparable object there. bz#1386, patch from dtucker@ ok me + - (djm) OpenBSD CVS Sync + - djm@cvs.openbsd.org 2008/07/04 23:08:25 + [packet.c] + handle EINTR in packet_write_poll()l ok dtucker@ 20080704 - (dtucker) OpenBSD CVS Sync @@ -4578,4 +4582,4 @@ OpenServer 6 and add osr5bigcrypt support so when someone migrates passwords between UnixWare and OpenServer they will still work. OK dtucker@ -$Id: ChangeLog,v 1.5060 2008/07/04 23:36:58 djm Exp $ +$Id: ChangeLog,v 1.5061 2008/07/04 23:40:56 djm Exp $ @@ -1,4 +1,4 @@ -/* $OpenBSD: packet.c,v 1.155 2008/06/13 09:44:36 deraadt Exp $ */ +/* $OpenBSD: packet.c,v 1.156 2008/07/04 23:08:25 djm Exp $ */ /* * Author: Tatu Ylonen <ylo@cs.hut.fi> * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland @@ -1475,16 +1475,19 @@ packet_write_poll(void) if (len > 0) { len = write(connection_out, buffer_ptr(&output), len); - if (len <= 0) { - if (errno == EAGAIN || errno == EWOULDBLOCK) + if (len == -1) { + if (errno == EINTR || errno == EAGAIN || + errno == EWOULDBLOCK) return; - else - fatal("Write failed: %.100s", strerror(errno)); + fatal("Write failed: %.100s", strerror(errno)); } + if (len == 0) + fatal("Write connection closed"); buffer_consume(&output, len); } } + /* * Calls packet_write_poll repeatedly until all pending output data has been * written. |