Bridge warns "BridgeRelay is 1, but ExitRelay is 1 or an ExitPolicy is configured." when ExitRelay set to 0
We have a bridge operator on irc who reports that they have set ExitRelay 0
in their torrc, and it causes this warning:
[WARN] BridgeRelay is 1, but ExitRelay is 1 or an ExitPolicy is configured. Tor will start, but it will not function as an exit relay.
Sure enough, the logic that decides whether to warn says
if (options->BridgeRelay == 1 && (options->ExitRelay == 1 ||
!policy_using_default_exit_options(options))) {
log_warn(LD_CONFIG, "BridgeRelay is 1, but ExitRelay is 1 or an "
and that policy_using_default_exit_options() check simply looks at
return (or_options->ExitPolicy == NULL && or_options->ExitRelay == -1 &&
or_options->ReducedExitPolicy == 0 && or_options->IPv6Exit == 0);
So yes, if you explicitly set ExitRelay to 0, then it will be not the default exit options, so options_validate_relay_mode() will decide to log the warning.
The bug went in with commit 1901720f, part of Tor 0.4.8.3-rc, see ticket #40819 (closed).
As another bug, the #40819 (closed) fix didn't produce any changelog entry in the 0.4.8.3-rc changelog, oops. I think going back and adding an entry to 0.4.8.3-rc ChangeLog, and 0.4.8.4 ReleaseNotes, would be reasonable, for the sake of being accurate.