diff options
author | Eduardo Chappa <chappa@washington.edu> | 2020-11-01 12:27:04 -0700 |
---|---|---|
committer | Eduardo Chappa <chappa@washington.edu> | 2020-11-01 12:27:04 -0700 |
commit | 649572ba29dfab09cb77a5c2f6f5d12e9822792c (patch) | |
tree | a9b3b2c64321f4ab302a70852b72e7443e4fbeba /imap | |
parent | 6486d2b43ee2ce595a4b292cd2620f56d7c20757 (diff) | |
download | alpine-649572ba29dfab09cb77a5c2f6f5d12e9822792c.tar.xz |
* Improvements to the cancel authentication logic to not to make it
have a delay when cancelling authentication.
Diffstat (limited to 'imap')
-rw-r--r-- | imap/src/c-client/auth_bea.c | 2 | ||||
-rw-r--r-- | imap/src/c-client/auth_oa2.c | 2 | ||||
-rw-r--r-- | imap/src/c-client/imap4r1.c | 25 |
3 files changed, 13 insertions, 16 deletions
diff --git a/imap/src/c-client/auth_bea.c b/imap/src/c-client/auth_bea.c index 64c3aa6c..d9f5e067 100644 --- a/imap/src/c-client/auth_bea.c +++ b/imap/src/c-client/auth_bea.c @@ -150,7 +150,7 @@ long auth_oauthbearer_client (authchallenge_t challenger,authrespond_t responder if(oauth2.param[OA2_Id].value) fs_give((void **) &oauth2.param[OA2_Id].value); if(oauth2.param[OA2_Secret].value) fs_give((void **) &oauth2.param[OA2_Secret].value); if(oauth2.param[OA2_Tenant].value) fs_give((void **) &oauth2.param[OA2_Tenant].value); - if (!ret || !oauth2.name) + if (!ret) *trial = 65535; /* don't retry if bad protocol */ return ret; } diff --git a/imap/src/c-client/auth_oa2.c b/imap/src/c-client/auth_oa2.c index dac87960..b446b40f 100644 --- a/imap/src/c-client/auth_oa2.c +++ b/imap/src/c-client/auth_oa2.c @@ -169,7 +169,7 @@ long auth_oauth2_client (authchallenge_t challenger,authrespond_t responder, cha if(oauth2.param[OA2_Id].value) fs_give((void **) &oauth2.param[OA2_Id].value); if(oauth2.param[OA2_Secret].value) fs_give((void **) &oauth2.param[OA2_Secret].value); if(oauth2.param[OA2_Tenant].value) fs_give((void **) &oauth2.param[OA2_Tenant].value); - if (!ret || !oauth2.name) + if (!ret) *trial = 65535; /* don't retry if bad protocol */ return ret; } diff --git a/imap/src/c-client/imap4r1.c b/imap/src/c-client/imap4r1.c index 7343122c..344eadaf 100644 --- a/imap/src/c-client/imap4r1.c +++ b/imap/src/c-client/imap4r1.c @@ -1215,23 +1215,20 @@ long imap_auth (MAILSTREAM *stream,NETMBX *mb,char *tmp,char *usr) ok = (*at->client) (imap_challenge,imap_response,base,"imap",mb,stream, net_port(LOCAL->netstream),&trial,usr); LOCAL->sensitive = NIL; /* unhide */ - - if(base && ok && !trial){ /* return now or see below for the same code */ - mm_log ("IMAP Authentication cancelled",ERROR); - return NIL; - } + if(!base){ /* make sure have a response */ - if (!(reply = &LOCAL->reply)->tag) - reply = imap_fake (stream,tag, + if (!(reply = &LOCAL->reply)->tag) + reply = imap_fake (stream,tag, "[CLOSED] IMAP connection broken (authenticate)"); - else if (compare_cstring (reply->tag,tag)) - while (compare_cstring ((reply = imap_reply (stream,tag))->tag,tag)) - imap_soutr (stream,"*"); + else if (compare_cstring (reply->tag,tag)) + while (compare_cstring ((reply = imap_reply (stream,tag))->tag,tag)) + imap_soutr (stream,"*"); /* good if SASL ok and success response */ - if (ok && imap_OK (stream,reply)){ - if(stream->auth.name) fs_give((void **) &stream->auth.name); - stream->auth.name = cpystr(at->name); /* save method name */ - return T; + if (ok && imap_OK (stream,reply)){ + if(stream->auth.name) fs_give((void **) &stream->auth.name); + stream->auth.name = cpystr(at->name); /* save method name */ + return T; + } } if (!trial) { /* if main program requested cancellation */ mm_log ("IMAP Authentication cancelled",ERROR); |