Changes
- Handle disconnects better to allow for file descriptor reuse for both clients.
- Parallel clients no longer forcefully disconnect their clients at de-allocation -
now done by each individualSSHClient
instead when thatSSHClient
goes out of scope.
This allows reading of output and anything associated with output, exit codes et al,
to work as long as one of either the client or an associated output object is alive. SSHClient.disconnect
is now a no-op and deprecated - handled by object de-allocation.SSHClient.eagain
is now a public function - wrapper for polling socket and calling a given socket using function.SSHClient.eagain_write
is now a public function - wrapper for polling socket and calling a given socket using
write function.SSHClient
,TunnelServer
andLocalForwarder
now use their own gevent pools for greenlets spawned so they
are cleaned up correctly at shutdown.SSHClient.execute
is now deprecated in favour ofSSHClient.run_command
.
Fixes
- Forwarder threads used for proxies would not exit gracefully at interpreter shutdown, sometimes causing segfaults.
- Client, both parallel and single, going out of scope would cause reading output from existing output objects
to break - #274 - Explicitly calling
SSHClient.disconnect
would sometimes cause segfaults at interpreter shutdown. - Keepalives being configured on native client would keep client in scope forever.