From: Mark A. Hershberger Date: Tue, 9 Feb 2010 06:18:53 +0000 (+0000) Subject: Fix Http::request() so that it continues to return false on non-200 requests. X-Git-Tag: 1.31.0-rc.0~37863 X-Git-Url: http://git.cyclocoop.org/%22.%28%24lien.?a=commitdiff_plain;h=c8c68401e70ee63d6b0e283708b968ff2c7de41a;p=lhc%2Fweb%2Fwiklou.git Fix Http::request() so that it continues to return false on non-200 requests. --- diff --git a/includes/HttpFunctions.php b/includes/HttpFunctions.php index 907345a82a..d62494bda2 100644 --- a/includes/HttpFunctions.php +++ b/includes/HttpFunctions.php @@ -140,7 +140,7 @@ class HttpRequest { protected $headerList = array(); protected $respVersion = "0.9"; - protected $respStatus = "0.1"; + protected $respStatus = "200 Ok"; protected $respHeaders = array(); public $status; @@ -258,8 +258,8 @@ class HttpRequest { if( $this->cookieJar ) { $this->reqHeaders['Cookie'] = - $this->cookieJar->serializeToHttpRequest($this->parsedURL['path'], - $this->parsedURL['host']); + $this->cookieJar->serializeToHttpRequest($this->parsedUrl['path'], + $this->parsedUrl['host']); } foreach($this->reqHeaders as $name => $value) { $list[] = "$name: $value"; @@ -333,6 +333,9 @@ class HttpRequest { } } + if((int)$this->respStatus !== 200) { + $this->status->fatal('Not Ok'); + } $this->parseCookies(); } @@ -707,6 +710,7 @@ class CurlHttpRequest extends HttpRequest { curl_close( $curlHandle ); + $this->parseHeader(); return $this->status; } } @@ -720,7 +724,7 @@ class PhpHttpRequest extends HttpRequest { public function execute() { if ( $this->parsedUrl['scheme'] != 'http' ) { - $this->status->fatal( 'http-invalid-scheme', $this->parsedURL['scheme'] ); + $this->status->fatal( 'http-invalid-scheme', $this->parsedUrl['scheme'] ); } parent::execute(); @@ -795,6 +799,7 @@ class PhpHttpRequest extends HttpRequest { } fclose( $fh ); + $this->parseHeader(); return $this->status; } } diff --git a/maintenance/tests/HttpTest.php b/maintenance/tests/HttpTest.php index 158d454663..1488d7fd88 100644 --- a/maintenance/tests/HttpTest.php +++ b/maintenance/tests/HttpTest.php @@ -109,6 +109,9 @@ class HttpTest extends PhpUnit_Framework_TestCase { $this->assertLessThan($timeout+2, $end_time - $start_time, "Request took less than {$timeout}s via ".Http::$httpEngine); $this->assertEquals($r, false, "false -- what we get on error from Http::get()"); + + $r = HTTP::get( "http://www.example.com/this-file-does-not-exist", $timeout); + $this->assertFalse($r, "False on 404s"); } function testFailureDefault() {