diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/imap.c | 24 | ||||
-rw-r--r-- | lib/imap.h | 1 | ||||
-rw-r--r-- | lib/pop3.c | 22 | ||||
-rw-r--r-- | lib/pop3.h | 1 | ||||
-rw-r--r-- | lib/smtp.c | 22 | ||||
-rw-r--r-- | lib/smtp.h | 1 |
6 files changed, 67 insertions, 4 deletions
diff --git a/lib/imap.c b/lib/imap.c index f856dcd3d..b17b7e533 100644 --- a/lib/imap.c +++ b/lib/imap.c @@ -426,6 +426,7 @@ static void state(struct connectdata *conn, imapstate newstate) "AUTHENTICATE_NTLM", "AUTHENTICATE_NTLM_TYPE2MSG", "AUTHENTICATE_XOAUTH2", + "AUTHENTICATE_CANCEL", "AUTHENTICATE_FINAL", "LOGIN", "LIST", @@ -1287,7 +1288,7 @@ static CURLcode imap_state_auth_ntlm_type2msg_resp(struct connectdata *conn, } #endif -/* For AUTH XOAUTH2 (without initial response) responses */ +/* For AUTHENTICATE XOAUTH2 (without initial response) responses */ static CURLcode imap_state_auth_xoauth2_resp(struct connectdata *conn, int imapcode, imapstate instate) @@ -1325,7 +1326,22 @@ static CURLcode imap_state_auth_xoauth2_resp(struct connectdata *conn, return result; } -/* For final responses to the AUTHENTICATE sequence */ +/* For AUTHENTICATE cancellation responses */ +static CURLcode imap_state_auth_cancel_resp(struct connectdata *conn, + int imapcode, + imapstate instate) +{ + struct SessionHandle *data = conn->data; + + (void)imapcode; + (void)instate; /* no use for this yet */ + + failf(data, "Authentication cancelled"); + + return CURLE_LOGIN_DENIED; +} + +/* For final responses in the AUTHENTICATE sequence */ static CURLcode imap_state_auth_final_resp(struct connectdata *conn, int imapcode, imapstate instate) @@ -1678,6 +1694,10 @@ static CURLcode imap_statemach_act(struct connectdata *conn) result = imap_state_auth_xoauth2_resp(conn, imapcode, imapc->state); break; + case IMAP_AUTHENTICATE_CANCEL: + result = imap_state_auth_cancel_resp(conn, imapcode, imapc->state); + break; + case IMAP_AUTHENTICATE_FINAL: result = imap_state_auth_final_resp(conn, imapcode, imapc->state); break; diff --git a/lib/imap.h b/lib/imap.h index 1d4faabd7..7c9a72066 100644 --- a/lib/imap.h +++ b/lib/imap.h @@ -44,6 +44,7 @@ typedef enum { IMAP_AUTHENTICATE_NTLM, IMAP_AUTHENTICATE_NTLM_TYPE2MSG, IMAP_AUTHENTICATE_XOAUTH2, + IMAP_AUTHENTICATE_CANCEL, IMAP_AUTHENTICATE_FINAL, IMAP_LOGIN, IMAP_LIST, diff --git a/lib/pop3.c b/lib/pop3.c index 7fc755e12..f4dc5d1b3 100644 --- a/lib/pop3.c +++ b/lib/pop3.c @@ -405,6 +405,7 @@ static void state(struct connectdata *conn, pop3state newstate) "AUTH_NTLM", "AUTH_NTLM_TYPE2MSG", "AUTH_XOAUTH2", + "AUTH_CANCEL", "AUTH_FINAL", "APOP", "USER", @@ -1182,7 +1183,22 @@ static CURLcode pop3_state_auth_xoauth2_resp(struct connectdata *conn, return result; } -/* For final responses to the AUTH sequence */ +/* For AUTH cancellation responses */ +static CURLcode pop3_state_auth_cancel_resp(struct connectdata *conn, + int pop3code, + pop3state instate) +{ + struct SessionHandle *data = conn->data; + + (void)pop3code; + (void)instate; /* no use for this yet */ + + failf(data, "Authentication cancelled"); + + return CURLE_LOGIN_DENIED; +} + +/* For final responses in the AUTH sequence */ static CURLcode pop3_state_auth_final_resp(struct connectdata *conn, int pop3code, pop3state instate) @@ -1404,6 +1420,10 @@ static CURLcode pop3_statemach_act(struct connectdata *conn) result = pop3_state_auth_xoauth2_resp(conn, pop3code, pop3c->state); break; + case POP3_AUTH_CANCEL: + result = pop3_state_auth_cancel_resp(conn, pop3code, pop3c->state); + break; + case POP3_AUTH_FINAL: result = pop3_state_auth_final_resp(conn, pop3code, pop3c->state); break; diff --git a/lib/pop3.h b/lib/pop3.h index 7bc774495..1964d72e4 100644 --- a/lib/pop3.h +++ b/lib/pop3.h @@ -44,6 +44,7 @@ typedef enum { POP3_AUTH_NTLM, POP3_AUTH_NTLM_TYPE2MSG, POP3_AUTH_XOAUTH2, + POP3_AUTH_CANCEL, POP3_AUTH_FINAL, POP3_APOP, POP3_USER, diff --git a/lib/smtp.c b/lib/smtp.c index 9540ddb5e..7e07ba6d9 100644 --- a/lib/smtp.c +++ b/lib/smtp.c @@ -363,6 +363,7 @@ static void state(struct connectdata *conn, smtpstate newstate) "AUTH_NTLM", "AUTH_NTLM_TYPE2MSG", "AUTH_XOAUTH2", + "AUTH_CANCEL", "AUTH_FINAL", "MAIL", "RCPT", @@ -1163,7 +1164,22 @@ static CURLcode smtp_state_auth_xoauth2_resp(struct connectdata *conn, return result; } -/* For the final responses to the AUTH sequence */ +/* For AUTH cancellation responses */ +static CURLcode smtp_state_auth_cancel_resp(struct connectdata *conn, + int smtpcode, + smtpstate instate) +{ + struct SessionHandle *data = conn->data; + + (void)smtpcode; + (void)instate; /* no use for this yet */ + + failf(data, "Authentication cancelled"); + + return CURLE_LOGIN_DENIED; +} + +/* For final responses in the AUTH sequence */ static CURLcode smtp_state_auth_final_resp(struct connectdata *conn, int smtpcode, smtpstate instate) @@ -1375,6 +1391,10 @@ static CURLcode smtp_statemach_act(struct connectdata *conn) result = smtp_state_auth_xoauth2_resp(conn, smtpcode, smtpc->state); break; + case SMTP_AUTH_CANCEL: + result = smtp_state_auth_cancel_resp(conn, smtpcode, smtpc->state); + break; + case SMTP_AUTH_FINAL: result = smtp_state_auth_final_resp(conn, smtpcode, smtpc->state); break; diff --git a/lib/smtp.h b/lib/smtp.h index 14429a5e7..7d91657a4 100644 --- a/lib/smtp.h +++ b/lib/smtp.h @@ -45,6 +45,7 @@ typedef enum { SMTP_AUTH_NTLM, SMTP_AUTH_NTLM_TYPE2MSG, SMTP_AUTH_XOAUTH2, + SMTP_AUTH_CANCEL, SMTP_AUTH_FINAL, SMTP_MAIL, /* MAIL FROM */ SMTP_RCPT, /* RCPT TO */ |