4 Commits
Author SHA1 Message Date
cptpcrd e3ceaf63d1 Fix reloading config
Fully clear the configuration before reloading, so that when the config
is read and merged in there are no existing values which mergeConfig
refuses to overwrite.
2024-03-24 15:41:19 -04:00
cptpcrd 5cbbfd5c8a Close pipe if fork() fails when spawning processes
Prevents potential file descriptor leakage, albeit in a bit of an edge
case.
2023-05-21 12:15:49 -04:00
cptpcrd 6163be687d Open network module eventfd as close-on-exec
Ensures that it is not leaked to child processes.
2023-05-21 12:13:17 -04:00
cptpcrd df65cab17a Open command pipes as close-on-exec
Avoids a race where the pipe could be inherited by another process
spawning at about the same time. If the other process didn't exit
quickly (e.g. if it was a custom script that did its own looping), it
would keep the write end of the pipe open, and so reading from the pipe
to try to get the command's output would block.

This bug manifested as some custom modules randomly not appearing in the
bar, requiring a reload to fix. The custom script had run and exited,
but the pipe had been inherited by another process, and the thread that
updated the module's output was blocked trying to read from it.
2023-05-21 12:10:44 -04:00