Add callback to directly find out remote forwarding response #174
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.
When Net::SSH is used to ask for multiple remote forwardings at the same time, the typical polling loop (check if active_remotes has grown, assume the new active_remote is the response to our query) is insufficient. This adds a callback that will be called when a remote forwarding request is complete, so that you can record the response specifically to that request. The documentation says it well:
You may pass a block that will be called when the the port forward request receives a response. This block will be passed the remote_port that was actually bound to, or nil if the binding failed. If the block returns :no_exception, the "failed binding" exception will not be thrown.
If you want to block until the port is active, you could do something like this:
I have included tests for the new functionality.