summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2021-01-05 14:30:21 +0100
committerDaniel Stenberg <daniel@haxx.se>2021-01-05 23:46:32 +0100
commit0936ecd0ee5e3e28c098fefc9e2c0e6847cb7a82 (patch)
tree952f377574f2eae130669b839a0bf46dd2b2ccda
parent80c5a838ce2ad79a067f010aae55e94b878c639d (diff)
downloadcurl-0936ecd0ee5e3e28c098fefc9e2c0e6847cb7a82.tar.gz
pretransfer: setup the User-Agent header here
... and not in the connection setup, as for multiplexed transfers the connection setup might be skipped and then the transfer would end up without the set user-agent! Reported-by: Flameborn on github Assisted-by: Andrey Gursky Assisted-by: Jay Satiro Assisted-by: Mike Gelfand Fixes #6312 Closes #6417
-rw-r--r--lib/transfer.c14
-rw-r--r--lib/url.c14
2 files changed, 14 insertions, 14 deletions
diff --git a/lib/transfer.c b/lib/transfer.c
index 7b5a0516d..baf305fe1 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -1495,6 +1495,20 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
Curl_hsts_loadcb(data, data->hsts);
}
+ /*
+ * Set user-agent. Used for HTTP, but since we can attempt to tunnel
+ * basically anything through a http proxy we can't limit this based on
+ * protocol.
+ */
+ if(data->set.str[STRING_USERAGENT]) {
+ Curl_safefree(data->state.aptr.uagent);
+ data->state.aptr.uagent =
+ aprintf("User-Agent: %s\r\n", data->set.str[STRING_USERAGENT]);
+ if(!data->state.aptr.uagent)
+ return CURLE_OUT_OF_MEMORY;
+ }
+
+ data->req.headerbytecount = 0;
return result;
}
diff --git a/lib/url.c b/lib/url.c
index 45577713e..60ba56dae 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -3942,20 +3942,6 @@ CURLcode Curl_setup_conn(struct connectdata *conn,
lingering set from a previous invoke */
conn->bits.proxy_connect_closed = FALSE;
#endif
- /*
- * Set user-agent. Used for HTTP, but since we can attempt to tunnel
- * basically anything through a http proxy we can't limit this based on
- * protocol.
- */
- if(data->set.str[STRING_USERAGENT]) {
- Curl_safefree(data->state.aptr.uagent);
- data->state.aptr.uagent =
- aprintf("User-Agent: %s\r\n", data->set.str[STRING_USERAGENT]);
- if(!data->state.aptr.uagent)
- return CURLE_OUT_OF_MEMORY;
- }
-
- data->req.headerbytecount = 0;
#ifdef CURL_DO_LINEEND_CONV
data->state.crlf_conversions = 0; /* reset CRLF conversion counter */