From 5ec2c7e96520fade7b5e157e1105079011d68d42 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 18 Jan 2016 15:38:38 +0100 Subject: [PATCH] When a server isn't reachable there were timeout problems with fetching image data --- include/Photo.php | 18 +++++++++++------- include/network.php | 3 +++ mod/parse_url.php | 7 ++++--- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index 30424747da..5fdd682e74 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -792,15 +792,19 @@ function get_photo_info($url) { $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(); - $stamp1 = microtime(true); - file_put_contents($tempfile, $img_str); - $a->save_timestamp($stamp1, "file"); + $a = get_app(); + $stamp1 = microtime(true); + file_put_contents($tempfile, $img_str); + $a->save_timestamp($stamp1, "file"); - $data = getimagesize($tempfile); - unlink($tempfile); + $data = getimagesize($tempfile); + unlink($tempfile); + } if ($data) $data["size"] = $filesize; diff --git a/include/network.php b/include/network.php index ac5191b259..611f00632f 100644 --- a/include/network.php +++ b/include/network.php @@ -1246,6 +1246,9 @@ function original_url($url, $depth=1, $fetchbody = false) { $a->save_timestamp($stamp1, "network"); + if ($http_code == 0) + return($url); + if ((($curl_info['http_code'] == "301") OR ($curl_info['http_code'] == "302")) AND (($curl_info['redirect_url'] != "") OR ($curl_info['location'] != ""))) { if ($curl_info['redirect_url'] != "") diff --git a/mod/parse_url.php b/mod/parse_url.php index 28869b4c12..2eff09d252 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -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) { require_once("include/network.php"); + require_once("include/Photo.php"); $a = get_app(); @@ -321,7 +322,7 @@ function parseurl_getsiteinfo($url, $no_guessing = false, $do_oembed = true, $co $attr[$attribute->name] = $attribute->value; $src = completeurl($attr["src"], $url); - $photodata = @getimagesize($src); + $photodata = get_photo_info($src); if (($photodata) && ($photodata[0] > 150) and ($photodata[1] > 150)) { 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); unset($siteinfo["image"]); - $photodata = @getimagesize($src); + $photodata = get_photo_info($src); if (($photodata) && ($photodata[0] > 10) and ($photodata[1] > 10)) $siteinfo["images"][] = array("src"=>$src,