mirror of git://anongit.mindrot.org/openssh.git
upstream: check for EINTR/EAGAIN failures in the rfd fast-path; caught
by dtucker's minix3 vm :) ok dtucker@ OpenBSD-Commit-ID: 2e2c895a3e82ef347aa6694394a76a438be91361
This commit is contained in:
parent
41417dbda9
commit
667fec5d4f
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: channels.c,v 1.412 2022/01/22 00:45:31 djm Exp $ */
|
||||
/* $OpenBSD: channels.c,v 1.413 2022/02/17 10:58:27 djm Exp $ */
|
||||
/*
|
||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||
|
@ -1951,6 +1951,9 @@ channel_handle_rfd(struct ssh *ssh, Channel *c)
|
|||
if (maxlen > avail)
|
||||
maxlen = avail;
|
||||
if ((r = sshbuf_read(c->rfd, c->input, maxlen, NULL)) != 0) {
|
||||
if (errno == EINTR || (!force &&
|
||||
(errno == EAGAIN || errno == EWOULDBLOCK)))
|
||||
return 1;
|
||||
debug2("channel %d: read failed rfd %d maxlen %zu: %s",
|
||||
c->self, c->rfd, maxlen, ssh_err(r));
|
||||
goto rfail;
|
||||
|
|
Loading…
Reference in New Issue