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
This commit is contained in:
Brion Vibber 2010-08-12 15:19:47 -07:00
parent 78eea352b4
commit f7d599f8ea
2 changed files with 12 additions and 1 deletions

View File

@ -210,6 +210,14 @@ class File_redirection extends Memcached_DataObject
} else if (is_string($redir_data)) { } else if (is_string($redir_data)) {
// The file is a known redirect target. // The file is a known redirect target.
$file = File::staticGet('url', $redir_data); $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; $file_id = $file->id;
} }
} else { } else {

View File

@ -830,7 +830,10 @@ function common_linkify($url) {
} elseif (is_string($longurl_data)) { } elseif (is_string($longurl_data)) {
$longurl = $longurl_data; $longurl = $longurl_data;
} else { } 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'); $attrs = array('href' => $canon, 'title' => $longurl, 'rel' => 'external');