base-files: use restart if no reload hook for service
authorAlexandru Ardelean <ardeleanalex@gmail.com>
Fri, 31 Mar 2017 06:44:19 +0000 (09:44 +0300)
committerFelix Fietkau <nbd@nbd.name>
Wed, 12 Apr 2017 07:54:21 +0000 (09:54 +0200)
This was also working before, with a slightly
different semantic.

[ Original semantic ]
If no reload hooks was implemented, the default one would
kick in, it would return fail, and restart would happen.

This would happen also in the case where a reload hook
would be implemented, it would fail, and it would restart
the service.

[ New semantic ]
The default reload hook calls restart.
Services can implement their own reload.

If reload fails, then the '/etc/init.d/<service> reload'
would return a non-zero code, and the caller can choose
a way to handle this.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
package/base-files/files/etc/rc.common

index 95cf956..af7bed4 100755 (executable)
@@ -17,7 +17,7 @@ stop() {
 }
 
 reload() {
-       return 1
+       restart
 }
 
 restart() {
@@ -68,7 +68,7 @@ Available commands:
        start   Start the service
        stop    Stop the service
        restart Restart the service
-       reload  Reload configuration files (or restart if that fails)
+       reload  Reload configuration files (or restart if service does not implement reload)
        enable  Enable service autostart
        disable Disable service autostart
 $EXTRA_HELP
@@ -130,7 +130,7 @@ ${INIT_TRACE:+set -x}
                if eval "type reload_service" 2>/dev/null >/dev/null; then
                        reload_service "$@"
                else
-                       start
+                       restart
                fi
        }
 
@@ -141,5 +141,4 @@ ${INIT_TRACE:+set -x}
 
 ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}"
 list_contains ALL_COMMANDS "$action" || action=help
-[ "$action" = "reload" ] && action='eval reload "$@" || restart "$@" && :'
 $action "$@"