* lib/Qpsmtpd.pm

Use package lexical to cache spool dir location instead of storing in
    Transaction or other high level object


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@376 958fd67b-6ff1-0310-b445-bb7760255be9
This commit is contained in:
John Peacock 2005-03-01 14:33:26 +00:00
parent f82dffe5ce
commit ec7aff1415

View File

@ -255,31 +255,35 @@ sub _register_hook {
} }
} }
my $spool_dir = "";
sub spool_dir { sub spool_dir {
my $self = shift; my $self = shift;
unless ( $self->{_spool_dir} ) { # first time through unless ( $spool_dir ) { # first time through
my $spool_dir = $self->config('spool_dir') $self->log(LOGINFO, "Initializing spool_dir");
|| Qpsmtpd::Utils::tildeexp('~/tmp/'); $spool_dir = $self->config('spool_dir')
|| Qpsmtpd::Utils::tildeexp('~/tmp/');
$spool_dir .= "/" unless ($spool_dir =~ m!/$!); $spool_dir .= "/" unless ($spool_dir =~ m!/$!);
$spool_dir =~ /^(.+)$/ or die "spool_dir not configured properly"; $spool_dir =~ /^(.+)$/ or die "spool_dir not configured properly";
$spool_dir = $1; # cleanse the taint $spool_dir = $1; # cleanse the taint
$self->{_spool_dir} = $spool_dir;
# Make sure the spool dir has appropriate rights # Make sure the spool dir has appropriate rights
if (-e $spool_dir) { if (-e $spool_dir) {
my $mode = (stat($spool_dir))[2]; my $mode = (stat($spool_dir))[2];
warn "Permissions on spool_dir $spool_dir are not 0700" if $mode & 07077; $self->log(LOGWARN,
"Permissions on spool_dir $spool_dir are not 0700")
if $mode & 07077;
} }
# And finally, create it if it doesn't already exist # And finally, create it if it doesn't already exist
-d $spool_dir or mkdir($spool_dir, 0700) -d $spool_dir or mkdir($spool_dir, 0700)
or die "Could not create spool_dir $spool_dir: $!"; or die "Could not create spool_dir $spool_dir: $!";
} }
return $self->{_spool_dir}; return $spool_dir;
} }
# For unique filenames. We write to a local tmp dir so we don't need # For unique filenames. We write to a local tmp dir so we don't need