pop3: Fixed APOP being determined by CAPA response rather than by timestamp

This commit replaces that of 9f260b5d66 because according to RFC-2449,
section 6, there is no APOP capability "...even though APOP is an
optional command in [POP3].  Clients discover server support of APOP by
the presence in the greeting banner of an initial challenge enclosed in
angle brackets."
This commit is contained in:
Steve Holme 2013-12-24 16:32:48 +00:00
parent 82bf8edff3
commit 6f2d5f0562
3 changed files with 32 additions and 27 deletions

View file

@ -1707,32 +1707,39 @@ my $username;
sub CAPA_pop3 {
my ($testno) = @_;
my @list = ();
my $mechs;
if((!@capabilities) && (!@auth_mechs)) {
# Calculate the capability list based on the specified capabilities
# (except APOP) and any authentication mechanisms
for my $c (@capabilities) {
push @list, "$c\r\n" unless $c eq "APOP";
}
for my $am (@auth_mechs) {
if(!$mechs) {
$mechs = "$am";
}
else {
$mechs .= " $am";
}
}
if($mechs) {
push @list, "SASL $mechs\r\n";
}
if(!@list) {
sendcontrol "-ERR Unrecognized command\r\n";
}
else {
my @data = ();
my $mechs;
# Calculate the CAPA response
push @data, "+OK List of capabilities follows\r\n";
for my $c (@capabilities) {
push @data, "$c\r\n";
}
for my $am (@auth_mechs) {
if(!$mechs) {
$mechs = "$am";
}
else {
$mechs .= " $am";
}
}
if($mechs) {
push @data, "SASL $mechs\r\n";
for my $l (@list) {
push @data, "$l\r\n";
}
push @data, "IMPLEMENTATION POP3 pingpong test server\r\n";