cvs commit: qpsmtpd/lib/Qpsmtpd SMTP.pm Transaction.pm
[email protected] (John Peacock) 1 Mar 2005 14:31:25 -0000
| Newsgroups | perl.cvs.qpsmtpd |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 05/03/01 06:31:25
Modified: lib/Qpsmtpd SMTP.pm Transaction.pm
Log:
* 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
Revision Changes Path
1.51 +7 -3 qpsmtpd/lib/Qpsmtpd/SMTP.pm
Index: SMTP.pm
===================================================================
RCS file: /cvs/public/qpsmtpd/lib/Qpsmtpd/SMTP.pm,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- SMTP.pm 25 Feb 2005 16:18:08 -0000 1.50
+++ SMTP.pm 1 Mar 2005 14:31:25 -0000 1.51
@@ -471,15 +471,19 @@
# FIXME - call plugins to work on just the header here; can
# 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) {
$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 $_;
}
#$self->log(LOGDEBUG, "size is at $size\n") unless ($i % 300);
1.20 +10 -2 qpsmtpd/lib/Qpsmtpd/Transaction.pm
Index: Transaction.pm
===================================================================
RCS file: /cvs/public/qpsmtpd/lib/Qpsmtpd/Transaction.pm,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- Transaction.pm 22 Feb 2005 02:47:39 -0000 1.19
+++ Transaction.pm 1 Mar 2005 14:31:25 -0000 1.20
@@ -57,6 +57,12 @@
$self->{_notes}->{$key};
}
+sub body_start {
+ my $self = shift;
+ @_ and $self->{_body_start} = shift;
+ $self->{_body_start};
+}
+
sub body_filename {
my $self = shift;
return unless $self->{_body_file};
@@ -86,7 +92,8 @@
sub body_resetpos {
my $self = shift;
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;
1;
}
@@ -94,7 +101,8 @@
sub body_getline {
my $self = shift;
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};
$self->{_body_file_writing} = 0;
my $line = $self->{_body_file}->getline;