Merge branch 'bc/credential-scheme-enhancement'
The credential helper protocol, together with the HTTP layer, have been enhanced to support authentication schemes different from username & password pair, like Bearer and NTLM. * bc/credential-scheme-enhancement: credential: add method for querying capabilities credential-cache: implement authtype capability t: add credential tests for authtype credential: add support for multistage credential rounds t5563: refactor for multi-stage authentication docs: set a limit on credential line length credential: enable state capability credential: add an argument to keep state http: add support for authtype and credential docs: indicate new credential protocol fields credential: add a field called "ephemeral" credential: gate new fields on capability credential: add a field for pre-encoded credentials http: use new headers for each object request remote-curl: reset headers on new request credential: add an authtype field
This commit is contained in:
@ -889,7 +889,7 @@ static curl_off_t xcurl_off_t(size_t len)
|
||||
static int post_rpc(struct rpc_state *rpc, int stateless_connect, int flush_received)
|
||||
{
|
||||
struct active_request_slot *slot;
|
||||
struct curl_slist *headers = http_copy_default_headers();
|
||||
struct curl_slist *headers = NULL;
|
||||
int use_gzip = rpc->gzip_request;
|
||||
char *gzip_body = NULL;
|
||||
size_t gzip_size = 0;
|
||||
@ -922,20 +922,24 @@ static int post_rpc(struct rpc_state *rpc, int stateless_connect, int flush_rece
|
||||
do {
|
||||
err = probe_rpc(rpc, &results);
|
||||
if (err == HTTP_REAUTH)
|
||||
credential_fill(&http_auth);
|
||||
credential_fill(&http_auth, 0);
|
||||
} while (err == HTTP_REAUTH);
|
||||
if (err != HTTP_OK)
|
||||
return -1;
|
||||
|
||||
if (results.auth_avail & CURLAUTH_GSSNEGOTIATE)
|
||||
if (results.auth_avail & CURLAUTH_GSSNEGOTIATE || http_auth.authtype)
|
||||
needs_100_continue = 1;
|
||||
}
|
||||
|
||||
retry:
|
||||
headers = http_copy_default_headers();
|
||||
headers = curl_slist_append(headers, rpc->hdr_content_type);
|
||||
headers = curl_slist_append(headers, rpc->hdr_accept);
|
||||
headers = curl_slist_append(headers, needs_100_continue ?
|
||||
"Expect: 100-continue" : "Expect:");
|
||||
|
||||
headers = http_append_auth_header(&http_auth, headers);
|
||||
|
||||
/* Add Accept-Language header */
|
||||
if (rpc->hdr_accept_language)
|
||||
headers = curl_slist_append(headers, rpc->hdr_accept_language);
|
||||
@ -944,7 +948,6 @@ static int post_rpc(struct rpc_state *rpc, int stateless_connect, int flush_rece
|
||||
if (rpc->protocol_header)
|
||||
headers = curl_slist_append(headers, rpc->protocol_header);
|
||||
|
||||
retry:
|
||||
slot = get_active_slot();
|
||||
|
||||
curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
|
||||
@ -1041,7 +1044,8 @@ retry:
|
||||
rpc->any_written = 0;
|
||||
err = run_slot(slot, NULL);
|
||||
if (err == HTTP_REAUTH && !large_request) {
|
||||
credential_fill(&http_auth);
|
||||
credential_fill(&http_auth, 0);
|
||||
curl_slist_free_all(headers);
|
||||
goto retry;
|
||||
}
|
||||
if (err != HTTP_OK)
|
||||
|
Reference in New Issue
Block a user