Fixed fatal in SwiftFileBackend when a bogus HTTP status is given
authorAaron Schulz <aschulz@wikimedia.org>
Fri, 30 May 2014 18:48:14 +0000 (11:48 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Fri, 30 May 2014 18:48:14 +0000 (11:48 -0700)
* Error was "Fatal error: Call to a member function getSize() on a non-object"

Change-Id: Id1a1b1add9daee4402b2ed017b95c9a9f0e08170

includes/filebackend/SwiftFileBackend.php

index 9249a09..9ef23f8 100644 (file)
@@ -1066,10 +1066,11 @@ class SwiftFileBackend extends FileBackendStore {
                        list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $op['response'];
                        fclose( $op['stream'] ); // close open handle
                        if ( $rcode >= 200 && $rcode <= 299 ) {
+                               $size = $tmpFiles[$path] ? $tmpFiles[$path]->getSize() : 0;
                                // Double check that the disk is not full/broken
-                               if ( $tmpFiles[$path]->getSize() != $rhdrs['content-length'] ) {
+                               if ( $size != $rhdrs['content-length'] ) {
                                        $tmpFiles[$path] = null;
-                                       $rerr = "Got {$tmpFiles[$path]->getSize()}/{$rhdrs['content-length']} bytes";
+                                       $rerr = "Got {$size}/{$rhdrs['content-length']} bytes";
                                        $this->onError( null, __METHOD__,
                                                array( 'src' => $path ) + $ep, $rerr, $rcode, $rdesc );
                                }