core: permit FDSTORE=1 messages with non-pollable fds
This also alters the documentation to recommend memfds rather than /run for serializing state across reboots. That's because /run doesn't actually have the same lifecycle as the fd store, as it is cleared out on restarts. Fixes: #5606
This commit is contained in:
+3
-4
@@ -413,13 +413,12 @@ static int service_add_fd_store(Service *s, int fd, const char *name) {
|
||||
}
|
||||
|
||||
r = sd_event_add_io(UNIT(s)->manager->event, &fs->event_source, fd, 0, on_fd_store_io, fs);
|
||||
if (r < 0) {
|
||||
if (r < 0 && r != -EPERM) { /* EPERM indicates fds that aren't pollable, which is OK */
|
||||
free(fs->fdname);
|
||||
free(fs);
|
||||
return r;
|
||||
}
|
||||
|
||||
(void) sd_event_source_set_description(fs->event_source, "service-fd-store");
|
||||
} else if (r >= 0)
|
||||
(void) sd_event_source_set_description(fs->event_source, "service-fd-store");
|
||||
|
||||
LIST_PREPEND(fd_store, s->fd_store, fs);
|
||||
s->n_fd_store++;
|
||||
|
||||
Reference in New Issue
Block a user