summaryrefslogtreecommitdiff
path: root/regress
diff options
context:
space:
mode:
authortobias <tobias@openbsd.org>2015-03-26 10:36:03 +0000
committerDamien Miller <djm@mindrot.org>2020-05-29 14:47:41 +1000
commitbf3893dddd35e16def04bf48ed2ee1ad695b8f82 (patch)
tree26518386b38b7e37ccfe16d75d12ceed021aee48 /regress
parente18435fec124b4c08eb6bbbbee9693dc04f4befb (diff)
partial sync of regress/netcat.c with upstream
Check for short writes in fdpass(). Clean up while at it. ok djm
Diffstat (limited to 'regress')
-rw-r--r--regress/netcat.c6
1 files changed, 3 insertions, 3 deletions
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 @@
1/* $OpenBSD: netcat.c,v 1.127 2015/02/14 22:40:22 jca Exp $ */ 1/* $OpenBSD: netcat.c,v 1.128 2015/03/26 10:36:03 tobias Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org> 3 * Copyright (c) 2001 Eric Jackson <ericj@monkey.org>
4 * 4 *
@@ -1034,17 +1034,17 @@ fdpass(int nfd)
1034 1034
1035 bzero(&pfd, sizeof(pfd)); 1035 bzero(&pfd, sizeof(pfd));
1036 pfd.fd = STDOUT_FILENO; 1036 pfd.fd = STDOUT_FILENO;
1037 pfd.events = POLLOUT;
1037 for (;;) { 1038 for (;;) {
1038 r = sendmsg(STDOUT_FILENO, &msg, 0); 1039 r = sendmsg(STDOUT_FILENO, &msg, 0);
1039 if (r == -1) { 1040 if (r == -1) {
1040 if (errno == EAGAIN || errno == EINTR) { 1041 if (errno == EAGAIN || errno == EINTR) {
1041 pfd.events = POLLOUT;
1042 if (poll(&pfd, 1, -1) == -1) 1042 if (poll(&pfd, 1, -1) == -1)
1043 err(1, "poll"); 1043 err(1, "poll");
1044 continue; 1044 continue;
1045 } 1045 }
1046 err(1, "sendmsg"); 1046 err(1, "sendmsg");
1047 } else if (r == -1) 1047 } else if (r != 1)
1048 errx(1, "sendmsg: unexpected return value %zd", r); 1048 errx(1, "sendmsg: unexpected return value %zd", r);
1049 else 1049 else
1050 break; 1050 break;