X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafm-system-daemon.c;h=49749bcace8413a3ee3d1a82b0e0dbaf1d815e3f;hb=941eb7ef734e7d6a9de9c7af13345e63f708d169;hp=969bfaadcff56cd6ec670ee4d311486833953578;hpb=c4229aaa4f3ca160f3bc044bd64e2d7dec1148b8;p=src%2Fapp-framework-main.git diff --git a/src/afm-system-daemon.c b/src/afm-system-daemon.c index 969bfaa..49749bc 100644 --- a/src/afm-system-daemon.c +++ b/src/afm-system-daemon.c @@ -29,6 +29,7 @@ #include "verbose.h" #include "utils-jbus.h" #include "utils-json.h" +#include "utils-systemd.h" #include "afm.h" #include "afm-db.h" #include "wgt-info.h" @@ -68,11 +69,21 @@ const char error_bad_request[] = "\"bad request\""; const char error_not_found[] = "\"not found\""; const char error_cant_start[] = "\"can't start\""; +static void do_reloads() +{ +#ifndef LEGACY_MODE_WITHOUT_SYSTEMD + /* enforce daemon reload */ + systemd_daemon_reload(0); + systemd_unit_restart_name(0, "sockets.target"); +#endif +} + static void on_install(struct sd_bus_message *smsg, struct json_object *req, void *unused) { const char *wgtfile; const char *root; int force; + int reload; struct wgt_info *ifo; struct json_object *resp; @@ -82,12 +93,14 @@ static void on_install(struct sd_bus_message *smsg, struct json_object *req, voi wgtfile = json_object_get_string(req); root = rootdir; force = 0; + reload = 1; break; case json_type_object: wgtfile = j_string_at(req, "wgt", NULL); if (wgtfile != NULL) { root = j_string_at(req, "root", rootdir); force = j_boolean_at(req, "force", 0); + reload = j_boolean_at(req, "reload", 1); break; } default: @@ -100,6 +113,10 @@ static void on_install(struct sd_bus_message *smsg, struct json_object *req, voi if (ifo == NULL) jbus_reply_error_s(smsg, "\"installation failed\""); else { + /* reload if needed */ + if (reload) + do_reloads(); + /* build the response */ resp = json_object_new_object(); if(!resp || !j_add_string(resp, "added", wgt_info_desc(ifo)->idaver))