Loading lib/pop3.c +27 −2 Original line number Diff line number Diff line Loading @@ -436,6 +436,24 @@ static CURLcode pop3_state_list_resp(struct connectdata *conn, return result; } /* for LIST response with a given message */ static CURLcode pop3_state_list_single_resp(struct connectdata *conn, int pop3code, pop3state instate) { CURLcode result = CURLE_OK; struct SessionHandle *data = conn->data; (void)instate; /* no use for this yet */ if(pop3code != 'O') { failf(data, "Invalid message. %c", pop3code); result = CURLE_REMOTE_FILE_NOT_FOUND; } state(conn, POP3_STOP); return result; } /* start the DO phase for RETR */ static CURLcode pop3_retr(struct connectdata *conn) { Loading @@ -460,6 +478,9 @@ static CURLcode pop3_list(struct connectdata *conn) if(result) return result; if (strlen(pop3c->mailbox)) state(conn, POP3_LIST_SINGLE); else state(conn, POP3_LIST); return result; } Loading Loading @@ -523,6 +544,10 @@ static CURLcode pop3_statemach_act(struct connectdata *conn) result = pop3_state_list_resp(conn, pop3code, pop3c->state); break; case POP3_LIST_SINGLE: result = pop3_state_list_single_resp(conn, pop3code, pop3c->state); break; case POP3_QUIT: /* fallthrough, just stop! */ default: Loading Loading @@ -747,7 +772,7 @@ CURLcode pop3_perform(struct connectdata *conn, /* If mailbox is empty, then assume user wants listing for mail IDs, * otherwise, attempt to retrieve the mail-id stored in mailbox */ if (strlen(pop3c->mailbox)) if (strlen(pop3c->mailbox) && !conn->data->set.ftp_list_only) result = pop3_retr(conn); else result = pop3_list(conn); Loading lib/pop3.h +1 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ typedef enum { POP3_PASS, POP3_STARTTLS, POP3_LIST, POP3_LIST_SINGLE, POP3_RETR, POP3_QUIT, POP3_LAST /* never used */ Loading tests/data/DISABLED +1 −0 Original line number Diff line number Diff line Loading @@ -3,3 +3,4 @@ # per line. # Lines starting with '#' letters are treated as comments. 564 811 tests/data/Makefile.am +2 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,8 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test313 test1115 test578 test579 test1116 test1200 test1201 test1202 \ test1203 test1117 test1118 test1119 test1120 test1300 test1301 test1302 \ test1303 test320 test321 test322 test323 test324 test1121 test581 test580 \ test1304 test1305 test1306 test1307 test582 test583 test1304 test1305 test1306 test1307 test582 test583 test808 test809 \ test810 test811 filecheck: @mkdir test-place; \ Loading tests/data/test808 0 → 100644 +41 −0 Original line number Diff line number Diff line <testcase> <info> <keywords> POP3 LIST </keywords> </info> # # Server-side <reply> <servercmd> REPLY LIST +OK 808 100 </servercmd> </reply> # # Client-side <client> <server> pop3 </server> <name> POP3 LIST one message </name> <command> pop3://%HOSTIP:%POP3PORT/808 -l -u user:secret </command> </client> # # Verify data after the test has been "shot" <verify> <protocol> USER user PASS secret LIST 808 QUIT </protocol> </verify> </testcase> Loading
lib/pop3.c +27 −2 Original line number Diff line number Diff line Loading @@ -436,6 +436,24 @@ static CURLcode pop3_state_list_resp(struct connectdata *conn, return result; } /* for LIST response with a given message */ static CURLcode pop3_state_list_single_resp(struct connectdata *conn, int pop3code, pop3state instate) { CURLcode result = CURLE_OK; struct SessionHandle *data = conn->data; (void)instate; /* no use for this yet */ if(pop3code != 'O') { failf(data, "Invalid message. %c", pop3code); result = CURLE_REMOTE_FILE_NOT_FOUND; } state(conn, POP3_STOP); return result; } /* start the DO phase for RETR */ static CURLcode pop3_retr(struct connectdata *conn) { Loading @@ -460,6 +478,9 @@ static CURLcode pop3_list(struct connectdata *conn) if(result) return result; if (strlen(pop3c->mailbox)) state(conn, POP3_LIST_SINGLE); else state(conn, POP3_LIST); return result; } Loading Loading @@ -523,6 +544,10 @@ static CURLcode pop3_statemach_act(struct connectdata *conn) result = pop3_state_list_resp(conn, pop3code, pop3c->state); break; case POP3_LIST_SINGLE: result = pop3_state_list_single_resp(conn, pop3code, pop3c->state); break; case POP3_QUIT: /* fallthrough, just stop! */ default: Loading Loading @@ -747,7 +772,7 @@ CURLcode pop3_perform(struct connectdata *conn, /* If mailbox is empty, then assume user wants listing for mail IDs, * otherwise, attempt to retrieve the mail-id stored in mailbox */ if (strlen(pop3c->mailbox)) if (strlen(pop3c->mailbox) && !conn->data->set.ftp_list_only) result = pop3_retr(conn); else result = pop3_list(conn); Loading
lib/pop3.h +1 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ typedef enum { POP3_PASS, POP3_STARTTLS, POP3_LIST, POP3_LIST_SINGLE, POP3_RETR, POP3_QUIT, POP3_LAST /* never used */ Loading
tests/data/DISABLED +1 −0 Original line number Diff line number Diff line Loading @@ -3,3 +3,4 @@ # per line. # Lines starting with '#' letters are treated as comments. 564 811
tests/data/Makefile.am +2 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,8 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test313 test1115 test578 test579 test1116 test1200 test1201 test1202 \ test1203 test1117 test1118 test1119 test1120 test1300 test1301 test1302 \ test1303 test320 test321 test322 test323 test324 test1121 test581 test580 \ test1304 test1305 test1306 test1307 test582 test583 test1304 test1305 test1306 test1307 test582 test583 test808 test809 \ test810 test811 filecheck: @mkdir test-place; \ Loading
tests/data/test808 0 → 100644 +41 −0 Original line number Diff line number Diff line <testcase> <info> <keywords> POP3 LIST </keywords> </info> # # Server-side <reply> <servercmd> REPLY LIST +OK 808 100 </servercmd> </reply> # # Client-side <client> <server> pop3 </server> <name> POP3 LIST one message </name> <command> pop3://%HOSTIP:%POP3PORT/808 -l -u user:secret </command> </client> # # Verify data after the test has been "shot" <verify> <protocol> USER user PASS secret LIST 808 QUIT </protocol> </verify> </testcase>