Skip to content

Commit f0fa950

Browse files
authored
Merge pull request #272 from AurelienGasser/fix-returncode-idempotent
fix: WSClient.returncode not idempotent
2 parents 06191d3 + 79e066a commit f0fa950

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

stream/ws_client.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ def __init__(self, configuration, url, headers, capture_all):
6464
self._all = _IgnoredIO()
6565
self.sock = create_websocket(configuration, url, headers)
6666
self._connected = True
67+
self._returncode = None
6768

6869
def peek_channel(self, channel, timeout=0):
6970
"""Peek a channel and return part of the input,
@@ -228,12 +229,14 @@ def returncode(self):
228229
if self.is_open():
229230
return None
230231
else:
231-
err = self.read_channel(ERROR_CHANNEL)
232-
err = yaml.safe_load(err)
233-
if err['status'] == "Success":
234-
return 0
235-
return int(err['details']['causes'][0]['message'])
236-
232+
if self._returncode is None:
233+
err = self.read_channel(ERROR_CHANNEL)
234+
err = yaml.safe_load(err)
235+
if err['status'] == "Success":
236+
self._returncode = 0
237+
else:
238+
self._returncode = int(err['details']['causes'][0]['message'])
239+
return self._returncode
237240

238241
def close(self, **kwargs):
239242
"""

0 commit comments

Comments
 (0)