X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=main.c;h=75f5cee0fa15195f243f5c3e41394389b5516f38;hb=7abfa9bc0526e9ae48e684a5cda917d543eaa537;hp=9bebd3e4fe18768b543a2bbf291c959ff4a96576;hpb=524032c291fcb4d8e4b160f4c9c4ec8b5de92db3;p=project%2Frpcd.git diff --git a/main.c b/main.c index 9bebd3e..75f5cee 100644 --- a/main.c +++ b/main.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -52,11 +53,14 @@ exec_self(int argc, char **argv) for (i = 0; i < argc; i++) args[i] = argv[i]; + setenv("RPC_HANGUP", "1", 1); execv(cmd, (char * const *)args); } int main(int argc, char **argv) { + struct stat s; + const char *hangup; const char *ubus_socket = NULL; int ch; @@ -70,6 +74,11 @@ int main(int argc, char **argv) } } + if (stat("/var/run/rpcd", &s)) + mkdir("/var/run/rpcd", 0700); + + umask(0077); + signal(SIGPIPE, SIG_IGN); signal(SIGHUP, handle_signal); signal(SIGUSR1, handle_signal); @@ -88,7 +97,12 @@ int main(int argc, char **argv) rpc_uci_api_init(ctx); rpc_plugin_api_init(ctx); - rpc_session_thaw(); + hangup = getenv("RPC_HANGUP"); + + if (!hangup || strcmp(hangup, "1")) + rpc_uci_purge_savedirs(); + else + rpc_session_thaw(); uloop_run(); ubus_free(ctx);