From: tobias Date: Thu, 26 Mar 2015 10:36:03 +0000 (+0000) Subject: partial sync of regress/netcat.c with upstream X-Git-Tag: V_8_4_P1~159 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bf3893dddd35e16def04bf48ed2ee1ad695b8f82;p=thirdparty%2Fopenssh-portable.git partial sync of regress/netcat.c with upstream Check for short writes in fdpass(). Clean up while at it. ok djm --- diff --git a/regress/netcat.c b/regress/netcat.c index 50934f3f2..30e49ac01 100644 --- a/regress/netcat.c +++ b/regress/netcat.c @@ -1,4 +1,4 @@ -/* $OpenBSD: netcat.c,v 1.127 2015/02/14 22:40:22 jca Exp $ */ +/* $OpenBSD: netcat.c,v 1.128 2015/03/26 10:36:03 tobias Exp $ */ /* * Copyright (c) 2001 Eric Jackson * @@ -1034,17 +1034,17 @@ fdpass(int nfd) bzero(&pfd, sizeof(pfd)); pfd.fd = STDOUT_FILENO; + pfd.events = POLLOUT; for (;;) { r = sendmsg(STDOUT_FILENO, &msg, 0); if (r == -1) { if (errno == EAGAIN || errno == EINTR) { - pfd.events = POLLOUT; if (poll(&pfd, 1, -1) == -1) err(1, "poll"); continue; } err(1, "sendmsg"); - } else if (r == -1) + } else if (r != 1) errx(1, "sendmsg: unexpected return value %zd", r); else break;