From 3a1fef43b237a4fcb75d7880aa81808a66c56f2d Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 20 Aug 2020 08:37:56 +0000 Subject: [PATCH] Fix: Feeds and mail accounts hadn't been fetched reliably --- src/Worker/Cron.php | 11 +++++++---- src/Worker/OnePoll.php | 5 ++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Worker/Cron.php b/src/Worker/Cron.php index 762deadd73..8253bfea36 100644 --- a/src/Worker/Cron.php +++ b/src/Worker/Cron.php @@ -212,8 +212,6 @@ class Cron * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ private static function pollContacts() { - $min_poll_interval = DI::config()->get('system', 'min_poll_interval'); - Addon::reload(); $sql = "SELECT `contact`.`id`, `contact`.`nick`, `contact`.`name`, `contact`.`network`, `contact`.`archive`, @@ -278,12 +276,17 @@ class Cron /* * Based on $contact['priority'], should we poll this site now? Or later? */ - $t = $contact['last-update']; + + $min_poll_interval = DI::config()->get('system', 'min_poll_interval'); $poll_intervals = [$min_poll_interval . ' minute', '15 minute', '30 minute', '1 hour', '2 hour', '3 hour', '6 hour', '12 hour' ,'1 day', '1 week', '1 month']; - if (empty($poll_intervals[$rating]) || (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . ' + ' . $poll_intervals[$rating]))) { + $now = DateTimeFormat::utcNow(); + $next_update = DateTimeFormat::utc($contact['last-update'] . ' + ' . $poll_intervals[$rating]); + + if (empty($poll_intervals[$rating]) || ($now < $next_update)) { + Logger::debug('No update', ['cid' => $contact['id'], 'rating' => $rating, 'next' => $next_update, 'now' => $now]); continue; } diff --git a/src/Worker/OnePoll.php b/src/Worker/OnePoll.php index 7d69517319..5fc65b211a 100644 --- a/src/Worker/OnePoll.php +++ b/src/Worker/OnePoll.php @@ -111,7 +111,7 @@ class OnePoll DBA::update('contact', ['last-update' => $updated], ['id' => $contact['id']]); return; } - + // We don't poll AP contacts by now if ($protocol === Protocol::ACTIVITYPUB) { Logger::log("Don't poll AP contact"); @@ -708,6 +708,9 @@ class OnePoll Logger::log("Mail: no mails for ".$mailconf['user']); } + self::updateContact($contact, ['failed' => false, 'last-update' => $updated, 'success_update' => $updated]); + Contact::unmarkForArchival($contact); + Logger::log("Mail: closing connection for ".$mailconf['user']); imap_close($mbox); }