From ded649ae8a7b9de7dfa841c43a7cf0329ff5186b Mon Sep 17 00:00:00 2001
From: Jason Smith <jason.smith@mediacurrent.com>
Date: Wed, 30 Jul 2014 08:59:59 -0400
Subject: [PATCH] Resolve missing files error in storage_api resulting in lots
 of logs (revised)

---
 docroot/sites/all/modules/contrib/storage_api/container.inc | 13 +++++++++++++
 .../sites/all/modules/contrib/storage_api/services/s3.inc   |  5 ++++-
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/docroot/sites/all/modules/contrib/storage_api/container.inc b/docroot/sites/all/modules/contrib/storage_api/container.inc
index c003316..38430c6 100644
--- a/docroot/sites/all/modules/contrib/storage_api/container.inc
+++ b/docroot/sites/all/modules/contrib/storage_api/container.inc
@@ -286,6 +286,19 @@ abstract class StorageContainer {
     }
     
     if (!$exists) {
+      // Check to make sure that the source file actually exists.
+      if (!file_exists($uri)) {
+        watchdog(
+          'storage_api',
+          'File not found to be uploaded (!uri). Removing storage record',
+          array(
+            '!uri' => $uri,
+          ),
+          WATCHDOG_ERROR
+        );
+        $storage->remove(TRUE);
+        return FALSE;
+      };
       $this->instanceCreate($storage, $uri);
     }
   }
diff --git a/docroot/sites/all/modules/contrib/storage_api/services/s3.inc b/docroot/sites/all/modules/contrib/storage_api/services/s3.inc
index da236f6..7855303 100644
--- a/docroot/sites/all/modules/contrib/storage_api/services/s3.inc
+++ b/docroot/sites/all/modules/contrib/storage_api/services/s3.inc
@@ -62,7 +62,10 @@ class StorageS3 extends StorageContainer implements StorageContainerInterface {
 
         if ($uri) {
           $fp = fopen($uri, 'r');
-          
+          if ($fp === FALSE) {
+            throw new StorageException("Could not open source file");
+          }
+
           $components[1] = base64_encode($storage->md5);
           $components[2] = $storage->mimetype;
           
-- 
1.8.4.2

