With v28.0, (PR #22729), we now abort init on failed binds, as documented in the release notes. This also affects the default onion bind to port 8334
, which is always done unless the user specifies the desired binds using the -bind
command.
As a result, setups with two local nodes that each use a different -port
are not possible anymore - both of these nodes would attempt to create an onion bind to port 8334
, and one of them would fail. In earlier versions, we would silently ignore the failed bind (bad if we were actually interested in receiving onion inbound peers, but convenient if we weren’t running Tor).
I think that these kind of -port
setups might be pretty widespread, especially in test setups where no inbound onion peers are desired, so this will likely affect multiple users. It has been reported on IRC multiple times (1, 2).
There is a simple fix: Stop using -port
, but instead specify a different -bind
on each of the local nodes.
Various possibilities how to deal with it (if at all) have been suggested on IRC by @vasild and @laanwj:
- Do nothing and tell affected users to switch to
-bind
- maybe even deprecate-port
- if
-port
is given, don’t attempt to bind to the default onion port - if
-port
is given, derive an onion port from it (e.g. port+1) instead of always using8334
- disable the automatic tor binding silently if the port is already used
I think that if we decide to do something about this, we should do so quickly in 28.1, so I opened this issue! Thoughts?