X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=scripts%2Fssoma-replay;h=46b15d7eb185d26d98304424fc33567dcdda2e34;hb=9253dc860de52360d3bc60710422783457143e3d;hp=91c121dd2f0e3eda8b1232d8c8cdfbab325ec8d7;hpb=3f779258173530ca88f31e1dc5332f951d2c44cd;p=public-inbox.git
diff --git a/scripts/ssoma-replay b/scripts/ssoma-replay
index 91c121dd..46b15d7e 100755
--- a/scripts/ssoma-replay
+++ b/scripts/ssoma-replay
@@ -1,5 +1,5 @@
#!/usr/bin/perl -w
-# Copyright (C) 2015-2016 all contributors
+# Copyright (C) 2015-2020 all contributors
# License: AGPL-3.0+
#
# A work-in-progress, but one day I hope this script is no longer
@@ -45,7 +45,9 @@ my $body = $msg->body;
my $list_id = $header_obj->header('List-Id');
my ($archive_url, $user, $domain);
if (defined $list_id) {
- ($user, $domain) = ($list_id =~ /<(.+)\@(.+)>/g);
+ # due to a bug in old versions of public-inbox, was used
+ # as the list-Id instead of as recommended in RFC2919
+ ($user, $domain) = ($list_id =~ /<([^\.@]+)[\.@](.+)>/g);
if (defined $domain) {
$archive_url = "https://$domain/$user/";
@@ -53,7 +55,8 @@ if (defined $list_id) {
if ($mid =~ /\A<(.+)>\z/) {
$mid = $1;
}
- $mid = uri_escape_utf8($mid);
+ $mid = uri_escape_utf8($mid,
+ '^A-Za-z0-9\-\._~!\$\&\';\(\)\*\+,;=:@');
$header_obj->header_set('List-Archive', "<$archive_url>");
foreach my $h (qw(Help Unsubscribe Subscribe Owner)) {