]> Sergey Matveev's repositories - public-inbox.git/commitdiff
net_reader: escape nasty chars from Net::NNTP->message
authorEric Wong <e@80x24.org>
Mon, 22 Mar 2021 07:53:56 +0000 (07:53 +0000)
committerEric Wong <e@80x24.org>
Tue, 23 Mar 2021 00:07:10 +0000 (00:07 +0000)
Net::Cmd::message (used by Net::NNTP) does no escaping at all,
so "\r" was causing confusing/nonsensical error messages when
I tried to import from the wrong group.

lib/PublicInbox/NetReader.pm

index d3094fc7137eeb6546f1596ff3fa7d7d669ca399..bc2110291c07123d21a51bb7ec7ae3c0d2dee670 100644 (file)
@@ -7,11 +7,15 @@ use strict;
 use v5.10.1;
 use parent qw(Exporter PublicInbox::IPC);
 use PublicInbox::Eml;
-
 our %IMAPflags2kw = map {; "\\\u$_" => $_ } qw(seen answered flagged draft);
 
 our @EXPORT = qw(uri_section imap_uri nntp_uri);
 
+sub ndump {
+       require Data::Dumper;
+       Data::Dumper->new(\@_)->Useqq(1)->Terse(1)->Dump;
+}
+
 # returns the git config section name, e.g [imap "imaps://user@example.com"]
 # without the mailbox, so we can share connections between different inboxes
 sub uri_section ($) {
@@ -530,7 +534,7 @@ sub _nntp_fetch_all ($$$) {
        my $sec = uri_section($uri);
        my ($nr, $beg, $end) = $nn->group($group);
        unless (defined($nr)) {
-               chomp(my $msg = $nn->message);
+               my $msg = ndump($nn->message);
                return "E: GROUP $group <$sec> $msg";
        }
 
@@ -566,7 +570,7 @@ sub _nntp_fetch_all ($$$) {
                }
                my $raw = $nn->article($art);
                unless (defined($raw)) {
-                       my $msg = $nn->message;
+                       my $msg = ndump($nn->message);
                        if ($nn->code == 421) { # pseudo response from Net::Cmd
                                $err = "E: $msg";
                                last;