From 2e46d64ea08333cd3ab163a6c5815df3a02cf897 Mon Sep 17 00:00:00 2001
From: Michael <heluecht@pirati.ca>
Date: Wed, 17 May 2023 01:28:10 +0000
Subject: [PATCH] Replace "Probe::isProbable" with "Protocol::supportsProbe"

---
 src/Core/Protocol.php | 7 ++++++-
 src/Model/Contact.php | 8 ++++----
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/Core/Protocol.php b/src/Core/Protocol.php
index 9890b8f285..9776848757 100644
--- a/src/Core/Protocol.php
+++ b/src/Core/Protocol.php
@@ -315,7 +315,12 @@ class Protocol
 	 */
 	public static function supportsProbe($protocol): bool
 	{
-		if (in_array($protocol, self::NATIVE_SUPPORT)) {
+		// "Mail" can only be probed for a specific user in a specific condition, so we are ignoring it here.
+		if ($protocol == self::MAIL) {
+			return false;
+		}
+
+		if (in_array($protocol, array_merge(self::NATIVE_SUPPORT, [self::ZOT, self::PHANTOM]))) {
 			return true;
 		}
 
diff --git a/src/Model/Contact.php b/src/Model/Contact.php
index 648193b09c..d8f2448da2 100644
--- a/src/Model/Contact.php
+++ b/src/Model/Contact.php
@@ -361,7 +361,7 @@ class Contact
 		$background_update = DI::config()->get('system', 'update_active_contacts') ? $contact['local-data'] : true;
 
 		// Update the contact in the background if needed
-		if ($background_update && !self::isLocal($url) && Probe::isProbable($contact['network']) && ($contact['next-update'] < DateTimeFormat::utcNow())) {
+		if ($background_update && !self::isLocal($url) && Protocol::supportsProbe($contact['network']) && ($contact['next-update'] < DateTimeFormat::utcNow())) {
 			try {
 				UpdateContact::add(['priority' => Worker::PRIORITY_LOW, 'dont_fork' => true], $contact['id']);
 			} catch (\InvalidArgumentException $e) {
@@ -1279,7 +1279,7 @@ class Contact
 
 			$background_update = DI::config()->get('system', 'update_active_contacts') ? $contact['local-data'] : true;
 
-			if ($background_update && !self::isLocal($url) && Probe::isProbable($contact['network']) && ($contact['next-update'] < DateTimeFormat::utcNow())) {
+			if ($background_update && !self::isLocal($url) && Protocol::supportsProbe($contact['network']) && ($contact['next-update'] < DateTimeFormat::utcNow())) {
 				try {
 					UpdateContact::add(['priority' => Worker::PRIORITY_LOW, 'dont_fork' => true], $contact['id']);
 				} catch (\InvalidArgumentException $e) {
@@ -2704,7 +2704,7 @@ class Contact
 
 		$updated = DateTimeFormat::utcNow();
 
-		if (!Probe::isProbable($ret['network']) && !Probe::isProbable($contact['network'])) {
+		if (!Protocol::supportsProbe($ret['network']) && !Protocol::supportsProbe($contact['network'])) {
 			// Periodical checks are only done on federated contacts
 			$failed_next_update  = null;
 			$success_next_update = null;
@@ -3596,7 +3596,7 @@ class Contact
 			if (empty($contact['id']) && Network::isValidHttpUrl($url)) {
 				Worker::add(Worker::PRIORITY_LOW, 'AddContact', 0, $url);
 				++$added;
-			} elseif (!empty($contact['network']) && Probe::isProbable($contact['network']) && ($contact['next-update'] < DateTimeFormat::utcNow())) {
+			} elseif (!empty($contact['network']) && Protocol::supportsProbe($contact['network']) && ($contact['next-update'] < DateTimeFormat::utcNow())) {
 				try {
 					UpdateContact::add(['priority' => Worker::PRIORITY_LOW, 'dont_fork' => true], $contact['id']);
 					++$updated;
-- 
2.39.5