Index: slimserver.pl =================================================================== --- slimserver.pl (revision 3507) +++ slimserver.pl (working copy) @@ -406,9 +406,6 @@ unshift @INC, "/Library/SlimDevices/"; } - $::d_server && msg("SlimServer settings effective user and group if requested...\n"); - changeEffectiveUserAndGroup(); - $::d_server && msg("SlimServer settings init...\n"); initSettings(); @@ -479,6 +476,10 @@ } }; + # Change UID/GID after the pid & logfiles have been opened. + $::d_server && msg("SlimServer settings effective user and group if requested...\n"); + changeEffectiveUserAndGroup(); + # If we're only scanning, just do that. if ($scanOnly) { msg("Will only scan music library, then exit!\n"); @@ -931,7 +932,6 @@ $cachedir = Slim::Utils::Misc::fixPathCase($cachedir); Slim::Utils::Prefs::set("cachedir",$cachedir); } - } sub daemonize { @@ -1138,18 +1138,15 @@ } sub save_pid_file { - my $process_id = shift || $$; + my $process_id = shift || $$; - $::d_server && msg("SlimServer saving pid file.\n"); - if (defined $pidfile && -e $pidfile) { - die "Process ID file: $pidfile already exists"; - } - - if (defined $pidfile and open PIDFILE, ">$pidfile") { - print PIDFILE "$process_id\n"; - close PIDFILE; - } + + return unless defined $pidfile; + + open PIDFILE, ">$pidfile" or die "Couldn't open pidfile: [$pidfile] for writing!: $!"; + print PIDFILE "$process_id\n"; + close PIDFILE; } sub remove_pid_file {