fix(comms): correctly initialize hidden service #6124
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
Correctly sets up a tor hidden service in the HiddenServiceTransport
Tor control client will not error if a value in a key-value query is empty, as this can be valid
Disables signal handlers for libtor
Motivation and Context
This PR correctly initializes a tor hidden service in the HiddenServiceTransport. A task is spawned by
create_hidden_service
that monitors the tor control port connection and automatically tries to reestablish it if it disconnects. I also fix the incorrect setting of the proxied address to be the listening port of the Tari node rather than tor's SOCKS port.The minor change to the control port client is minor and allows for an empty value to be returned, which is valid when querying key-value pairs. In practice, this never happens in our current usage but I encountered it when debugging and it prevented the real problem from coming through.
Ref PR #6092
There is an additional existing problem where libtor handles interrupt signals and exits e.g. when pressing ctrl+c in the base node to type a command. I fixed this by disabling signal handlers in libtor.
How Has This Been Tested?
Manually
What process can a PR reviewer use to test or verify this change?
Nodes should receive inbound and outbound tor connections.
Breaking Changes