1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-21 23:58:49 -05:00
CURLINFO_REDIRECT_URL in multi mode" also contained a patch that fixed the
  problem.
This commit is contained in:
Daniel Stenberg 2008-09-29 12:22:10 +00:00
parent aff5408633
commit 0a305eb79f
3 changed files with 20 additions and 1 deletions

View File

@ -6,6 +6,11 @@
Changelog Changelog
Daniel Stenberg (29 Sep 2008)
- Bug #2107803 (http://curl.haxx.se/bug/view.cgi?id=2107803) "no
CURLINFO_REDIRECT_URL in multi mode" also contained a patch that fixed the
problem.
Daniel Stenberg (25 Sep 2008) Daniel Stenberg (25 Sep 2008)
- Emanuele Bovisio submitted bug report #2126435. We fixed the HTTP Digest - Emanuele Bovisio submitted bug report #2126435. We fixed the HTTP Digest
auth code to not behave badly when getting a blank realm with auth code to not behave badly when getting a blank realm with

View File

@ -28,6 +28,7 @@ This release includes the following bugfixes:
o thread-safety issues addressed for NSS-powered libcurls o thread-safety issues addressed for NSS-powered libcurls
o removed the use of mktime() and gmtime(_r)() in date parsing and conversions o removed the use of mktime() and gmtime(_r)() in date parsing and conversions
o HTTP Digest with a blank realm did wrong o HTTP Digest with a blank realm did wrong
o CURLINFO_REDIRECT_URL didn't work with the multi interface
This release includes the following known bugs: This release includes the following known bugs:

View File

@ -1310,7 +1310,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
/* Check if we can move pending requests to send pipe */ /* Check if we can move pending requests to send pipe */
checkPendPipeline(easy->easy_conn); checkPendPipeline(easy->easy_conn);
/* When we follow redirects, must to go back to the CONNECT state */ /* When we follow redirects or is set to retry the connection, we must
to go back to the CONNECT state */
if(easy->easy_handle->req.newurl || retry) { if(easy->easy_handle->req.newurl || retry) {
if(!retry) { if(!retry) {
/* if the URL is a follow-location and not just a retried request /* if the URL is a follow-location and not just a retried request
@ -1335,6 +1336,18 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
} }
else { else {
/* after the transfer is done, go DONE */ /* after the transfer is done, go DONE */
/* but first check to see if we got a location info even though we're
not following redirects */
if (easy->easy_handle->req.location) {
newurl = easy->easy_handle->req.location;
easy->easy_handle->req.location = NULL;
easy->result = Curl_follow(easy->easy_handle, newurl, FOLLOW_FAKE);
if (easy->result)
free(newurl);
break;
}
multistate(easy, CURLM_STATE_DONE); multistate(easy, CURLM_STATE_DONE);
result = CURLM_CALL_MULTI_PERFORM; result = CURLM_CALL_MULTI_PERFORM;
} }