diff --git a/lib/Qpsmtpd/Transaction.pm b/lib/Qpsmtpd/Transaction.pm index dd075de..a6dc3be 100644 --- a/lib/Qpsmtpd/Transaction.pm +++ b/lib/Qpsmtpd/Transaction.pm @@ -64,6 +64,17 @@ sub notes { sub set_body_start { my $self = shift; $self->{_body_start} = $self->body_current_pos; + if ($self->{_body_file}) { + $self->{_header_size} = $self->{_body_start}; + } + else { + $self->{_header_size} = 0; + if ($self->{_body_array}) { + foreach my $line (@{ $self->{_body_array} }) { + $self->{_header_size} += length($line); + } + } + } } sub body_start { @@ -123,6 +134,7 @@ sub body_write { foreach my $line (@{ $self->{_body_array} }) { $self->{_body_file}->print($line) or die "Cannot print to temp file: $!"; } + $self->{_body_start} = $self->{_header_size}; } $self->{_body_array} = undef; }