Fix: Feeds and mail accounts hadn't been fetched reliably
authorMichael <heluecht@pirati.ca>
Thu, 20 Aug 2020 08:37:56 +0000 (08:37 +0000)
committerMichael <heluecht@pirati.ca>
Thu, 20 Aug 2020 08:37:56 +0000 (08:37 +0000)
src/Worker/Cron.php
src/Worker/OnePoll.php

index 762dead..8253bfe 100644 (file)
@@ -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;
                        }
 
index 7d69517..5fc65b2 100644 (file)
@@ -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);
        }