X-Git-Url: https://git.distorted.org.uk/~mdw/odin-cgi/blobdiff_plain/fafab3ed4e7aff2275500662a3885a6b4d11f501..f22ba7c6dbec7a6e8b30d699e13909abe4d82589:/lib/Odin.pm diff --git a/lib/Odin.pm b/lib/Odin.pm index a89ba88..d9307b2 100644 --- a/lib/Odin.pm +++ b/lib/Odin.pm @@ -574,23 +574,27 @@ sub check_fixup_redir ($) { } } -sub new_redir ($$\%) { - my ($dom, $gen, $r) = @_; +sub new_redir ($$\%;$) { + my ($dom, $gen, $r, $n) = @_; my $db = open_db; - my $l; + my @l; + $n //= 1; check_fixup_redir $r; Odin::xact { clear_redir_reservations $db; - $l = Odin::gen_redir_name $db, $gen; - insert_record $db, "odin_mailredir", - lpart => $l, dom => $dom, owner => $WHO, st => 'live', - recip => $r->{recip} // qualify_recip $Odin::WHO, - expire => $r->{expire} // -1, - comment => $r->{comment} // ""; + while (@l < $n) { + my $l = Odin::gen_redir_name $db, $gen; + insert_record $db, "odin_mailredir", + lpart => $l, dom => $dom, owner => $WHO, st => 'live', + recip => $r->{recip} // qualify_recip $Odin::WHO, + expire => $r->{expire} // -1, + comment => $r->{comment} // ""; + push @l, $l; + } check_redir_limits $db; } $db; - return $l; + return @l; } sub reserve_redir ($$$) {