diff options
author | Max Dymond <cmeister2@gmail.com> | 2017-10-25 22:51:50 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2017-10-26 13:34:45 +0200 |
commit | 7b11c5dbe612e152e4ee1b61bac872a7e7958578 (patch) | |
tree | e743789e0ef205655750cb15626db59545ddd29b /lib/multi.c | |
parent | 3340b456a544519531f8d42ec77d33251b765efa (diff) | |
download | curl-7b11c5dbe612e152e4ee1b61bac872a7e7958578.tar.gz |
wildcards: don't use with non-supported protocols
Fixes timeouts in the fuzzing tests for non-FTP protocols.
Closes #2016
Diffstat (limited to 'lib/multi.c')
-rw-r--r-- | lib/multi.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/multi.c b/lib/multi.c index bf0e89ae6..658a18b15 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -1663,7 +1663,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, if(!result) { if(!dophase_done) { /* some steps needed for wildcard matching */ - if(data->set.wildcardmatch) { + if(data->state.wildcardmatch) { struct WildcardData *wc = &data->wildcard; if(wc->state == CURLWC_DONE || wc->state == CURLWC_SKIP) { /* skip some states if it is important */ @@ -1815,7 +1815,13 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, (data->easy_conn->writesockfd != CURL_SOCKET_BAD)) multistate(data, CURLM_STATE_WAITPERFORM); else + { + if(data->state.wildcardmatch && + ((data->easy_conn->handler->flags & PROTOPT_WILDCARD) == 0)) { + data->wildcard.state = CURLWC_DONE; + } multistate(data, CURLM_STATE_DONE); + } rc = CURLM_CALL_MULTI_PERFORM; break; @@ -2032,7 +2038,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi, data->easy_conn = NULL; } - if(data->set.wildcardmatch) { + if(data->state.wildcardmatch) { if(data->wildcard.state != CURLWC_DONE) { /* if a wildcard is set and we are not ending -> lets start again with CURLM_STATE_INIT */ |