- (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
This commit is contained in:
Damien Miller 2008-07-05 09:36:58 +10:00
parent 22989f1b5e
commit 20d1694719
3 changed files with 11 additions and 3 deletions

View File

@ -2,6 +2,9 @@
- (djm) [auth.c] Fixed test for locked account on HP/UX with shadowed - (djm) [auth.c] Fixed test for locked account on HP/UX with shadowed
passwords disabled. bz#1083 report & patch from senthilkumar_sen AT passwords disabled. bz#1083 report & patch from senthilkumar_sen AT
hotpop.com, w/ dtucker@ hotpop.com, w/ dtucker@
- (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
20080704 20080704
- (dtucker) OpenBSD CVS Sync - (dtucker) OpenBSD CVS Sync
@ -4575,4 +4578,4 @@
OpenServer 6 and add osr5bigcrypt support so when someone migrates OpenServer 6 and add osr5bigcrypt support so when someone migrates
passwords between UnixWare and OpenServer they will still work. OK dtucker@ passwords between UnixWare and OpenServer they will still work. OK dtucker@
$Id: ChangeLog,v 1.5059 2008/07/04 22:59:43 djm Exp $ $Id: ChangeLog,v 1.5060 2008/07/04 23:36:58 djm Exp $

View File

@ -97,8 +97,10 @@ atomiciov(ssize_t (*f) (int, const struct iovec *, int), int fd,
/* Make a copy of the iov array because we may modify it below */ /* Make a copy of the iov array because we may modify it below */
memcpy(iov, _iov, iovcnt * sizeof(*_iov)); memcpy(iov, _iov, iovcnt * sizeof(*_iov));
#ifndef BROKEN_READV_COMPARISON
pfd.fd = fd; pfd.fd = fd;
pfd.events = f == readv ? POLLIN : POLLOUT; pfd.events = f == readv ? POLLIN : POLLOUT;
#endif
for (; iovcnt > 0 && iov[0].iov_len > 0;) { for (; iovcnt > 0 && iov[0].iov_len > 0;) {
res = (f) (fd, iov, iovcnt); res = (f) (fd, iov, iovcnt);
switch (res) { switch (res) {
@ -106,7 +108,9 @@ atomiciov(ssize_t (*f) (int, const struct iovec *, int), int fd,
if (errno == EINTR) if (errno == EINTR)
continue; continue;
if (errno == EAGAIN || errno == EWOULDBLOCK) { if (errno == EAGAIN || errno == EWOULDBLOCK) {
#ifndef BROKEN_READV_COMPARISON
(void)poll(&pfd, 1, -1); (void)poll(&pfd, 1, -1);
#endif
continue; continue;
} }
return 0; return 0;

View File

@ -1,4 +1,4 @@
# $Id: configure.ac,v 1.406 2008/06/15 16:27:48 dtucker Exp $ # $Id: configure.ac,v 1.407 2008/07/04 23:36:58 djm Exp $
# #
# Copyright (c) 1999-2004 Damien Miller # Copyright (c) 1999-2004 Damien Miller
# #
@ -15,7 +15,7 @@
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
AC_INIT(OpenSSH, Portable, openssh-unix-dev@mindrot.org) AC_INIT(OpenSSH, Portable, openssh-unix-dev@mindrot.org)
AC_REVISION($Revision: 1.406 $) AC_REVISION($Revision: 1.407 $)
AC_CONFIG_SRCDIR([ssh.c]) AC_CONFIG_SRCDIR([ssh.c])
AC_CONFIG_HEADER(config.h) AC_CONFIG_HEADER(config.h)
@ -841,6 +841,7 @@ mips-sony-bsd|mips-sony-newsos4)
AC_DEFINE(SETEUID_BREAKS_SETUID) AC_DEFINE(SETEUID_BREAKS_SETUID)
AC_DEFINE(BROKEN_SETREUID) AC_DEFINE(BROKEN_SETREUID)
AC_DEFINE(BROKEN_SETREGID) AC_DEFINE(BROKEN_SETREGID)
AC_DEFINE(BROKEN_READV_COMPARISON, 1, [Can't do comparisons on readv]))
;; ;;
*-*-nto-qnx*) *-*-nto-qnx*)