X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FIMAP.pm;h=7745d9f96f788962c14603bb520101a601a93f8b;hb=a62624ba8aa07f4d38d6d99623f6a2e679193896;hp=a2d59e5cccca9014e26416820bfdb4aca83b87d7;hpb=7952dfc9ba1255400f85068364150bc5e0db869d;p=public-inbox.git diff --git a/lib/PublicInbox/IMAP.pm b/lib/PublicInbox/IMAP.pm index a2d59e5c..7745d9f9 100644 --- a/lib/PublicInbox/IMAP.pm +++ b/lib/PublicInbox/IMAP.pm @@ -20,6 +20,7 @@ use fields qw(imapd logged_in ibx long_cb -login_tag use PublicInbox::Eml; use PublicInbox::DS qw(now); use PublicInbox::Syscall qw(EPOLLIN EPOLLONESHOT); +use Text::ParseWords qw(parse_line); use Errno qw(EAGAIN); my $Address; for my $mod (qw(Email::Address::XS Mail::Address)) { @@ -423,7 +424,8 @@ sub args_ok ($$) { # duplicated from PublicInbox::NNTP # returns 1 if we can continue, 0 if not due to buffered writes or disconnect sub process_line ($$) { my ($self, $l) = @_; - my ($tag, $req, @args) = split(/[ \t]+/, $l); + my ($tag, $req, @args) = parse_line('[ \t]+', 0, $l); + pop(@args) if (@args && !defined($args[-1])); if (@args && uc($req) eq 'UID') { $req .= "_".(shift @args); }