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.'); $this->error = _m('Could not find a feed linked from this URL.');
} catch (FeedSubUnrecognizedTypeException $e) { } catch (FeedSubUnrecognizedTypeException $e) {
$this->error = _m('Not a recognized feed type.'); $this->error = _m('Not a recognized feed type.');
} catch (FeedSubException $e) { } catch (Exception $e) {
// Any new ones we forgot about // Any new ones we forgot about
$this->error = sprintf(_m('Bad feed URL: %s %s'), get_class($e), $e->getMessage()); $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()) { if ($this->pullRemoteProfile()) {
$this->validateRemoteProfile(); $this->validateRemoteProfile();
} }
return true; 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) public static function ensureWebfinger($addr)
{ {
// First, try the cache // First, try the cache
@ -1275,7 +1280,8 @@ class Ostatus_profile extends Memcached_DataObject
if ($uri !== false) { if ($uri !== false) {
if (is_null($uri)) { if (is_null($uri)) {
return null; // Negative cache entry
throw new Exception('Not a valid webfinger address.');
} }
$oprofile = Ostatus_profile::staticGet('uri', $uri); $oprofile = Ostatus_profile::staticGet('uri', $uri);
if (!empty($oprofile)) { if (!empty($oprofile)) {
@ -1299,8 +1305,9 @@ class Ostatus_profile extends Memcached_DataObject
try { try {
$result = $disco->lookup($addr); $result = $disco->lookup($addr);
} catch (Exception $e) { } 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); self::cacheSet(sprintf('ostatus_profile:webfinger:%s', $addr), null);
return null; throw new Exception('Not a valid webfinger address.');
} }
foreach ($result->links as $link) { foreach ($result->links as $link) {
@ -1410,7 +1417,7 @@ class Ostatus_profile extends Memcached_DataObject
return $oprofile; return $oprofile;
} }
return null; throw new Exception("Couldn't find a valid profile for '$addr'");
} }
function saveHTMLFile($title, $rendered) function saveHTMLFile($title, $rendered)