From 10c0a19195d43192f143cf653d76cac8f5c838c7 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Wed, 8 Jan 2014 15:02:32 -0800 Subject: [PATCH] Added sanity check for doGetLocalCopyMulti() in Swift * This better handles the case of /tmp being full or something Change-Id: Ibf4fed0fd053f82ef5ede46b6c2ec72feee95699 --- includes/filebackend/SwiftFileBackend.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/includes/filebackend/SwiftFileBackend.php b/includes/filebackend/SwiftFileBackend.php index 528889b69b..1480662561 100644 --- a/includes/filebackend/SwiftFileBackend.php +++ b/includes/filebackend/SwiftFileBackend.php @@ -1078,7 +1078,11 @@ class SwiftFileBackend extends FileBackendStore { $reqs = $this->http->runMulti( $reqs ); foreach ( $reqs as $path => $op ) { list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $op['response']; - if ( $rcode >= 200 && $rcode <= 299 ) { + fclose( $op['stream'] ); // close open handle + if ( $rcode >= 200 && $rcode <= 299 + // double check that the disk is not full/broken + && $tmpFile->getSize() == $rhdrs['content-length'] + ) { // good } elseif ( $rcode === 404 ) { $tmpFiles[$path] = false; @@ -1087,7 +1091,6 @@ class SwiftFileBackend extends FileBackendStore { $this->onError( null, __METHOD__, array( 'src' => $path ) + $ep, $rerr, $rcode, $rdesc ); } - fclose( $op['stream'] ); // close open handle } } -- 2.20.1