projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
automatically generate monthly torrus reports before 1st of the month billing, RT...
[freeside.git]
/
FS
/
FS
/
Daemon.pm
diff --git
a/FS/FS/Daemon.pm
b/FS/FS/Daemon.pm
index
38e6d75
..
b58cde4
100644
(file)
--- a/
FS/FS/Daemon.pm
+++ b/
FS/FS/Daemon.pm
@@
-6,6
+6,8
@@
use Exporter;
use Fcntl qw(:flock);
use POSIX qw(setsid);
use IO::File;
use Fcntl qw(:flock);
use POSIX qw(setsid);
use IO::File;
+use File::Basename;
+use File::Slurp qw(slurp);
use Date::Format;
#this is a simple refactoring of the stuff from freeside-queued, just to
use Date::Format;
#this is a simple refactoring of the stuff from freeside-queued, just to
@@
-20,11
+22,18
@@
use Date::Format;
$pid_dir = '/var/run';
$NOSIG = 0;
$pid_dir = '/var/run';
$NOSIG = 0;
+$PID_NEWSTYLE = 0;
sub daemonize1 {
$me = shift;
sub daemonize1 {
$me = shift;
- $pid_file = "$pid_dir/$me";
+ $pid_file = $pid_dir;
+ if ( $PID_NEWSTYLE ) {
+ $pid_file .= '/freeside';
+ mkdir $pid_file unless -d $pid_file;
+ chown $FS::UID::freeside_uid, -1, $pid_file;
+ }
+ $pid_file .= "/$me";
$pid_file .= '.'.shift if scalar(@_);
$pid_file .= '.pid';
$pid_file .= '.'.shift if scalar(@_);
$pid_file .= '.pid';
@@
-35,6
+44,7
@@
sub daemonize1 {
print "$me started with pid $pid\n"; #logging to $log_file\n";
exit unless $pid_file;
my $pidfh = new IO::File ">$pid_file" or exit;
print "$me started with pid $pid\n"; #logging to $log_file\n";
exit unless $pid_file;
my $pidfh = new IO::File ">$pid_file" or exit;
+ chown $FS::UID::freeside_uid, -1, $pid_file;
print $pidfh "$pid\n";
exit;
}
print $pidfh "$pid\n";
exit;
}
@@
-82,14
+92,18
@@
sub sigterm { $sigterm; }
sub logfile { $logfile = shift; } #_logmsg('test'); }
sub myexit {
sub logfile { $logfile = shift; } #_logmsg('test'); }
sub myexit {
- unlink $pid_file if -e $pid_file;
+ chomp( my $pid = slurp($pid_file) );
+ unlink $pid_file if -e $pid_file && $$ == $pid;
exit;
}
sub _die {
die @_ if $^S; # $^S = 1 during an eval(), don't break exception handling
my $msg = shift;
exit;
}
sub _die {
die @_ if $^S; # $^S = 1 during an eval(), don't break exception handling
my $msg = shift;
- unlink $pid_file if -e $pid_file;
+
+ chomp( my $pid = slurp($pid_file) );
+ unlink $pid_file if -e $pid_file && $$ == $pid;
+
_logmsg($msg);
}
_logmsg($msg);
}