diff options
author | Steve Holme <steve_holme@hotmail.com> | 2013-10-27 22:20:18 +0000 |
---|---|---|
committer | Steve Holme <steve_holme@hotmail.com> | 2013-10-27 22:25:18 +0000 |
commit | f68559c086b74e092f72b72641d3a1a043cfa636 (patch) | |
tree | 04e40781d6e13993b166ced7555d6ceb6ba85069 /lib/imap.c | |
parent | 08f97f3b1d66e65ead0c32730ec5e37bf44b59fb (diff) | |
download | curl-f68559c086b74e092f72b72641d3a1a043cfa636.tar.gz |
email: Added support for cancelling NTLM authentication
Diffstat (limited to 'lib/imap.c')
-rw-r--r-- | lib/imap.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/lib/imap.c b/lib/imap.c index 9fa737b39..c11e43bd6 100644 --- a/lib/imap.c +++ b/lib/imap.c @@ -1290,24 +1290,32 @@ static CURLcode imap_state_auth_ntlm_type2msg_resp(struct connectdata *conn, /* Get the challenge message */ imap_get_message(data->state.buffer, &type2msg); - /* Create the type-3 message */ - result = Curl_sasl_create_ntlm_type3_message(data, type2msg, conn->user, - conn->passwd, &conn->ntlm, - &type3msg, &len); + /* Decode the type-2 message */ + result = Curl_sasl_decode_ntlm_type2_message(data, type2msg, &conn->ntlm); + if(result) { + /* Send the cancellation */ + result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", "*"); - /* Send the message */ - if(!result) { - if(type3msg) { + if(!result) + state(conn, IMAP_AUTHENTICATE_CANCEL); + } + else { + /* Create the type-3 message */ + result = Curl_sasl_create_ntlm_type3_message(data, conn->user, + conn->passwd, &conn->ntlm, + &type3msg, &len); + if(!result && type3msg) { + /* Send the message */ result = Curl_pp_sendf(&conn->proto.imapc.pp, "%s", type3msg); if(!result) state(conn, IMAP_AUTHENTICATE_FINAL); } - - Curl_safefree(type3msg); } } + Curl_safefree(type3msg); + return result; } #endif |