Merge pull request #2262 from annando/1601-http-timeouts

Timeout problems while fetching image data
This commit is contained in:
Tobias Diekershoff 2016-01-18 18:34:15 +01:00
commit 2ef63b6593
3 changed files with 18 additions and 10 deletions

View file

@ -792,15 +792,19 @@ function get_photo_info($url) {
$filesize = strlen($img_str); $filesize = strlen($img_str);
$tempfile = tempnam(get_temppath(), "cache"); if (function_exists("getimagesizefromstring"))
$data = getimagesizefromstring($img_str);
else {
$tempfile = tempnam(get_temppath(), "cache");
$a = get_app(); $a = get_app();
$stamp1 = microtime(true); $stamp1 = microtime(true);
file_put_contents($tempfile, $img_str); file_put_contents($tempfile, $img_str);
$a->save_timestamp($stamp1, "file"); $a->save_timestamp($stamp1, "file");
$data = getimagesize($tempfile); $data = getimagesize($tempfile);
unlink($tempfile); unlink($tempfile);
}
if ($data) if ($data)
$data["size"] = $filesize; $data["size"] = $filesize;

View file

@ -1246,6 +1246,9 @@ function original_url($url, $depth=1, $fetchbody = false) {
$a->save_timestamp($stamp1, "network"); $a->save_timestamp($stamp1, "network");
if ($http_code == 0)
return($url);
if ((($curl_info['http_code'] == "301") OR ($curl_info['http_code'] == "302")) if ((($curl_info['http_code'] == "301") OR ($curl_info['http_code'] == "302"))
AND (($curl_info['redirect_url'] != "") OR ($curl_info['location'] != ""))) { AND (($curl_info['redirect_url'] != "") OR ($curl_info['location'] != ""))) {
if ($curl_info['redirect_url'] != "") if ($curl_info['redirect_url'] != "")

View file

@ -71,6 +71,7 @@ function parseurl_getsiteinfo_cached($url, $no_guessing = false, $do_oembed = tr
function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $count = 1) { function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $count = 1) {
require_once("include/network.php"); require_once("include/network.php");
require_once("include/Photo.php");
$a = get_app(); $a = get_app();
@ -321,7 +322,7 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
$attr[$attribute->name] = $attribute->value; $attr[$attribute->name] = $attribute->value;
$src = completeurl($attr["src"], $url); $src = completeurl($attr["src"], $url);
$photodata = @getimagesize($src); $photodata = get_photo_info($src);
if (($photodata) && ($photodata[0] > 150) and ($photodata[1] > 150)) { if (($photodata) && ($photodata[0] > 150) and ($photodata[1] > 150)) {
if ($photodata[0] > 300) { if ($photodata[0] > 300) {
@ -338,12 +339,12 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co
} }
} }
} else { } elseif ($siteinfo["image"] != "") {
$src = completeurl($siteinfo["image"], $url); $src = completeurl($siteinfo["image"], $url);
unset($siteinfo["image"]); unset($siteinfo["image"]);
$photodata = @getimagesize($src); $photodata = get_photo_info($src);
if (($photodata) && ($photodata[0] > 10) and ($photodata[1] > 10)) if (($photodata) && ($photodata[0] > 10) and ($photodata[1] > 10))
$siteinfo["images"][] = array("src"=>$src, $siteinfo["images"][] = array("src"=>$src,