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;