-# Only called by PSGI interface, not NNTP
-sub from_mitem {
- my ($mitem, $srch) = @_;
- return $srch->retry_reopen(\&from_mitem, $mitem) if $srch;
- my $self = bless {}, __PACKAGE__;
- psgi_cull(load_expand($self, $mitem->get_document));
+sub parse_references ($$$) {
+ my ($smsg, $hdr, $mids) = @_;
+ my $refs = references($hdr);
+ push(@$refs, @$mids) if scalar(@$mids) > 1;
+ return $refs if scalar(@$refs) == 0;
+
+ # prevent circular references here:
+ my %seen = ( ($smsg->{mid} // '') => 1 );
+ my @keep;
+ foreach my $ref (@$refs) {
+ if (length($ref) > PublicInbox::MID::MAX_MID_SIZE) {
+ warn "References: <$ref> too long, ignoring\n";
+ next;
+ }
+ $seen{$ref} //= push(@keep, $ref);
+ }
+ $smsg->{references} = '<'.join('> <', @keep).'>' if @keep;
+ \@keep;