Fix Http::request() so that it continues to return false on non-200 requests.
authorMark A. Hershberger <mah@users.mediawiki.org>
Tue, 9 Feb 2010 06:18:53 +0000 (06:18 +0000)
committerMark A. Hershberger <mah@users.mediawiki.org>
Tue, 9 Feb 2010 06:18:53 +0000 (06:18 +0000)
includes/HttpFunctions.php
maintenance/tests/HttpTest.php

index 907345a..d62494b 100644 (file)
@@ -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;
        }
 }
index 158d454..1488d7f 100644 (file)
@@ -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() {