Update SSHClient to interrupt KeepAlive Thread when disconnecting #752
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current
KeepAlive.setKeepAliveInterval()
method starts the Thread when invoked with an interval greater than zero. This behavior starts the KeepAlive Thread prior to establishing a connection, depending on when the caller invokessetKeepAliveInterval()
.Neither the
ConnectionImpl
class nor theSSHClient
class interrupt the KeepAlive Thread, resulting in continued looping inside ofKeepAlive.run()
even after disconnecting and closingSSHClient
as described in issue #506.This pull request changes the behavior of
KeepAlive.setKeepAliveInterval()
to avoid starting the Thread. TheSSHClient.onConnect()
method checks whether the KeepAlive Thread is enabled and then callsstart()
to avoid unnecessary execution prior to a successful connection. TheSSHClient.disconnect()
method interrupts the KeepAlive Thread to ensure that it does not continue running. TheKeepAliveThreadTerminationTest
includes an additional method to verify the initial state of the KeepAlive Thread, as well as the state after connecting and disconnecting.