From: Mike Yuan Date: Sun, 14 Jul 2024 18:32:34 +0000 (+0200) Subject: core/service: use switch in service_notify_message_authorized() X-Git-Tag: v257-rc1~846^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d3d0e36156836b560b8019090098b2c8da62918b;p=thirdparty%2Fsystemd.git core/service: use switch in service_notify_message_authorized() --- diff --git a/src/core/service.c b/src/core/service.c index 92137368678..b4d283686c8 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -4345,24 +4345,31 @@ static bool service_notify_message_authorized(Service *s, pid_t pid) { assert(s); assert(pid_is_valid(pid)); - NotifyAccess notify_access = service_get_notify_access(s); + switch (service_get_notify_access(s)) { - if (notify_access == NOTIFY_NONE) { + case NOTIFY_NONE: /* Warn level only if no notifications are expected */ log_unit_warning(UNIT(s), "Got notification message from PID "PID_FMT", but reception is disabled", pid); return false; - } - if (notify_access == NOTIFY_MAIN && pid != s->main_pid.pid) { + case NOTIFY_ALL: + return true; + + case NOTIFY_MAIN: + if (pid == s->main_pid.pid) + return true; + if (pidref_is_set(&s->main_pid)) log_unit_debug(UNIT(s), "Got notification message from PID "PID_FMT", but reception only permitted for main PID "PID_FMT, pid, s->main_pid.pid); else log_unit_debug(UNIT(s), "Got notification message from PID "PID_FMT", but reception only permitted for main PID which is currently not known", pid); return false; - } - if (notify_access == NOTIFY_EXEC && pid != s->main_pid.pid && pid != s->control_pid.pid) { + case NOTIFY_EXEC: + if (pid == s->main_pid.pid || pid == s->control_pid.pid) + return true; + if (pidref_is_set(&s->main_pid) && pidref_is_set(&s->control_pid)) log_unit_debug(UNIT(s), "Got notification message from PID "PID_FMT", but reception only permitted for main PID "PID_FMT" and control PID "PID_FMT, pid, s->main_pid.pid, s->control_pid.pid); @@ -4374,9 +4381,10 @@ static bool service_notify_message_authorized(Service *s, pid_t pid) { log_unit_debug(UNIT(s), "Got notification message from PID "PID_FMT", but reception only permitted for main PID and control PID which are currently not known", pid); return false; - } - return true; + default: + assert_not_reached(); + } } static void service_notify_message(