aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/imap.c6
-rw-r--r--lib/pop3.c20
2 files changed, 14 insertions, 12 deletions
diff --git a/lib/imap.c b/lib/imap.c
index 320101b5d..27e67ff00 100644
--- a/lib/imap.c
+++ b/lib/imap.c
@@ -339,6 +339,7 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
if(len >= id_len + 3) {
if(!memcmp(id, line, id_len) && line[id_len] == ' ') {
*resp = line[id_len + 1]; /* O, N or B */
+
return TRUE;
}
}
@@ -347,6 +348,7 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
if((len == 3 && !memcmp("+", line, 1)) ||
(len >= 2 && !memcmp("+ ", line, 2))) {
*resp = '+';
+
return TRUE;
}
@@ -416,12 +418,12 @@ static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
}
}
}
-
/* Are we processing FETCH command responses? */
- if(imapc->state == IMAP_FETCH) {
+ else if(imapc->state == IMAP_FETCH) {
/* Do we have a valid response? */
if(len >= 2 && !memcmp("* ", line, 2)) {
*resp = '*';
+
return TRUE;
}
}
diff --git a/lib/pop3.c b/lib/pop3.c
index 3fbe14e61..65450674c 100644
--- a/lib/pop3.c
+++ b/lib/pop3.c
@@ -216,10 +216,10 @@ static void pop3_to_pop3s(struct connectdata *conn)
#define pop3_to_pop3s(x) Curl_nop_stmt
#endif
-/* Function that checks for an ending pop3 status code at the start of the
+/* Function that checks for an ending POP3 status code at the start of the
given string, but also detects the APOP timestamp from the server greeting
- as well as the supported authentication types and allowed SASL mechanisms
- from the CAPA response. */
+ and various capabilities from the CAPA response including the supported
+ authentication types and allowed SASL mechanisms. */
static bool pop3_endofresp(struct connectdata *conn, char *line, size_t len,
int *resp)
{
@@ -259,7 +259,6 @@ static bool pop3_endofresp(struct connectdata *conn, char *line, size_t len,
}
/* Are we processing CAPA command responses? */
else if(pop3c->state == POP3_CAPA) {
-
/* Do we have the terminating line? */
if(len >= 1 && !memcmp(line, ".", 1)) {
*resp = '+';
@@ -330,14 +329,15 @@ static bool pop3_endofresp(struct connectdata *conn, char *line, size_t len,
return FALSE;
}
- if((len < 1 || memcmp("+", line, 1)) &&
- (len < 3 || memcmp("+OK", line, 3)))
- return FALSE; /* Nothing for us */
+ /* Do we have a command or continuation response? */
+ if((len >= 3 && !memcmp("+OK", line, 3)) ||
+ (len >= 1 && !memcmp("+", line, 1))) {
+ *resp = '+';
- /* Otherwise it's a positive response */
- *resp = '+';
+ return TRUE;
+ }
- return TRUE;
+ return FALSE; /* Nothing for us */
}
/* This is the ONLY way to change POP3 state! */