DPAGES = \
abstract-unix-socket.d \
+ alt-svc.d \
anyauth.d \
append.d basic.d \
cacert.d capath.d \
--- /dev/null
+Long: alt-svc
+Arg: <file name>
+Protocols: HTTPS
+Help: Enable alt-svc with this cache file
+Added: 7.64.1
+---
+WARNING: this option is experiemental. Do not use in production.
+
+This option enables the alt-svc parser in curl. If the file name points to an
+existing alt-svc cache file, that will be used. After a completed transfer,
+the cache will be saved to the file name again if it has been modified.
+
+Specifiy a "" file name (zero length) to avoid loading/saving and make curl
+just handle the cache in memory.
+
+If this option is used several times, curl will load contents from all the
+files but the the last one will be used for saving.
Curl_safefree(config->random_file);
Curl_safefree(config->egd_file);
Curl_safefree(config->useragent);
+ Curl_safefree(config->altsvc);
Curl_safefree(config->cookie);
Curl_safefree(config->cookiejar);
Curl_safefree(config->cookiefile);
char *cookie; /* single line with specified cookies */
char *cookiejar; /* write to this file */
char *cookiefile; /* read from this file */
+ char *altsvc; /* alt-svc cache file name */
bool cookiesession; /* new session? */
bool encoding; /* Accept-Encoding please */
bool tr_encoding; /* Transfer-Encoding please */
{"a", "append", ARG_BOOL},
{"A", "user-agent", ARG_STRING},
{"b", "cookie", ARG_STRING},
+ {"ba", "alt-svc", ARG_STRING},
{"B", "use-ascii", ARG_BOOL},
{"c", "cookie-jar", ARG_STRING},
{"C", "continue-at", ARG_STRING},
/* This specifies the User-Agent name */
GetStr(&config->useragent, nextarg);
break;
- case 'b': /* cookie string coming up: */
- if(nextarg[0] == '@') {
- nextarg++;
- }
- else if(strchr(nextarg, '=')) {
- /* A cookie string must have a =-letter */
- GetStr(&config->cookie, nextarg);
+ case 'b':
+ switch(subletter) {
+ case 'a': /* --alt-svc */
+ GetStr(&config->altsvc, nextarg);
break;
+ default: /* --cookie string coming up: */
+ if(nextarg[0] == '@') {
+ nextarg++;
+ }
+ else if(strchr(nextarg, '=')) {
+ /* A cookie string must have a =-letter */
+ GetStr(&config->cookie, nextarg);
+ break;
+ }
+ /* We have a cookie file to read from! */
+ GetStr(&config->cookiefile, nextarg);
}
- /* We have a cookie file to read from! */
- GetStr(&config->cookiefile, nextarg);
break;
case 'B':
/* use ASCII/text when transferring */
static const struct helptxt helptext[] = {
{" --abstract-unix-socket <path>",
"Connect via abstract Unix domain socket"},
+ {" --alt-svc <file name>",
+ "Enable alt-svc with this cache file"},
{" --anyauth",
"Pick any authentication method"},
{"-a, --append",
if(config->disallow_username_in_url)
my_setopt(curl, CURLOPT_DISALLOW_USERNAME_IN_URL, 1L);
+#ifdef USE_ALTSVC
+ /* only if explicitly enabled in configure */
+ if(config->altsvc)
+ my_setopt_str(curl, CURLOPT_ALTSVC, config->altsvc);
+#endif
+
/* initialize retry vars for loop below */
retry_sleep_default = (config->retry_delay) ?
config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */