cvs commit: qpsmtpd/plugins milter
[email protected] (Matt Sergeant)
| Newsgroups | perl.cvs.qpsmtpd |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/09/16 03:44:47
Modified: plugins milter
Log:
Support more of the milter functionality (header changes)
Revision Changes Path
1.4 +22 -7 qpsmtpd/plugins/milter
Index: milter
===================================================================
RCS file: /cvs/public/qpsmtpd/plugins/milter,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -w -r1.3 -r1.4
--- milter 5 Mar 2004 12:46:24 -0000 1.3
+++ milter 16 Sep 2004 10:44:47 -0000 1.4
@@ -75,20 +75,20 @@
$transaction->body_write($result->{value});
}
else {
- $transaction->header->add($result->{header}, $result->{value});
+ push @{$transaction->notes('milter_header_changes')->{add}},
+ [$result->{header}, $result->{value}];
}
}
elsif ($result->{action} eq 'delete') {
- $transaction->header->delete($result->{header});
+ push @{$transaction->notes('milter_header_changes')->{delete}},
+ $result->{header};
}
elsif ($result->{action} eq 'accept') {
# TODO - figure out what this is used for
}
elsif ($result->{action} eq 'replace') {
- $transaction->header->replace($result->{header}, $result->{value});
- }
- elsif ($result->{action} eq 'continue') {
- # just carry on as normal
+ push @{$transaction->notes('milter_header_changes')->{replace}},
+ [$result->{header}, $result->{value}];
}
}
}
@@ -103,6 +103,9 @@
$self->qp->connection->notes(milter => $milter);
+ $self->qp->connection->notes(
+ milter_header_changes => { add => [], delete => [], replace => [], }
+ );
my $remote_ip = $self->qp->connection->remote_ip;
my $remote_host = $self->qp->connection->remote_host;
$self->log(LOGDEBUG, "milter $self->{name} checking connect from $remote_host\[$remote_ip\]");
@@ -221,6 +224,18 @@
$milter->send_end_body()) };
return(DENY, $@) if $@;
+ my $milter_header_changes = $transaction->notes('milter_header_changes');
+
+ foreach my $add (@{$milter_header_changes->{add}}) {
+ $headers->add($add->[0], $add->[1]);
+ }
+ foreach my $del (@{$milter_header_changes->{'delete'}}) {
+ $headers->delete($del);
+ }
+ foreach my $repl (@{$milter_header_changes->{replace}}) {
+ $headers->replace($repl->[0], $repl->[1]);
+ }
+
return DECLINED;
}