Revision 1d540e60 ncclient/transport/ssh.py
b/ncclient/transport/ssh.py | ||
---|---|---|
37 | 37 |
self._transport = None |
38 | 38 |
self._connected = False |
39 | 39 |
self._channel = None |
40 |
self._expecting_close = False |
|
40 | 41 |
self._buffer = StringIO() # for incoming data |
41 | 42 |
# parsing-related, see _parse() |
42 | 43 |
self._parsing_state = 0 |
43 | 44 |
self._parsing_pos = 0 |
45 |
logger.debug('[SSHSession object created]') |
|
44 | 46 |
|
45 | 47 |
def _parse(self): |
46 | 48 |
'''Messages ae delimited by MSG_DELIM. The buffer could have grown by a |
... | ... | |
85 | 87 |
self._parsing_state = expect |
86 | 88 |
self._parsing_pos = self._buffer.tell() |
87 | 89 |
|
90 |
def expect_close(self): |
|
91 |
self._expecting_close = True |
|
92 |
|
|
88 | 93 |
def load_system_host_keys(self, filename=None): |
89 | 94 |
if filename is None: |
90 | 95 |
filename = os.path.expanduser('~/.ssh/known_hosts') |
... | ... | |
266 | 271 |
raise SessionCloseError(self._buffer.getvalue(), data) |
267 | 272 |
data = data[n:] |
268 | 273 |
except Exception as e: |
269 |
self.close() |
|
270 | 274 |
logger.debug('*** broke out of main loop ***') |
271 |
self._dispatch_error(e) |
|
275 |
self.close() |
|
276 |
if not (isinstance(e, SessionCloseError) and self._expecting_close): |
|
277 |
self._dispatch_error(e) |
|
272 | 278 |
|
273 | 279 |
@property |
274 | 280 |
def transport(self): |
Also available in: Unified diff