Merge branch 'js/http-custom-headers'
HTTP transport clients learned to throw extra HTTP headers at the server, specified via http.extraHeader configuration variable. * js/http-custom-headers: http: support sending custom HTTP headers
This commit is contained in:
35
http.c
35
http.c
@ -114,6 +114,7 @@ static unsigned long http_auth_methods = CURLAUTH_ANY;
|
||||
|
||||
static struct curl_slist *pragma_header;
|
||||
static struct curl_slist *no_pragma_header;
|
||||
static struct curl_slist *extra_http_headers;
|
||||
|
||||
static struct active_request_slot *active_queue_head;
|
||||
|
||||
@ -323,6 +324,19 @@ static int http_options(const char *var, const char *value, void *cb)
|
||||
#endif
|
||||
}
|
||||
|
||||
if (!strcmp("http.extraheader", var)) {
|
||||
if (!value) {
|
||||
return config_error_nonbool(var);
|
||||
} else if (!*value) {
|
||||
curl_slist_free_all(extra_http_headers);
|
||||
extra_http_headers = NULL;
|
||||
} else {
|
||||
extra_http_headers =
|
||||
curl_slist_append(extra_http_headers, value);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Fall back on the default ones */
|
||||
return git_default_config(var, value, cb);
|
||||
}
|
||||
@ -678,8 +692,10 @@ void http_init(struct remote *remote, const char *url, int proactive_auth)
|
||||
if (remote)
|
||||
var_override(&http_proxy_authmethod, remote->http_proxy_authmethod);
|
||||
|
||||
pragma_header = curl_slist_append(pragma_header, "Pragma: no-cache");
|
||||
no_pragma_header = curl_slist_append(no_pragma_header, "Pragma:");
|
||||
pragma_header = curl_slist_append(http_copy_default_headers(),
|
||||
"Pragma: no-cache");
|
||||
no_pragma_header = curl_slist_append(http_copy_default_headers(),
|
||||
"Pragma:");
|
||||
|
||||
#ifdef USE_CURL_MULTI
|
||||
{
|
||||
@ -765,6 +781,9 @@ void http_cleanup(void)
|
||||
#endif
|
||||
curl_global_cleanup();
|
||||
|
||||
curl_slist_free_all(extra_http_headers);
|
||||
extra_http_headers = NULL;
|
||||
|
||||
curl_slist_free_all(pragma_header);
|
||||
pragma_header = NULL;
|
||||
|
||||
@ -1163,6 +1182,16 @@ int run_one_slot(struct active_request_slot *slot,
|
||||
return handle_curl_result(results);
|
||||
}
|
||||
|
||||
struct curl_slist *http_copy_default_headers(void)
|
||||
{
|
||||
struct curl_slist *headers = NULL, *h;
|
||||
|
||||
for (h = extra_http_headers; h; h = h->next)
|
||||
headers = curl_slist_append(headers, h->data);
|
||||
|
||||
return headers;
|
||||
}
|
||||
|
||||
static CURLcode curlinfo_strbuf(CURL *curl, CURLINFO info, struct strbuf *buf)
|
||||
{
|
||||
char *ptr;
|
||||
@ -1380,7 +1409,7 @@ static int http_request(const char *url,
|
||||
{
|
||||
struct active_request_slot *slot;
|
||||
struct slot_results results;
|
||||
struct curl_slist *headers = NULL;
|
||||
struct curl_slist *headers = http_copy_default_headers();
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
const char *accept_language;
|
||||
int ret;
|
||||
|
Reference in New Issue
Block a user