when 'sudo service tor reload' fails, Tor exits '0', while it should exit non-zero
When sudo service tor reload
fails, Tor exits 0
, while it should exit non-zero.
Using Tor on Debian jessie. Version:
dpkg-query --show --showformat='${Version}' "tor"
0.2.5.12-1
For reproduction of this issue, you could run the following script as root. (Similar to #16161 (moved).)
set -x
echo '
DnsPort 127.0.0.1:53
DisableNetwork 1
' > /etc/tor/torrc
service tor restart
sleep 2
echo '
DnsPort 127.0.0.1:53
DisableNetwork 0
' > /etc/tor/torrc
service tor reload
Log output:
May 22 22:06:59.000 [notice] Tor 0.2.5.12 (git-3731dd5c3071dcba) opening log file.
May 22 22:06:59.000 [notice] Parsing GEOIP IPv4 file /usr/share/tor/geoip.
May 22 22:06:59.000 [notice] Parsing GEOIP IPv6 file /usr/share/tor/geoip6.
May 22 22:06:59.000 [notice] Bootstrapped 0%: Starting
May 22 22:06:59.000 [notice] Delaying directory fetches: DisableNetwork is set.
May 22 22:07:01.000 [notice] Received reload signal (hup). Reloading config and resetting internal state.
May 22 22:07:01.000 [notice] Read configuration file "/usr/share/tor/tor-service-defaults-torrc".
May 22 22:07:01.000 [notice] Read configuration file "/etc/tor/torrc".
May 22 22:07:01.000 [notice] Opening Socks listener on 127.0.0.1:9050
May 22 22:07:01.000 [notice] Opening DNS listener on 127.0.0.1:53
May 22 22:07:01.000 [warn] Could not bind to 127.0.0.1:53: Permission denied
May 22 22:07:01.000 [notice] Closing partially-constructed Socks listener on 127.0.0.1:9050
May 22 22:07:01.000 [warn] Failed to parse/validate config: Failed to bind one of the listener ports.
May 22 22:07:01.000 [err] Reading config failed--see warnings above. For usage, try -h.
May 22 22:07:01.000 [warn] Restart failed (config error?). Exiting.
sudo service tor status
output:
● tor.service - LSB: Starts The Onion Router daemon processes
Loaded: loaded (/etc/init.d/tor)
Active: active (exited) since Sun 2015-05-24 18:07:30 UTC; 38s ago
Process: 9943 ExecStop=/etc/init.d/tor stop (code=exited, status=0/SUCCESS)
Process: 9980 ExecReload=/etc/init.d/tor reload (code=exited, status=0/SUCCESS)
Process: 9956 ExecStart=/etc/init.d/tor start (code=exited, status=0/SUCCESS)
May 24 18:08:06 host Tor[9971]: Closing partially-constructed Socks listener on 127.0.0.1:9120
May 24 18:08:06 host Tor[9971]: Closing partially-constructed Socks listener on 127.0.0.1:9121
May 24 18:08:06 host Tor[9971]: Closing partially-constructed Socks listener on 127.0.0.1:9122
May 24 18:08:06 host Tor[9971]: Closing partially-constructed Socks listener on 127.0.0.1:9123
May 24 18:08:06 host Tor[9971]: Closing partially-constructed Socks listener on 127.0.0.1:9124
May 24 18:08:06 host Tor[9971]: Closing partially-constructed Socks listener on 127.0.0.1:9150
May 24 18:08:06 host Tor[9971]: Closing partially-constructed Transparent pf/netfilter listener on 10.152.152.10:9040
May 24 18:08:06 host Tor[9971]: Failed to parse/validate config: Failed to bind one of the listener ports.
May 24 18:08:06 host Tor[9971]: Reading config failed--see warnings above. For usage, try -h.
May 24 18:08:06 host Tor[9971]: Restart failed (config error?). Exiting.
This is problematic, because then systemd cannot figure out, that Tor actually failed. So users cannot rely on sudo service tor status
to check if the Tor daemon is up and running.