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