Skip to content
  • Johannes Schindelin's avatar
    http: support sending custom HTTP headers · 8cb01e2f
    Johannes Schindelin authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    We introduce a way to send custom HTTP headers with all requests.
    
    This allows us, for example, to send an extra token from build agents
    for temporary access to private repositories. (This is the use case that
    triggered this patch.)
    
    This feature can be used like this:
    
    	git -c http.extraheader='Secret: sssh!' fetch $URL $REF
    
    Note that `curl_easy_setopt(..., CURLOPT_HTTPHEADER, ...)` takes only
    a single list, overriding any previous call. This means we have to
    collect _all_ of the headers we want to use into a single list, and
    feed it to cURL in one shot. Since we already unconditionally set a
    "pragma" header when initializing the curl handles, we can add our new
    headers to that list.
    
    For callers which override the default header list (like probe_rpc),
    we provide `http_copy_default_headers()` so they can do the same
    trick.
    
    Big thanks to Jeff King and Junio Hamano for their outstanding help and
    patient reviews.
    
    Signed-off-by: default avatarJohannes Schindelin <johannes.schindelin@gmx.de>
    Reviewed-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    8cb01e2f