Fix up catching of webfinger setup fails

This commit is contained in:
Brion Vibber 2010-03-03 18:23:28 -08:00
parent 6a5a629afa
commit a4d9171306
2 changed files with 11 additions and 5 deletions

View File

@ -260,7 +260,7 @@ class OStatusSubAction extends Action
$this->error = _m('Could not find a feed linked from this URL.');
} catch (FeedSubUnrecognizedTypeException $e) {
$this->error = _m('Not a recognized feed type.');
} catch (FeedSubException $e) {
} catch (Exception $e) {
// Any new ones we forgot about
$this->error = sprintf(_m('Bad feed URL: %s %s'), get_class($e), $e->getMessage());
}
@ -315,7 +315,6 @@ class OStatusSubAction extends Action
if ($this->pullRemoteProfile()) {
$this->validateRemoteProfile();
}
return true;
}

View File

@ -1267,6 +1267,11 @@ class Ostatus_profile extends Memcached_DataObject
}
}
/**
* @param string $addr webfinger address
* @return Ostatus_profile
* @throws Exception on error conditions
*/
public static function ensureWebfinger($addr)
{
// First, try the cache
@ -1275,7 +1280,8 @@ class Ostatus_profile extends Memcached_DataObject
if ($uri !== false) {
if (is_null($uri)) {
return null;
// Negative cache entry
throw new Exception('Not a valid webfinger address.');
}
$oprofile = Ostatus_profile::staticGet('uri', $uri);
if (!empty($oprofile)) {
@ -1299,8 +1305,9 @@ class Ostatus_profile extends Memcached_DataObject
try {
$result = $disco->lookup($addr);
} catch (Exception $e) {
// Save negative cache entry so we don't waste time looking it up again.
self::cacheSet(sprintf('ostatus_profile:webfinger:%s', $addr), null);
return null;
throw new Exception('Not a valid webfinger address.');
}
foreach ($result->links as $link) {
@ -1410,7 +1417,7 @@ class Ostatus_profile extends Memcached_DataObject
return $oprofile;
}
return null;
throw new Exception("Couldn't find a valid profile for '$addr'");
}
function saveHTMLFile($title, $rendered)