config['follow_redirects'] is the extlib's config! if max_redirs is set we want to do our own redirection following in this function

This commit is contained in:
hannes 2016-01-25 19:03:26 +00:00
parent a888294135
commit b1b6a0a69c

View File

@ -321,10 +321,11 @@ class HTTPClient extends HTTP_Request2
public function send() public function send()
{ {
$maxRedirs = intval($this->config['max_redirs']); $maxRedirs = intval($this->config['max_redirs']);
if (empty($this->config['follow_redirects'])) { if (empty($this->config['max_redirs'])) {
$maxRedirs = 0; $maxRedirs = 0;
} }
$redirs = 0; $redirs = 0;
$redirUrls = array();
do { do {
try { try {
$response = parent::send(); $response = parent::send();
@ -333,9 +334,12 @@ class HTTPClient extends HTTP_Request2
throw $e; throw $e;
} }
$code = $response->getStatus(); $code = $response->getStatus();
$effectiveUrl = $response->getEffectiveUrl();
$redirUrls[] = $effectiveUrl;
$response->redirUrls = $redirUrls;
if ($code >= 200 && $code < 300) { if ($code >= 200 && $code < 300) {
$reason = $response->getReasonPhrase(); $reason = $response->getReasonPhrase();
$this->log(LOG_INFO, "$code $reason"); $this->log(LOG_INFO, "$code $reason - Effective URL: ".$response->getEffectiveUrl().' redirect: '.json_encode($response->isRedirect()));
} elseif ($code >= 300 && $code < 400) { } elseif ($code >= 300 && $code < 400) {
$url = $this->getUrl(); $url = $this->getUrl();
$target = $response->getHeader('Location'); $target = $response->getHeader('Location');
@ -362,4 +366,4 @@ class HTTPClient extends HTTP_Request2
} while ($maxRedirs); } while ($maxRedirs);
return new GNUsocial_HTTPResponse($response, $this->getUrl(), $redirs); return new GNUsocial_HTTPResponse($response, $this->getUrl(), $redirs);
} }
} }