Skip to content

Commit 79e066a

Browse files
fix: WSClient.returncode not idempotent
1 parent a66f8df commit 79e066a

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
@@ -63,6 +63,7 @@ def __init__(self, configuration, url, headers, capture_all):
6363
self._all = _IgnoredIO()
6464
self.sock = create_websocket(configuration, url, headers)
6565
self._connected = True
66+
self._returncode = None
6667

6768
def peek_channel(self, channel, timeout=0):
6869
"""Peek a channel and return part of the input,
@@ -210,12 +211,14 @@ def returncode(self):
210211
if self.is_open():
211212
return None
212213
else:
213-
err = self.read_channel(ERROR_CHANNEL)
214-
err = yaml.safe_load(err)
215-
if err['status'] == "Success":
216-
return 0
217-
return int(err['details']['causes'][0]['message'])
218-
214+
if self._returncode is None:
215+
err = self.read_channel(ERROR_CHANNEL)
216+
err = yaml.safe_load(err)
217+
if err['status'] == "Success":
218+
self._returncode = 0
219+
else:
220+
self._returncode = int(err['details']['causes'][0]['message'])
221+
return self._returncode
219222

220223
def close(self, **kwargs):
221224
"""

0 commit comments

Comments
 (0)