This repository has been archived by the owner on Aug 23, 2019. It is now read-only.
fix: dial in series until we have proper abort support #306
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.
Currently the switch will dial all addresses for a particular transport in parallel. Since we don't have any real abort support for when a dial succeeds, we should resort to dialing in serial to avoid flooding a peer with unused connections. This may result in slower dials to peers, but should also prevent flooding connections. As we improve the logic of dialing, and add proper abort support, we should be able to dial in parallel, select the best connection and abort the rest.
The first connection to succeed will be used. Circuit is already dialed last, so we don't need to worry about using Circuit if we're able to dial the node directly.
This also improves the stability of the transport tests by moving
tryEcho
calls inside the dial callbacks, and adds anafter
handler to ensure the switch's are properly stopped after each transport suite is finished.