httpd: allow '-h' to work when daemonized with NOMMU enabled
authorRon Yorston <rmy@pobox.com>
Tue, 9 Jun 2020 15:38:21 +0000 (17:38 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 9 Jun 2020 15:38:21 +0000 (17:38 +0200)
Commit d1b75e184 (httpd: permit non-default home directory with NOMMU
enabled) only works when used with the '-f' (foreground) option.

When '-f' isn't specified and NOMMU is enabled bb_daemonize_or_rexec()
is called to daemonize the server.  Since the server process has been
re-execed the previous patch results in the xchdir() not being called.

Fix this by resetting the re_execed variable in this case.

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/httpd.c

index c2d2265922583ffe353040e91904edc4e7953cb1..f4e95768fcb312c6e010b6803559bc3742be937a 100644 (file)
@@ -2734,11 +2734,11 @@ int httpd_main(int argc UNUSED_PARAM, char **argv)
 #if !BB_MMU
        if (!(opt & OPT_FOREGROUND)) {
                bb_daemonize_or_rexec(0, argv); /* don't change current directory */
+               re_execed = 0; /* for the following chdir to work */
        }
 #endif
-
-       /* Chdir to home (unless we were re-execed for NOMMU case:
-        * we are already in the home dir then).
+       /* Chdir to home (unless we were re_exec()ed for NOMMU case
+        * in mini_httpd_nommu(): we are already in the home dir then).
         */
        if (!re_execed)
                xchdir(home_httpd);