summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Andersen <jens.andersen@gmail.com>2013-10-17 13:59:39 +0000
committerJens Andersen <jens.andersen@gmail.com>2013-10-17 13:59:39 +0000
commit06c88c8a2edad6562ad43e63ec894b1ba59c3818 (patch)
tree8559e03e39d22f9c363fc2574d4d1ca5ee94c851
parentc6a2f94ce4cd2a2e2776b11d43a63da0e7cbbd2e (diff)
downloadpygerrit-06c88c8a2edad6562ad43e63ec894b1ba59c3818.tar.gz
Ensure errors in json parsing doesn't leave everything in a broken state
-rw-r--r--pygerrit/stream.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/pygerrit/stream.py b/pygerrit/stream.py
index 2184ae9..1834d66 100644
--- a/pygerrit/stream.py
+++ b/pygerrit/stream.py
@@ -57,13 +57,17 @@ class GerritStream(Thread):
stdout = channel.makefile()
stderr = channel.makefile_stderr()
while not self._stop.is_set():
- if channel.exit_status_ready():
- if channel.recv_stderr_ready():
- error = stderr.readline().strip()
+ try:
+ if channel.exit_status_ready():
+ if channel.recv_stderr_ready():
+ error = stderr.readline().strip()
+ else:
+ error = "Remote server connection closed"
+ self._error_event(error)
+ self._stop.set()
else:
- error = "Remote server connection closed"
- self._error_event(error)
+ data = stdout.readline()
+ self._gerrit.put_event(data)
+ except Exception as e:
+ self._error_event(repr(e))
self._stop.set()
- else:
- data = stdout.readline()
- self._gerrit.put_event(data)