diff options
author | Jens Andersen <jens.andersen@gmail.com> | 2013-10-17 13:59:39 +0000 |
---|---|---|
committer | Jens Andersen <jens.andersen@gmail.com> | 2013-10-17 13:59:39 +0000 |
commit | 06c88c8a2edad6562ad43e63ec894b1ba59c3818 (patch) | |
tree | 8559e03e39d22f9c363fc2574d4d1ca5ee94c851 | |
parent | c6a2f94ce4cd2a2e2776b11d43a63da0e7cbbd2e (diff) | |
download | pygerrit-06c88c8a2edad6562ad43e63ec894b1ba59c3818.tar.gz |
Ensure errors in json parsing doesn't leave everything in a broken state
-rw-r--r-- | pygerrit/stream.py | 20 |
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) |