#include "constants.h"
#include "core-varlink.h"
#include "creds-util.h"
+#include "daemon-util.h"
#include "dbus-job.h"
#include "dbus-manager.h"
#include "dbus-unit.h"
assert(m);
/* Let whoever invoked us know that we are now reloading */
- (void) sd_notifyf(/* unset_environment= */ false,
- "RELOADING=1\n"
- "MONOTONIC_USEC=" USEC_FMT "\n", now(CLOCK_MONOTONIC));
+ (void) notify_reloading_full(/* status = */ NULL);
/* And ensure that we'll send READY=1 again as soon as we are ready again */
m->ready_sent = false;
Manager *m = userdata;
int r;
- (void) sd_notifyf(/* unset= */ false,
- "RELOADING=1\n"
- "STATUS=Reloading configuration...\n"
- "MONOTONIC_USEC=" USEC_FMT, now(CLOCK_MONOTONIC));
+ (void) notify_reloading();
manager_reset_config(m);
r = manager_parse_config_file(m);
assert(m);
- (void) sd_notifyf(/* unset= */ false,
- "RELOADING=1\n"
- "STATUS=Reloading configuration...\n"
- "MONOTONIC_USEC=" USEC_FMT, now(CLOCK_MONOTONIC));
+ (void) notify_reloading();
r = netdev_load(m, /* reload= */ true);
if (r < 0)
#include "fd-util.h"
#include "log.h"
#include "string-util.h"
+#include "time-util.h"
static int notify_remove_fd_warn(const char *name) {
int r;
return notify_push_fd(fd, name);
}
+
+int notify_reloading_full(const char *status) {
+ int r;
+
+ r = sd_notifyf(/* unset_environment = */ false,
+ "RELOADING=1\n"
+ "MONOTONIC_USEC=" USEC_FMT
+ "%s%s",
+ now(CLOCK_MONOTONIC),
+ status ? "\nSTATUS=" : "", strempty(status));
+ if (r < 0)
+ return log_debug_errno(r, "Failed to notify service manager for reloading status: %m");
+
+ return 0;
+}
#define NOTIFY_READY "READY=1\n" "STATUS=Processing requests..."
#define NOTIFY_STOPPING "STOPPING=1\n" "STATUS=Shutting down..."
-static inline const char *notify_start(const char *start, const char *stop) {
+static inline const char* notify_start(const char *start, const char *stop) {
if (start)
(void) sd_notify(false, start);
int notify_remove_fd_warnf(const char *format, ...) _printf_(1, 2);
int close_and_notify_warn(int fd, const char *name);
int notify_push_fdf(int fd, const char *format, ...) _printf_(2, 3);
+
+int notify_reloading_full(const char *status);
+static inline int notify_reloading(void) {
+ return notify_reloading_full("Reloading configuration...");
+}
return;
/* If we eat this up, then tell our service manager to just continue */
- (void) sd_notifyf(/* unset= */ false,
- "RELOADING=1\n"
- "STATUS=Skipping configuration reloading, nothing changed.\n"
- "MONOTONIC_USEC=" USEC_FMT, now(CLOCK_MONOTONIC));
+ (void) notify_reloading_full("Skipping configuration reloading, nothing changed.");
} else {
- (void) sd_notifyf(/* unset= */ false,
- "RELOADING=1\n"
- "STATUS=Flushing configuration...\n"
- "MONOTONIC_USEC=" USEC_FMT, now(CLOCK_MONOTONIC));
+ (void) notify_reloading();
manager_kill_workers(manager, false);