From bdb7502dc34fb36358238dc21db7d4d085efe097 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Tue, 13 Nov 2007 22:40:49 +0000 Subject: [PATCH] don't fails gpg encryption when verbose is on. check in status-fd if encryption succeeded. fixes #3542 --- src/common/GnuPG.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/common/GnuPG.py b/src/common/GnuPG.py index 7ca7d9df2..8870b6bd3 100644 --- a/src/common/GnuPG.py +++ b/src/common/GnuPG.py @@ -92,19 +92,36 @@ else: return str, 'GnuPG not usable' self.options.recipients = recipients # a list! - proc = self.run(['--encrypt'], create_fhs=['stdin', 'stdout', + proc = self.run(['--encrypt'], create_fhs=['stdin', 'stdout', 'status', 'stderr']) proc.handles['stdin'].write(str) - proc.handles['stdin'].close() + try: + proc.handles['stdin'].close() + except IOError: + pass output = proc.handles['stdout'].read() - proc.handles['stdout'].close() + try: + proc.handles['stdout'].close() + except IOError: + pass + + stat = proc.handles['status'] + resp = self._read_response(stat) + try: + proc.handles['status'].close() + except IOError: + pass error = proc.handles['stderr'].read() proc.handles['stderr'].close() try: proc.wait() except IOError: pass + if 'BEGIN_ENCRYPTION' in resp and 'END_ENCRYPTION' in resp: + # Encryption succeeded, even if there is output on stderr. Maybe + # verbose is on + error = '' return self._stripHeaderFooter(output), error def decrypt(self, str, keyID):