* lib/Qpsmtpd/SMTP.pm
Copy all lines of incoming message to spool file and keep track of where the body lines started (ease use of inplace scanning for viruses). * lib/Qpsmtpd/Transaction.pm New function body_start() to get/set the body in spool file Tweak body_resetpos() and body_getline() to use body_start instead of 0 git-svn-id: https://svn.perl.org/qpsmtpd/trunk@375 958fd67b-6ff1-0310-b445-bb7760255be9
This commit is contained in:
parent
e503c04ed2
commit
f82dffe5ce
@ -471,15 +471,19 @@ sub data {
|
|||||||
# FIXME - call plugins to work on just the header here; can
|
# FIXME - call plugins to work on just the header here; can
|
||||||
# save us buffering the mail content.
|
# save us buffering the mail content.
|
||||||
|
|
||||||
|
# Save the start of just the body itself
|
||||||
|
$self->transaction->body_start($size);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# grab a copy of all of the header lines
|
||||||
if ($in_header) {
|
if ($in_header) {
|
||||||
$buffer .= $_;
|
$buffer .= $_;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
$self->transaction->body_write($_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
# copy all lines into the spool file, including the headers
|
||||||
|
# we will create a new header later before sending onwards
|
||||||
|
$self->transaction->body_write($_);
|
||||||
$size += length $_;
|
$size += length $_;
|
||||||
}
|
}
|
||||||
#$self->log(LOGDEBUG, "size is at $size\n") unless ($i % 300);
|
#$self->log(LOGDEBUG, "size is at $size\n") unless ($i % 300);
|
||||||
|
@ -57,6 +57,12 @@ sub notes {
|
|||||||
$self->{_notes}->{$key};
|
$self->{_notes}->{$key};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub body_start {
|
||||||
|
my $self = shift;
|
||||||
|
@_ and $self->{_body_start} = shift;
|
||||||
|
$self->{_body_start};
|
||||||
|
}
|
||||||
|
|
||||||
sub body_filename {
|
sub body_filename {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return unless $self->{_body_file};
|
return unless $self->{_body_file};
|
||||||
@ -86,7 +92,8 @@ sub body_size {
|
|||||||
sub body_resetpos {
|
sub body_resetpos {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return unless $self->{_body_file};
|
return unless $self->{_body_file};
|
||||||
seek($self->{_body_file}, 0,0);
|
my $start = $self->{_body_start} || 0;
|
||||||
|
seek($self->{_body_file}, $start, 0);
|
||||||
$self->{_body_file_writing} = 0;
|
$self->{_body_file_writing} = 0;
|
||||||
1;
|
1;
|
||||||
}
|
}
|
||||||
@ -94,7 +101,8 @@ sub body_resetpos {
|
|||||||
sub body_getline {
|
sub body_getline {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return unless $self->{_body_file};
|
return unless $self->{_body_file};
|
||||||
seek($self->{_body_file}, 0,0)
|
my $start = $self->{_body_start} || 0;
|
||||||
|
seek($self->{_body_file}, $start,0)
|
||||||
if $self->{_body_file_writing};
|
if $self->{_body_file_writing};
|
||||||
$self->{_body_file_writing} = 0;
|
$self->{_body_file_writing} = 0;
|
||||||
my $line = $self->{_body_file}->getline;
|
my $line = $self->{_body_file}->getline;
|
||||||
|
Loading…
Reference in New Issue
Block a user