From c51c78dd8d93990d7168a7f6b2410ec437e66939 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sun, 3 Mar 2019 11:17:52 +0100 Subject: alt-svc: the curl command line bits --- src/tool_cfgable.c | 1 + src/tool_cfgable.h | 1 + src/tool_getparam.c | 25 ++++++++++++++++--------- src/tool_help.c | 2 ++ src/tool_operate.c | 6 ++++++ 5 files changed, 26 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c index cf5212bab..fabd6d635 100644 --- a/src/tool_cfgable.c +++ b/src/tool_cfgable.c @@ -53,6 +53,7 @@ static void free_config_fields(struct OperationConfig *config) 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); diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h index 2adfcae23..e374a7f0e 100644 --- a/src/tool_cfgable.h +++ b/src/tool_cfgable.h @@ -46,6 +46,7 @@ struct OperationConfig { 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 */ diff --git a/src/tool_getparam.c b/src/tool_getparam.c index 82ba8b215..b133cb87e 100644 --- a/src/tool_getparam.c +++ b/src/tool_getparam.c @@ -214,6 +214,7 @@ static const struct LongShort aliases[]= { {"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}, @@ -1244,17 +1245,23 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */ /* 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 */ diff --git a/src/tool_help.c b/src/tool_help.c index 0f6bcd36b..542998bd0 100644 --- a/src/tool_help.c +++ b/src/tool_help.c @@ -48,6 +48,8 @@ struct helptxt { static const struct helptxt helptext[] = { {" --abstract-unix-socket ", "Connect via abstract Unix domain socket"}, + {" --alt-svc ", + "Enable alt-svc with this cache file"}, {" --anyauth", "Pick any authentication method"}, {"-a, --append", diff --git a/src/tool_operate.c b/src/tool_operate.c index a8698285d..7f0748753 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -1538,6 +1538,12 @@ static CURLcode operate_do(struct GlobalConfig *global, 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 */ -- cgit v1.2.3