fix(libtor): prevent metrics port conflict #6125
Merged
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.
Description
Prevent conflict with metrics port when starting multiple nodes using libtor
Run tor in background without an unnecessary task spawn
Write the control port to a file (not used in the node implementation)
Support for tor auto assigning it's own ports
Motivation and Context
Set metrics port to 0 (os -assigned) so that multiple libtor instances do not conflict
Previously we'd wait on a shutdown signal in an async function, but tor runs in the background in an OS thread and waiting on a shutdown does nothing other than keep a task open in memory.
We could experience issues binding and dropping a listener quickly on some platforms. It would be better for tor to assign its own port however we could implement that if this is ever an issue, until then this code just makes us aware of that option.
How Has This Been Tested?
Running two base nodes and a wallet with libtor enabled on each
What process can a PR reviewer use to test or verify this change?
Breaking Changes