Skip to content

Commit

Permalink
Main: ignore the "pid_file" setting if started as systemd service
Browse files Browse the repository at this point in the history
Commit 552c30e caused problems for those people who still had a
"pid_file" setting (even though that is obsolete with systemd),
because now /run/mpd is owned by root:root (our mpd.service has no
User=mpd directive, so systemd starts MPD as root).

To work around this problem, and to be able to keep
RuntimeDirectory=mpd (which solved a problem of other MPD users), the
best compromise seems to just ignore the "pid_file" setting when it is
of no use.
  • Loading branch information
MaxKellermann committed Nov 5, 2021
1 parent 8754d70 commit a4e4217
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
1 change: 1 addition & 0 deletions NEWS
Expand Up @@ -2,6 +2,7 @@ ver 0.23.4 (not yet released)
* output
- alsa: add option "thesycon_dsd_workaround" to work around device bug
* fix crash or debug builds if startup fails
* ignore the "pid_file" setting if started as systemd service
* Windows
- enable the "openmpt" decoder plugin

Expand Down
12 changes: 11 additions & 1 deletion src/Main.cxx
Expand Up @@ -145,9 +145,19 @@ static void
glue_daemonize_init(const CommandLineOptions &options,
const ConfigData &config)
{
auto pid_file = config.GetPath(ConfigOption::PID_FILE);

#ifdef __linux__
if (options.systemd && pid_file != nullptr) {
pid_file = nullptr;
fprintf(stderr,
"Ignoring the 'pid_file' setting in systemd mode\n");
}
#endif

daemonize_init(config.GetString(ConfigOption::USER),
config.GetString(ConfigOption::GROUP),
config.GetPath(ConfigOption::PID_FILE));
std::move(pid_file));

if (options.kill)
daemonize_kill();
Expand Down

0 comments on commit a4e4217

Please sign in to comment.