X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2FPublicInbox%2FLeiSearch.pm;h=ff615d890d30d908128ed158271a43ba16b00893;hb=91ae332610370d2a5da2cfb0bd1dff09463e5438;hp=082176e7dbdda84e17784260baa82df8a333eb8f;hpb=ba0c73ae03214e57004af4192b57141c1a0fff9f;p=public-inbox.git diff --git a/lib/PublicInbox/LeiSearch.pm b/lib/PublicInbox/LeiSearch.pm index 082176e7..ff615d89 100644 --- a/lib/PublicInbox/LeiSearch.pm +++ b/lib/PublicInbox/LeiSearch.pm @@ -103,8 +103,16 @@ sub kw_changed { my $xoids = xoids_for($self, $eml) // return; $docids //= []; @$docids = sort { $a <=> $b } values %$xoids; - my @cur_kw = msg_keywords($self, $docids->[0]); - join("\0", @$new_kw_sorted) eq join("\0", @cur_kw) ? 0 : 1; + my $cur_kw = msg_keywords($self, $docids->[0]); + + # RFC 5550 sec 5.9 on the $Forwarded keyword states: + # "Once set, the flag SHOULD NOT be cleared" + if (exists($cur_kw->{forwarded}) && + !grep(/\Aforwarded\z/, @$new_kw_sorted)) { + delete $cur_kw->{forwarded}; + } + $cur_kw = join("\0", sort keys %$cur_kw); + join("\0", @$new_kw_sorted) eq $cur_kw ? 0 : 1; } sub all_terms {