summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrion Vibber <brion@status.net>2010-08-12 15:19:47 -0700
committerBrion Vibber <brion@status.net>2010-08-12 15:19:47 -0700
commit6787b377c0b91fa3503077e4ba0efc75565a2ded (patch)
tree4a906df2cea571ae7e5e557c44a9e71c7b780d04
parentdcfc13cc0873e1a3815d3fa473d96e004af996b9 (diff)
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
-rw-r--r--classes/File_redirection.php8
-rw-r--r--lib/util.php5
2 files changed, 12 insertions, 1 deletions
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');