http: do not send PROXY more than once
Unlike `CONNECT`, currently we don't keep track whether `PROXY` is already sent or not. This causes `PROXY` header to be sent twice during `MSTATE_TUNNELING` and `MSTATE_PROTOCONNECT`. Closes #9878 Fixes #9442
This commit is contained in:
parent
6d75115406
commit
11ad25fff4
@ -1572,11 +1572,14 @@ CURLcode Curl_http_connect(struct Curl_easy *data, bool *done)
|
||||
/* nothing else to do except wait right now - we're not done here. */
|
||||
return CURLE_OK;
|
||||
|
||||
if(data->set.haproxyprotocol) {
|
||||
if(data->set.haproxyprotocol && !data->state.is_haproxy_hdr_sent) {
|
||||
/* add HAProxy PROXY protocol header */
|
||||
result = add_haproxy_protocol_header(data);
|
||||
if(result)
|
||||
return result;
|
||||
|
||||
/* do not send the header again after successful try */
|
||||
data->state.is_haproxy_hdr_sent = TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@ -1461,6 +1461,10 @@ struct UrlState {
|
||||
trailers_state trailers_state; /* whether we are sending trailers
|
||||
and what stage are we at */
|
||||
#endif
|
||||
#ifndef CURL_DISABLE_PROXY
|
||||
/* to keep track whether we already sent PROXY header or not */
|
||||
BIT(is_haproxy_hdr_sent);
|
||||
#endif
|
||||
#ifdef USE_HYPER
|
||||
bool hconnect; /* set if a CONNECT request */
|
||||
CURLcode hresult; /* used to pass return codes back from hyper callbacks */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user