case SERVICE_START_PRE:
case SERVICE_START:
log_warning_unit(UNIT(s)->id,
- "%s operation timed out. Terminating.", UNIT(s)->id);
+ "%s %s operation timed out. Terminating.",
+ UNIT(s)->id,
+ s->state == SERVICE_START ? "start" : "start-pre");
service_enter_signal(s, SERVICE_FINAL_SIGTERM, SERVICE_FAILURE_TIMEOUT);
break;
case SERVICE_START_POST:
log_warning_unit(UNIT(s)->id,
- "%s operation timed out. Stopping.", UNIT(s)->id);
+ "%s start-post operation timed out. Stopping.", UNIT(s)->id);
service_enter_stop(s, SERVICE_FAILURE_TIMEOUT);
break;
case SERVICE_RELOAD:
log_warning_unit(UNIT(s)->id,
- "%s operation timed out. Stopping.", UNIT(s)->id);
+ "%s reload operation timed out. Stopping.", UNIT(s)->id);
s->reload_result = SERVICE_FAILURE_TIMEOUT;
service_enter_running(s, SERVICE_SUCCESS);
break;
case SERVICE_STOP_SIGTERM:
if (s->kill_context.send_sigkill) {
log_warning_unit(UNIT(s)->id,
- "%s stopping timed out. Killing.", UNIT(s)->id);
+ "%s stop-sigterm timed out. Killing.", UNIT(s)->id);
service_enter_signal(s, SERVICE_STOP_SIGKILL, SERVICE_FAILURE_TIMEOUT);
} else {
log_warning_unit(UNIT(s)->id,
- "%s stopping timed out. Skipping SIGKILL.", UNIT(s)->id);
+ "%s stop-sigterm timed out. Skipping SIGKILL.", UNIT(s)->id);
service_enter_stop_post(s, SERVICE_FAILURE_TIMEOUT);
}
case SERVICE_STOP_POST:
log_warning_unit(UNIT(s)->id,
- "%s stopping timed out (2). Terminating.", UNIT(s)->id);
+ "%s stop-post timed out. Terminating.", UNIT(s)->id);
service_enter_signal(s, SERVICE_FINAL_SIGTERM, SERVICE_FAILURE_TIMEOUT);
break;
case SERVICE_FINAL_SIGTERM:
if (s->kill_context.send_sigkill) {
log_warning_unit(UNIT(s)->id,
- "%s stopping timed out (2). Killing.", UNIT(s)->id);
+ "%s stop-final-sigterm timed out. Killing.", UNIT(s)->id);
service_enter_signal(s, SERVICE_FINAL_SIGKILL, SERVICE_FAILURE_TIMEOUT);
} else {
log_warning_unit(UNIT(s)->id,
- "%s stopping timed out (2). Skipping SIGKILL. Entering failed mode.",
+ "%s stop-final-sigterm timed out. Skipping SIGKILL. Entering failed mode.",
UNIT(s)->id);
service_enter_dead(s, SERVICE_FAILURE_TIMEOUT, false);
}
case SERVICE_FINAL_SIGKILL:
log_warning_unit(UNIT(s)->id,
- "%s still around after SIGKILL (2). Entering failed mode.", UNIT(s)->id);
+ "%s still around after final SIGKILL. Entering failed mode.", UNIT(s)->id);
service_enter_dead(s, SERVICE_FAILURE_TIMEOUT, true);
break;
assert(u);
+ log_debug_unit(u->id, "%s: Got notification message from PID %lu (%s...)",
+ u->id, (unsigned long) pid, tags && *tags ? tags[0] : "(empty)");
+
if (s->notify_access == NOTIFY_NONE) {
log_warning_unit(u->id,
"%s: Got notification message from PID %lu, but reception is disabled.",
return;
}
- if (s->notify_access == NOTIFY_MAIN && pid != s->main_pid) {
+ if (s->notify_access == NOTIFY_MAIN && s->main_pid != 0 && pid != s->main_pid) {
log_warning_unit(u->id,
"%s: Got notification message from PID %lu, but reception only permitted for PID %lu",
u->id, (unsigned long) pid, (unsigned long) s->main_pid);
return;
}
- log_debug_unit(u->id, "%s: Got message", u->id);
-
/* Interpret MAINPID= */
if ((e = strv_find_prefix(tags, "MAINPID=")) &&
(s->state == SERVICE_START ||
}
int service_set_socket_fd(Service *s, int fd, Socket *sock) {
+ _cleanup_free_ char *peer = NULL;
+ int r;
assert(s);
assert(fd >= 0);
if (s->state != SERVICE_DEAD)
return -EAGAIN;
+ if (getpeername_pretty(fd, &peer) >= 0) {
+
+ if (UNIT(s)->description) {
+ _cleanup_free_ char *a;
+
+ a = strjoin(UNIT(s)->description, " (", peer, ")", NULL);
+ if (!a)
+ return -ENOMEM;
+
+ r = unit_set_description(UNIT(s), a);
+ } else
+ r = unit_set_description(UNIT(s), peer);
+
+ if (r < 0)
+ return r;
+ }
+
s->socket_fd = fd;
unit_ref_set(&s->accept_socket, UNIT(sock));