aboutsummaryrefslogtreecommitdiff
path: root/lib/Sietima/Role/Debounce.pm
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2017-03-24 17:57:04 +0000
committerdakkar <dakkar@thenautilus.net>2017-03-24 17:57:04 +0000
commitb2074b822e39b09bcc0b44ce77b8ceab21e52069 (patch)
tree800182ec459b5efbd2a0b190727ef05c1922e8c5 /lib/Sietima/Role/Debounce.pm
parentv1.0.1 (diff)
parentDzil-build release 1.0.0 (from 9f1fc6d on master) (diff)
downloadSietima-b2074b822e39b09bcc0b44ce77b8ceab21e52069.tar.gz
Sietima-b2074b822e39b09bcc0b44ce77b8ceab21e52069.tar.bz2
Sietima-b2074b822e39b09bcc0b44ce77b8ceab21e52069.zip
Dzil-build release 1.0.1 (from 5ab528e on master)v1.0.1
Diffstat (limited to 'lib/Sietima/Role/Debounce.pm')
-rw-r--r--lib/Sietima/Role/Debounce.pm58
1 files changed, 43 insertions, 15 deletions
diff --git a/lib/Sietima/Role/Debounce.pm b/lib/Sietima/Role/Debounce.pm
index e6bd087..b75ed57 100644
--- a/lib/Sietima/Role/Debounce.pm
+++ b/lib/Sietima/Role/Debounce.pm
@@ -3,9 +3,41 @@ use Moo::Role;
use Sietima::Policy;
use namespace::clean;
-# VERSION
+our $VERSION = '1.0.1'; # VERSION
# ABSTRACT: avoid mail loops
+
+my $been_there = 'X-Been-There';
+
+around munge_mail => sub ($orig,$self,$incoming_mail) {
+ my $return_path = $self->return_path->address;
+ if (my $there = $incoming_mail->header_str($been_there)) {
+ return if $there =~ m{\b\Q$return_path\E\b};
+ }
+
+ $incoming_mail->header_str_set(
+ $been_there => $return_path,
+ );
+
+ return $self->$orig($incoming_mail);
+};
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+Sietima::Role::Debounce - avoid mail loops
+
+=head1 VERSION
+
+version 1.0.1
+
=head1 SYNOPSIS
my $sietima = Sietima->with_traits('Debounce')->new(\%args);
@@ -18,28 +50,24 @@ have that same header. This prevents messages bounced by other
services from being looped between the mailing list and those other
services.
-=modif C<munge_mail>
+=head1 MODIFIED METHODS
+
+=head2 C<munge_mail>
If the incoming email contains our C<X-Been-There:> header, this
method will return an empty list (essentially dropping the message).
Otherwise, the header is added, and the email is processed normally.
-=cut
+=head1 AUTHOR
-my $been_there = 'X-Been-There';
+Gianni Ceccarelli <dakkar@thenautilus.net>
-around munge_mail => sub ($orig,$self,$incoming_mail) {
- my $return_path = $self->return_path->address;
- if (my $there = $incoming_mail->header_str($been_there)) {
- return if $there =~ m{\b\Q$return_path\E\b};
- }
+=head1 COPYRIGHT AND LICENSE
- $incoming_mail->header_str_set(
- $been_there => $return_path,
- );
+This software is copyright (c) 2017 by Gianni Ceccarelli <dakkar@thenautilus.net>.
- return $self->$orig($incoming_mail);
-};
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
-1;
+=cut