diff --git a/lib/pop3.c b/lib/pop3.c
index 18d16e0..2e46599 100644
--- a/lib/pop3.c
+++ b/lib/pop3.c
@@ -605,15 +605,17 @@ static CURLcode pop3_state_capa_resp(struct connectdata *conn, int pop3code,
 
   if(pop3code == '+' && conn->proto.pop3c.authtypes) {
     /* Check supported authentication types by decreasing order of security */
-    if(conn->proto.pop3c.authtypes & POP3_TYPE_SASL)
+    if(conn->proto.pop3c.authtypes & POP3_TYPE_SASL) {
       result = pop3_authenticate(conn);
+    }
 #ifndef CURL_DISABLE_CRYPTO_AUTH
-    else if(conn->proto.pop3c.authtypes & POP3_TYPE_APOP)
+    if(result && conn->proto.pop3c.authtypes & POP3_TYPE_APOP)
       result = pop3_state_apop(conn);
 #endif
-    else if(conn->proto.pop3c.authtypes & POP3_TYPE_CLEARTEXT)
+    if(result && conn->proto.pop3c.authtypes & POP3_TYPE_CLEARTEXT)
       result = pop3_state_user(conn);
-    else {
+
+    if(result) {
       infof(conn->data, "No known authentication types supported!\n");
       result = CURLE_LOGIN_DENIED; /* Other types not supported */
     }
