=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/rsync/io.c,v retrieving revision 1.5 retrieving revision 1.6 diff -c -r1.5 -r1.6 *** src/usr.bin/rsync/io.c 2019/02/16 05:06:30 1.5 --- src/usr.bin/rsync/io.c 2019/02/16 16:57:17 1.6 *************** *** 1,4 **** ! /* $Id: io.c,v 1.5 2019/02/16 05:06:30 deraadt Exp $ */ /* * Copyright (c) 2019 Kristaps Dzonsons * --- 1,4 ---- ! /* $Id: io.c,v 1.6 2019/02/16 16:57:17 florian Exp $ */ /* * Copyright (c) 2019 Kristaps Dzonsons * *************** *** 53,58 **** --- 53,59 ---- { struct pollfd pfd; ssize_t wsz; + int c; *sz = 0; *************** *** 62,71 **** pfd.fd = fd; pfd.events = POLLOUT; ! if (poll(&pfd, 1, INFTIM) < 0) { ERR(sess, "poll"); return 0; } if ((pfd.revents & (POLLERR|POLLNVAL))) { ERRX(sess, "poll: bad fd"); return 0; --- 63,76 ---- pfd.fd = fd; pfd.events = POLLOUT; ! if ((c = poll(&pfd, 1, POLL_TIMEOUT)) == -1) { ERR(sess, "poll"); return 0; + } else if (c == 0) { + ERRX(sess, "poll: timeout"); + return 0; } + if ((pfd.revents & (POLLERR|POLLNVAL))) { ERRX(sess, "poll: bad fd"); return 0; *************** *** 178,183 **** --- 183,189 ---- { struct pollfd pfd; ssize_t rsz; + int c; *sz = 0; *************** *** 187,196 **** pfd.fd = fd; pfd.events = POLLIN; ! if (poll(&pfd, 1, INFTIM) < 0) { ERR(sess, "poll"); return 0; } if ((pfd.revents & (POLLERR|POLLNVAL))) { ERRX(sess, "poll: bad fd"); return 0; --- 193,206 ---- pfd.fd = fd; pfd.events = POLLIN; ! if ((c = poll(&pfd, 1, POLL_TIMEOUT)) == -1) { ERR(sess, "poll"); return 0; + } else if (c == 0) { + ERRX(sess, "poll: timeout"); + return 0; } + if ((pfd.revents & (POLLERR|POLLNVAL))) { ERRX(sess, "poll: bad fd"); return 0;