'Missing mailing list name in path component');
}
my $user = eval { $self->{cipher}->decrypt(decode_base64url($u)) };
- if (!defined $user) {
+ if (!defined $user || index($user, '@') < 1) {
my $err = quotemeta($@);
my $errors = $env->{'psgi.errors'};
$errors->print("error decrypting: $u\n");
$errors->print("$_\n") for split("\n", $err);
+ $u = Plack::Util::encode_html($u);
return r($self, 400, 'Bad request', "Failed to decrypt: $u");
}
# The URLs are too damn long if we have the encrypted domain
- # name in the query string
+ # name in the PATH_INFO
if (index($list, '@') < 0) {
my $host = (split(':', $env->{HTTP_HOST}))[0];
$list .= '@'.$host;
}
# protocol-relative URL: "//example.com/" => "https://example.com/"
- if ($archive_url =~ m!\A//!) {
+ if ($archive_url && $archive_url =~ m!\A//!) {
$archive_url = "$env->{'psgi.url_scheme'}:$archive_url";
}