]> git.ipfire.org Git - telemetry.git/commitdiff
command: Cleanup events before closing file descriptors
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 21 Oct 2025 07:26:25 +0000 (07:26 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 21 Oct 2025 07:26:25 +0000 (07:26 +0000)
This makes the trace slightly cleaner when FDs will be removed from the
event loop before they are closed and not the other way round.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/daemon/command.c

index 6d8a145b60bb7021c5c9ebb62c9b848fc69f1670..9c01c81f19bc775d98a7f485b069612820b71218 100644 (file)
@@ -101,6 +101,16 @@ static void td_command_close_pipe(int fds[2]) {
 }
 
 static void td_command_free(td_command* self) {
+       // Free events
+       if (self->events.timeout)
+               sd_event_source_unref(self->events.timeout);
+       if (self->events.exit)
+               sd_event_source_unref(self->events.exit);
+       if (self->events.stdout)
+               sd_event_source_unref(self->events.stdout);
+       if (self->events.stderr)
+               sd_event_source_unref(self->events.stderr);
+
        // Close pipes
        td_command_close_pipe(self->stdout.pipes);
        td_command_close_pipe(self->stderr.pipes);
@@ -115,16 +125,6 @@ static void td_command_free(td_command* self) {
        if (self->stderr.buffer)
                td_buffer_unref(self->stderr.buffer);
 
-       // Free events
-       if (self->events.timeout)
-               sd_event_source_unref(self->events.timeout);
-       if (self->events.exit)
-               sd_event_source_unref(self->events.exit);
-       if (self->events.stdout)
-               sd_event_source_unref(self->events.stdout);
-       if (self->events.stderr)
-               sd_event_source_unref(self->events.stderr);
-
        if (self->loop)
                sd_event_unref(self->loop);
        if (self->daemon)