From dc5e3b33f7cdc59b5eefcf8d1a1dccc4ac5e1bee Mon Sep 17 00:00:00 2001
From: mathieui <mathieui@mathieui.net>
Date: Wed, 9 Jul 2014 16:00:22 +0200
Subject: Fix #2546 (ugly tb with the gpg plugin)

---
 plugins/gpg/gnupg.py | 46 +++++++++++++++++++++++++---------------------
 1 file changed, 25 insertions(+), 21 deletions(-)

(limited to 'plugins/gpg')

diff --git a/plugins/gpg/gnupg.py b/plugins/gpg/gnupg.py
index 9109451a..5cb11766 100644
--- a/plugins/gpg/gnupg.py
+++ b/plugins/gpg/gnupg.py
@@ -561,27 +561,31 @@ class GPG(object):
         #
         # Calls methods on the response object for each valid token found,
         # with the arg being the remainder of the status line.
-        lines = []
-        while True:
-            line = stream.readline()
-            if len(line) == 0:
-                break
-            lines.append(line)
-            line = line.rstrip()
-            if self.verbose:
-                print(line)
-            logger.debug("%s", line)
-            if line[0:9] == '[GNUPG:] ':
-                # Chop off the prefix
-                line = line[9:]
-                L = line.split(None, 1)
-                keyword = L[0]
-                if len(L) > 1:
-                    value = L[1]
-                else:
-                    value = ""
-                result.handle_status(keyword, value)
-        result.stderr = ''.join(lines)
+        try:
+            lines = []
+            while True:
+                line = stream.readline()
+                if len(line) == 0:
+                    break
+                lines.append(line)
+                line = line.rstrip()
+                if self.verbose:
+                    print(line)
+                logger.debug("%s", line)
+                if line[0:9] == '[GNUPG:] ':
+                    # Chop off the prefix
+                    line = line[9:]
+                    L = line.split(None, 1)
+                    keyword = L[0]
+                    if len(L) > 1:
+                        value = L[1]
+                    else:
+                        value = ""
+                    result.handle_status(keyword, value)
+            result.stderr = ''.join(lines)
+        except:
+            import traceback
+            logger.error('Error in the GPG plugin:\n%s', traceback.format_exc())
 
     def _read_data(self, stream, result):
         # Read the contents of the file from GPG's stdout
-- 
cgit v1.2.3