chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
core: send out "Reloading" signal before and after doing a full reload/reexec of...
[elogind.git]
/
src
/
core
/
manager.c
diff --git
a/src/core/manager.c
b/src/core/manager.c
index 51f03de0986f213d9955a290a6535d558d728245..2e98181b37d3e6ee057bd75066c7ea49591726f6 100644
(file)
--- a/
src/core/manager.c
+++ b/
src/core/manager.c
@@
-864,6
+864,11
@@
int manager_startup(Manager *m, FILE *serialization, FDSet *fds) {
if (serialization) {
assert(m->n_reloading > 0);
m->n_reloading --;
if (serialization) {
assert(m->n_reloading > 0);
m->n_reloading --;
+
+ /* Let's wait for the UnitNew/JobNew messages being
+ * sent, before we notify that the reload is
+ * finished */
+ m->send_reloading_done = true;
}
return r;
}
return r;
@@
-1163,6
+1168,13
@@
unsigned manager_dispatch_dbus_queue(Manager *m) {
}
m->dispatching_dbus_queue = false;
}
m->dispatching_dbus_queue = false;
+
+ if (m->send_reloading_done) {
+ m->send_reloading_done = false;
+
+ bus_broadcast_reloading(m, false);
+ }
+
return n;
}
return n;
}
@@
-2238,6
+2250,7
@@
int manager_reload(Manager *m) {
return r;
m->n_reloading ++;
return r;
m->n_reloading ++;
+ bus_broadcast_reloading(m, true);
fds = fdset_new();
if (!fds) {
fds = fdset_new();
if (!fds) {
@@
-2297,6
+2310,8
@@
int manager_reload(Manager *m) {
assert(m->n_reloading > 0);
m->n_reloading--;
assert(m->n_reloading > 0);
m->n_reloading--;
+ m->send_reloading_done = true;
+
finish:
if (f)
fclose(f);
finish:
if (f)
fclose(f);