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;
   }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.