about summary refs log tree commit homepage
path: root/lib/PublicInbox/LeiToMail.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/LeiToMail.pm')
-rw-r--r--lib/PublicInbox/LeiToMail.pm8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/PublicInbox/LeiToMail.pm b/lib/PublicInbox/LeiToMail.pm
index 0cbdff8b..96a1f881 100644
--- a/lib/PublicInbox/LeiToMail.pm
+++ b/lib/PublicInbox/LeiToMail.pm
@@ -243,10 +243,14 @@ sub _rand () {
         sprintf('%x,%x,%x,%x', rand(0xffffffff), time, $$, ++$seq);
 }
 
+sub kw2suffix ($;@) {
+        my $kw = shift;
+        join('', sort(map { $kw2char{$_} // () } @$kw, @_));
+}
+
 sub _buf2maildir {
         my ($dst, $buf, $smsg) = @_;
         my $kw = $smsg->{kw} // [];
-        my $sfx = join('', sort(map { $kw2char{$_} // () } @$kw));
         my $rand = ''; # chosen by die roll :P
         my ($tmp, $fh, $base, $ok);
         my $common = $smsg->{blob} // _rand;
@@ -263,7 +267,7 @@ sub _buf2maildir {
                 $dst .= 'cur/';
                 $rand = '';
                 do {
-                        $base = $rand.$common.':2,'.$sfx
+                        $base = $rand.$common.':2,'.kw2suffix($kw);
                 } while (!($ok = link($tmp, $dst.$base)) && $!{EEXIST} &&
                         ($rand = _rand.','));
                 die "link($tmp, $dst$base): $!" unless $ok;