From 0dc4d8e42e44224b00a028b467749eede8f08a6e Mon Sep 17 00:00:00 2001 From: Jay Satiro Date: Fri, 29 Apr 2016 15:24:10 +0200 Subject: curl -J: make it work even without http:// scheme on URL It does open up a miniscule risk that one of the other protocols that libcurl could use would send back a Content-Disposition header and then curl would act on it even if not HTTP. A future mitigation for this risk would be to allow the callback to ask libcurl which protocol is being used. Verified with test 1312 Closes #760 --- src/tool_operate.c | 5 ++++- tests/data/test1312 | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/tool_operate.c b/src/tool_operate.c index 99996e142..ab29c00b3 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -1297,7 +1297,10 @@ static CURLcode operate_do(struct GlobalConfig *global, if(config->content_disposition && (urlnode->flags & GETOUT_USEREMOTE) && (checkprefix("http://", this_url) || - checkprefix("https://", this_url))) + checkprefix("https://", this_url) || + (!strstr(this_url, "://") && + (!config->proto_default || + checkprefix("http", config->proto_default))))) hdrcbdata.honor_cd_filename = TRUE; else hdrcbdata.honor_cd_filename = FALSE; diff --git a/tests/data/test1312 b/tests/data/test1312 index 92144015a..bed492c16 100644 --- a/tests/data/test1312 +++ b/tests/data/test1312 @@ -40,7 +40,7 @@ HTTP GET with -J, Content-Disposition and ; in filename CURL_TESTDIR=%PWD/log -http://%HOSTIP:%HTTPPORT/1312 -J -O +%HOSTIP:%HTTPPORT/1312 -J -O -- cgit v1.2.3