Revision 3ad93428 ncclient/ssh.py
b/ncclient/ssh.py | ||
---|---|---|
75 | 75 |
chan = self._channel |
76 | 76 |
chan.setblocking(0) |
77 | 77 |
q = self._q |
78 |
bufsize = SSHSession.BUF_SIZE |
|
79 |
delim = SSHSession.MSG_DELIM |
|
80 | 78 |
try: |
81 | 79 |
while True: |
82 | 80 |
if chan.closed: |
83 | 81 |
raise SessionCloseError(self._in_buf.getvalue()) |
84 | 82 |
if chan.send_ready() and not q.empty(): |
85 |
data = q.get() + delim
|
|
83 |
data = q.get() + SSHSession.MSG_DELIM
|
|
86 | 84 |
while data: |
87 | 85 |
n = chan.send(data) |
88 | 86 |
if n <= 0: |
89 | 87 |
raise SessionCloseError(self._in_buf.getvalue(), data) |
90 | 88 |
data = data[n:] |
91 | 89 |
if chan.recv_ready(): |
92 |
data = chan.recv(bufsize)
|
|
90 |
data = chan.recv(SSHSession.BUF_SIZE)
|
|
93 | 91 |
if data: |
94 | 92 |
self._in_buf.write(data) |
95 |
self._parse()
|
|
93 |
self._fresh_data()
|
|
96 | 94 |
else: |
97 | 95 |
raise SessionCloseError(self._in_buf.getvalue()) |
98 | 96 |
except Exception as e: |
... | ... | |
103 | 101 |
self._channel.close() |
104 | 102 |
self._connected = False |
105 | 103 |
|
106 |
def _parse(self):
|
|
104 |
def _fresh_data(self):
|
|
107 | 105 |
delim = SSHSession.MSG_DELIM |
108 | 106 |
n = len(delim) - 1 |
109 | 107 |
state = self._parsing_state |
Also available in: Unified diff