From dd999164c6dacd237a0bf78b8ed8c7b6accd2d93 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sat, 29 Feb 2020 11:41:33 -0500 Subject: [PATCH] Do not cache Contact::getDetailsByURL result if it doesn't come from the DB - Address https://github.com/friendica/friendica/issues/8000#issuecomment-592169621 --- src/Model/Contact.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Model/Contact.php b/src/Model/Contact.php index f86d3f378c..68bd0986a6 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -1037,6 +1037,7 @@ class Contact } if (DBA::isResult($r)) { + $authoritativeResult = true; // If there is more than one entry we filter out the connector networks if (count($r) > 1) { foreach ($r as $id => $result) { @@ -1070,6 +1071,7 @@ class Contact $profile["bd"] = DBA::NULL_DATE; } } else { + $authoritativeResult = false; $profile = $default; } @@ -1106,7 +1108,11 @@ class Contact $profile["birthday"] = DBA::NULL_DATE; } - $cache[$url][$uid] = $profile; + // Only cache the result if it came from the DB since this method is used in widely different contexts + // @see display_fetch_author for an example of $default parameter diverging from the DB result + if ($authoritativeResult) { + $cache[$url][$uid] = $profile; + } return $profile; }