about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-03-22 07:53:56 +0000
committerEric Wong <e@80x24.org>2021-03-23 00:07:10 +0000
commit5766ab8c589b93b1851294825168eb8246ff715e (patch)
treebc1dbf3a0ed900816e98b7ac666f8d94cd881818
parent5716d0b341e32710963bfff869130cc2cfc1cb7b (diff)
downloadpublic-inbox-5766ab8c589b93b1851294825168eb8246ff715e.tar.gz
net_reader: escape nasty chars from Net::NNTP->message
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.
-rw-r--r--lib/PublicInbox/NetReader.pm10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/PublicInbox/NetReader.pm b/lib/PublicInbox/NetReader.pm
index d3094fc7..bc211029 100644
--- a/lib/PublicInbox/NetReader.pm
+++ b/lib/PublicInbox/NetReader.pm
@@ -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;