diff --git a/include/functions.php b/include/functions.php
index bad01eb96777643dc387bb5ac68b1cb365676c15..8dc109f993924fc1d624ab52e822b038150f7397 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -317,7 +317,12 @@
 			$fetch_curl_used = true;
 
 			if (ini_get("safe_mode") || ini_get("open_basedir")) {
-				$ch = curl_init(geturl($url));
+				$new_url = geturl($url);
+				if (!$new_url) {
+				    // geturl has already populated $fetch_last_error
+				    return false;
+				}
+				$ch = curl_init($new_url);
 			} else {
 				$ch = curl_init($url);
 			}
@@ -4096,14 +4101,15 @@
 		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
 		//curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); //CURLOPT_FOLLOWLOCATION Disabled...
 		curl_setopt($curl, CURLOPT_TIMEOUT, 60);
+		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
 
 		$html = curl_exec($curl);
 
 		$status = curl_getinfo($curl);
-		curl_close($curl);
 
 		if($status['http_code']!=200){
 			if($status['http_code'] == 301 || $status['http_code'] == 302) {
+				curl_close($curl);
 				list($header) = explode("\r\n\r\n", $html, 2);
 				$matches = array();
 				preg_match("/(Location:|URI:)[^(\n)]*/", $header, $matches);
@@ -4111,6 +4117,12 @@
 				$url_parsed = parse_url($url);
 				return (isset($url_parsed))? geturl($url):'';
 			}
+
+			global $fetch_last_error;
+
+			$fetch_last_error = curl_errno($curl) . " " . curl_error($curl);
+			curl_close($curl);
+
 			$oline='';
 			foreach($status as $key=>$eline){$oline.='['.$key.']'.$eline.' ';}
 			$line =$oline." \r\n ".$url."\r\n-----------------\r\n";
@@ -4118,6 +4130,7 @@
 #			fwrite($handle, $line);
 			return FALSE;
 		}
+		curl_close($curl);
 		return $url;
 	}