From f7d599f8eac0a9e3d47c3ff2f074bed0b6e9c124 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Thu, 12 Aug 2010 15:19:47 -0700 Subject: Fix for ticket 2513: "Can't linkify" error when some links are shortened When bogus SSL sites etc were hit through a shortening redirect, sometimes link resolution kinda blew up and the user would get a "Can't linkify" error, aborting their post. Now catching this case and just passing through the URL without attempting to resolve it. Could benefit from an overall scrubbing of the freaky link/attachment code though...! :) http://status.net/open-source/issues/2513 --- classes/File_redirection.php | 8 ++++++++ lib/util.php | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/classes/File_redirection.php b/classes/File_redirection.php index f128b3e07..51b8be3b0 100644 --- a/classes/File_redirection.php +++ b/classes/File_redirection.php @@ -210,6 +210,14 @@ class File_redirection extends Memcached_DataObject } else if (is_string($redir_data)) { // The file is a known redirect target. $file = File::staticGet('url', $redir_data); + if (empty($file)) { + // @fixme should we save a new one? + // this case was triggering sometimes for redirects + // with unresolvable targets; found while fixing + // "can't linkify" bugs with shortened links to + // SSL sites with cert issues. + return null; + } $file_id = $file->id; } } else { diff --git a/lib/util.php b/lib/util.php index 9f62097d5..66600c766 100644 --- a/lib/util.php +++ b/lib/util.php @@ -830,7 +830,10 @@ function common_linkify($url) { } elseif (is_string($longurl_data)) { $longurl = $longurl_data; } else { - throw new ServerException("Can't linkify url '$url'"); + // Unable to reach the server to verify contents, etc + // Just pass the link on through for now. + common_log(LOG_ERR, "Can't linkify url '$url'"); + $longurl = $url; } } $attrs = array('href' => $canon, 'title' => $longurl, 'rel' => 'external'); -- cgit v1.2.3