From ab88123373ce5f17b9e09ed2372f587e607cba20 Mon Sep 17 00:00:00 2001
From: Evan Prodromou <evan@status.net>
Date: Wed, 1 Sep 2010 17:05:11 -0400
Subject: [PATCH] correctly return oprofile from
 Ostatus_profile::ensureProfileURI()

---
 plugins/OStatus/classes/Ostatus_profile.php | 37 +++++++++++++--------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php
index fe3946d249..7877128745 100644
--- a/plugins/OStatus/classes/Ostatus_profile.php
+++ b/plugins/OStatus/classes/Ostatus_profile.php
@@ -1770,22 +1770,31 @@ class Ostatus_profile extends Memcached_DataObject
     {
         $oprofile = null;
 
-        if (preg_match("/^(\w+)\:(.*)/", $uri, $match)) {
-            $protocol = $match[1];
-            switch ($protocol) {
-            case 'http':
-            case 'https':
-                $oprofile = Ostatus_profile::ensureProfileURL($uri);
-                break;
-            case 'acct':
-            case 'mailto':
-                $rest = $match[2];
-                $oprofile = Ostatus_profile::ensureWebfinger($rest);
-            default:
-                common_log("Unrecognized URI protocol for profile: $protocol ($uri)");
-                break;
+        // First, try to query it
+
+        $oprofile = Ostatus_profile::staticGet('uri', $uri);
+
+        // If unfound, do discovery stuff
+
+        if (empty($oprofile)) {
+            if (preg_match("/^(\w+)\:(.*)/", $uri, $match)) {
+                $protocol = $match[1];
+                switch ($protocol) {
+                case 'http':
+                case 'https':
+                    $oprofile = Ostatus_profile::ensureProfileURL($uri);
+                    break;
+                case 'acct':
+                case 'mailto':
+                    $rest = $match[2];
+                    $oprofile = Ostatus_profile::ensureWebfinger($rest);
+                default:
+                    common_log("Unrecognized URI protocol for profile: $protocol ($uri)");
+                    break;
+                }
             }
         }
+        return $oprofile;
     }
 }
 
-- 
2.39.5