]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Fix up catching of webfinger setup fails
authorBrion Vibber <brion@pobox.com>
Thu, 4 Mar 2010 02:23:28 +0000 (18:23 -0800)
committerBrion Vibber <brion@pobox.com>
Thu, 4 Mar 2010 02:23:28 +0000 (18:23 -0800)
plugins/OStatus/actions/ostatussub.php
plugins/OStatus/classes/Ostatus_profile.php

index 7ca8a7869a2ffc4f4bd67ff2abed36a34422480c..e8a2c78ae00904d8e358e1b497e43ee4f650835a 100644 (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;
     }
 
index 7ab031aa59d289e5372dedffd69977a285af7780..b3b4336b52d5b5da5e6d17f26248488caa796e63 100644 (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)