summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO2
-rw-r--r--src/core/service.c15
2 files changed, 8 insertions, 9 deletions
diff --git a/TODO b/TODO
index 29b1ac6601..19a2535e1b 100644
--- a/TODO
+++ b/TODO
@@ -1479,8 +1479,6 @@ Features:
* maybe rework get_user_creds() to query the user database if $SHELL is used
for root, but only then.
-* be stricter with fds we receive for the fdstore: close them asynchronously
-
* calenderspec: add support for week numbers and day numbers within a
year. This would allow us to define "bi-weekly" triggers safely.
diff --git a/src/core/service.c b/src/core/service.c
index dcd62fabdc..c1669da3a2 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -389,7 +389,7 @@ static void service_fd_store_unlink(ServiceFDStore *fs) {
sd_event_source_disable_unref(fs->event_source);
free(fs->fdname);
- safe_close(fs->fd);
+ asynchronous_close(fs->fd);
free(fs);
}
@@ -415,9 +415,9 @@ static void service_release_stdio_fd(Service *s) {
log_unit_debug(UNIT(s), "Releasing stdin/stdout/stderr file descriptors.");
- s->stdin_fd = safe_close(s->stdin_fd);
- s->stdout_fd = safe_close(s->stdout_fd);
- s->stderr_fd = safe_close(s->stderr_fd);
+ s->stdin_fd = asynchronous_close(s->stdin_fd);
+ s->stdout_fd = asynchronous_close(s->stdout_fd);
+ s->stderr_fd = asynchronous_close(s->stderr_fd);
}
static void service_done(Unit *u) {
Service *s = SERVICE(u);
@@ -500,7 +500,7 @@ static int service_add_fd_store(Service *s, int fd, const char *name, bool do_po
if (r < 0)
return r;
if (r > 0) {
- safe_close(fd);
+ asynchronous_close(fd);
return 0; /* fd already included */
}
}
@@ -543,7 +543,7 @@ static int service_add_fd_store_set(Service *s, FDSet *fds, const char *name, bo
assert(s);
while (fdset_size(fds) > 0) {
- _cleanup_close_ int fd = -EBADF;
+ _cleanup_(asynchronous_closep) int fd = -EBADF;
fd = fdset_steal_first(fds);
if (fd < 0)
@@ -558,7 +558,8 @@ static int service_add_fd_store_set(Service *s, FDSet *fds, const char *name, bo
return log_unit_error_errno(UNIT(s), r, "Failed to add fd to store: %m");
if (r > 0)
log_unit_debug(UNIT(s), "Added fd %i (%s) to fd store.", fd, strna(name));
- fd = -EBADF;
+
+ TAKE_FD(fd);
}
return 0;