<?php
-function update_queue_item($id) {
+function update_queue_time($id) {
logger('queue: requeue item ' . $id);
q("UPDATE `queue` SET `last` = '%s' WHERE `id` = %d LIMIT 1",
dbesc(datetime_convert()),
$a->set_baseurl(get_config('system','url'));
+ $deadguys = array();
+
+ logger('queue: start');
$r = q("SELECT `queue`.*, `contact`.`name`, `contact`.`uid` FROM `queue`
LEFT JOIN `contact` ON `queue`.`cid` = `contact`.`id`
q("DELETE FROM `queue` WHERE `created` < UTC_TIMESTAMP() - INTERVAL 3 DAY");
}
- $r = q("SELECT `id` FROM `queue` WHERE 1 ");
+ $r = q("SELECT `id` FROM `queue` WHERE `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE ");
if(! count($r))
killme();
continue;
$c = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1",
- intval($q_item['cid'])
+ intval($qi[0]['cid'])
);
if(! count($c)) {
remove_queue_item($q_item['id']);
continue;
}
+ if(in_array($c[0]['notify'],$deadguys)) {
+ logger('queue: skipping known dead url: ' . $c[0]['notify']);
+ update_queue_time($q_item['id']);
+ continue;
+ }
+
$u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
intval($c[0]['uid'])
);
logger('queue: dfrndelivery: item ' . $q_item['id'] . ' for ' . $contact['name']);
$deliver_status = dfrn_deliver($owner,$contact,$data);
- if($deliver_status == (-1))
+ if($deliver_status == (-1)) {
update_queue_time($q_item['id']);
- else
+ $deadguys[] = $contact['notify'];
+ }
+ else {
remove_queue_item($q_item['id']);
-
+ }
break;
default:
if($contact['notify']) {