I applied this to my tree, but then reverted it. It may be possible for the _body_file fh to be closed, but _filename still be set.
Do we still want to fail in that case? -R Steve Kemp wrote: > > The current code in body_filename doesn't test that > the flush operation succeeds leading to potential > message loss. > > All current plugins distributed in the core test > to see if body_filename() returns a defined value > so we can fix this with the following patch: > > -- > s...@gold:~/git/qpsmtpd$ git diff > diff --git a/lib/Qpsmtpd/Transaction.pm b/lib/Qpsmtpd/Transaction.pm > index 18635ad..765ed1b 100644 > --- a/lib/Qpsmtpd/Transaction.pm > +++ b/lib/Qpsmtpd/Transaction.pm > @@ -101,8 +101,12 @@ sub body_current_pos { > sub body_filename { > my $self = shift; > $self->body_spool() unless $self->{_filename}; > - $self->{_body_file}->flush(); # so contents won't be cached > - return $self->{_filename}; > + > + # ensure contents won't be cached > + if ( $self->{_body_file}->flush() ) { > + return $self->{_filename}; > + } > + return undef; > } > > sub body_spool { > -- > > Steve > -- > Debian GNU/Linux System Administration > http://www.debian-administration.org/ >