$hdr .= "\r\n\r\n";
my @tmp = split(/^/m, $bdy);
$hdr .= join('', splice(@tmp, 0, $top_nr));
+ } elsif (exists $self->{expire}) {
+ $self->{expire} .= pack('S', $off + 1);
}
$$bref =~ s/^\./../gms;
$$bref .= substr($$bref, -2, 2) eq "\r\n" ? ".\r\n" : "\r\n.\r\n";
$self->msg_more("+OK message follows\r\n");
$self->write($bref);
- $self->{expire} .= pack('S', $off + 1) if exists $self->{expire};
$self->requeue;
}
ok(defined($capa->{PIPELINING}), 'pipelining supported by CAPA');
is($capa->{EXPIRE}, 0, 'EXPIRE 0 set');
- # clients which see "EXPIRE 0" can elide DELE requests
+ # ensure TOP doesn't trigger "EXPIRE 0" like RETR does (cf. RFC2449)
my $list = $oldc->list;
+ ok(scalar keys %$list, 'got a listing of messages');
+ ok($oldc->top($_, 1), "TOP $_ 1") for keys %$list;
+ ok($oldc->quit, 'QUIT after TOP');
+
+ # clients which see "EXPIRE 0" can elide DELE requests
+ $oldc = Net::POP3->new(@old_args);
+ ok($oldc->apop("$locked_mb.0", 'anonymous'), 'APOP for RETR');
+ is_deeply($oldc->capa, $capa, 'CAPA unchanged');
+ is_deeply($oldc->list, $list, 'LIST unchanged by previous TOP');
ok($oldc->get($_), "RETR $_") for keys %$list;
ok($oldc->quit, 'QUIT after RETR');