From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1Rbczg-0005K9-IB for garchives@archives.gentoo.org; Fri, 16 Dec 2011 18:58:56 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 4927C21C29C; Fri, 16 Dec 2011 18:58:49 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 16EB221C29C for ; Fri, 16 Dec 2011 18:58:49 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 3152B1B402B for ; Fri, 16 Dec 2011 18:58:47 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 64E128004A for ; Fri, 16 Dec 2011 18:58:46 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: <36632047bebbd435610944ad9e7850163b260645.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/AbstractPollTask.py pym/_emerge/PipeReader.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: 36632047bebbd435610944ad9e7850163b260645 Date: Fri, 16 Dec 2011 18:58:46 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: 25f9465e-602a-42e8-8a57-356800637daf X-Archives-Hash: bd70d01f63121f2f4ef14d882de4bd6f commit: 36632047bebbd435610944ad9e7850163b260645 Author: Zac Medico gentoo org> AuthorDate: Fri Dec 16 18:58:35 2011 +0000 Commit: Zac Medico gentoo org> CommitDate: Fri Dec 16 18:58:35 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3D36632047 Fix EIO handling for PollSelectAdapter. In PipeReader and AbstractPollTask, we have to treat EIO as EOF, in order to terminate the select loop at the correct time when using PollSelectAdapter. This fixes a regression in EIO handling since commits 915348ce34fc499ac295b8f0ffee9f0829803542 adn 30d2d0a9db486c5a70848ad5d27b37a3ec48f271. --- pym/_emerge/AbstractPollTask.py | 9 +++++++-- pym/_emerge/PipeReader.py | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/pym/_emerge/AbstractPollTask.py b/pym/_emerge/AbstractPollTa= sk.py index ea13587..d4785a2 100644 --- a/pym/_emerge/AbstractPollTask.py +++ b/pym/_emerge/AbstractPollTask.py @@ -50,9 +50,14 @@ class AbstractPollTask(AsynchronousTask): except OSError as e: # EIO happens with pty on Linux after the # slave end of the pty has been closed. - if e.errno not in (errno.EAGAIN, errno.EIO): + if e.errno =3D=3D errno.EIO: + # EOF: return empty buffer + pass + elif e.errno =3D=3D errno.EAGAIN: + # EAGAIN: return None + buf =3D None + else: raise - buf =3D None =20 return buf =20 diff --git a/pym/_emerge/PipeReader.py b/pym/_emerge/PipeReader.py index 78acb72..a465c2a 100644 --- a/pym/_emerge/PipeReader.py +++ b/pym/_emerge/PipeReader.py @@ -66,9 +66,14 @@ class PipeReader(AbstractPollTask): except OSError as e: # EIO happens with pty on Linux after the # slave end of the pty has been closed. - if e.errno not in (errno.EAGAIN, errno.EIO): + if e.errno =3D=3D errno.EIO: + self._unregister() + self.wait() + break + elif e.errno =3D=3D errno.EAGAIN: + break + else: raise - break else: if data: self._read_data.append(data)