diff --git a/lib/filelib.php b/lib/filelib.php
index 1d8bab1..0d7acd5 100644
--- a/lib/filelib.php
+++ b/lib/filelib.php
@@ -2684,12 +2684,13 @@ class curl {
         $results = array();
         $main    = curl_multi_init();
         for ($i = 0; $i < $count; $i++) {
-            if (!empty($requests[$i]['filepath'])) {
+            if (!empty($requests[$i]['filepath']) and empty($requests[$i]['file'])) {
                 // open file
                 $requests[$i]['file'] = fopen($requests[$i]['filepath'], 'w');
+                $requests[$i]['auto-handle'] = true;
             }
             foreach($requests[$i] as $n=>$v){
-                $options[$n] = $requests[$i][$n];
+                $options[$n] = $v;
             }
             $handles[$i] = curl_init($requests[$i]['url']);
             $this->apply_opt($handles[$i], $options);
@@ -2710,9 +2711,11 @@ class curl {
         curl_multi_close($main);
 
         for ($i = 0; $i < $count; $i++) {
-            if (!empty($requests[$i]['filepath'])) {
+            if (!empty($requests[$i]['filepath']) and !empty($requests[$i]['auto-handle'])) {
                 // close file handler if file is opened in this function
                 fclose($requests[$i]['file']);
+                unset($requests[$i]['file']);
+                unset($requests[$i]['auto-handle']);
             }
         }
         return $results;
