aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/data/Makefile.am2
-rw-r--r--tests/data/test86453
-rwxr-xr-xtests/ftpserver.pl5
3 files changed, 58 insertions, 2 deletions
diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index 485831760..4c9b4379d 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -67,7 +67,7 @@ test800 test801 test802 test803 test804 test805 test806 test807 test808 \
test809 test810 test811 test812 test813 test814 \
\
test850 test851 test852 test853 test854 test855 test856 test857 test858 \
-test859 test860 test861 test862 test863 \
+test859 test860 test861 test862 test863 test864 \
\
test900 test901 test902 test903 test904 test905 test906 test907 test908 \
test909 test910 test911 test912 test913 test914 test915 test916 test917 \
diff --git a/tests/data/test864 b/tests/data/test864
new file mode 100644
index 000000000..c4cb61f67
--- /dev/null
+++ b/tests/data/test864
@@ -0,0 +1,53 @@
+<testcase>
+<info>
+<keywords>
+POP3
+POP3 APOP
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<servercmd>
+CAPA APOP
+</servercmd>
+<data>
+From: me@somewhere
+To: fake@nowhere
+
+body
+
+--
+ yours sincerely
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+pop3
+</server>
+<features>
+crypto
+</features>
+ <name>
+POP3 APOP authentication
+ </name>
+ <command>
+pop3://%HOSTIP:%POP3PORT/864 -u user:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+CAPA
+APOP user 7501b4cdc224d469940e65e7b5e4d6eb
+RETR 864
+QUIT
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl
index 7efc8be04..d0986ea77 100755
--- a/tests/ftpserver.pl
+++ b/tests/ftpserver.pl
@@ -1640,7 +1640,10 @@ sub APOP_pop3 {
my ($args) = @_;
my ($user, $secret) = split(/ /, $args, 2);
- if (($user eq "") || ($secret eq "")) {
+ if (!grep /^APOP$/, @capabilities) {
+ sendcontrol "-ERR Unrecognized command\r\n";
+ }
+ elsif (($user eq "") || ($secret eq "")) {
sendcontrol "-ERR Protocol error\r\n";
}
else {