mirror of
https://github.com/friendica/friendica
synced 2025-04-26 17:10:10 +00:00
The delivery counter now counts only successful deliveries
This commit is contained in:
parent
f0de19dd8a
commit
ecf809c7ae
3 changed files with 38 additions and 72 deletions
|
@ -178,18 +178,10 @@ class Delivery extends BaseObject
|
|||
|
||||
case Protocol::DFRN:
|
||||
self::deliverDFRN($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup);
|
||||
|
||||
if (in_array($cmd, [Delivery::POST, Delivery::COMMENT])) {
|
||||
Model\ItemDeliveryData::incrementQueueDone($target_id);
|
||||
}
|
||||
break;
|
||||
|
||||
case Protocol::DIASPORA:
|
||||
self::deliverDiaspora($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup);
|
||||
|
||||
if (in_array($cmd, [Delivery::POST, Delivery::COMMENT])) {
|
||||
Model\ItemDeliveryData::incrementQueueDone($target_id);
|
||||
}
|
||||
break;
|
||||
|
||||
case Protocol::OSTATUS:
|
||||
|
@ -321,21 +313,19 @@ class Delivery extends BaseObject
|
|||
|
||||
Logger::info('DFRN Delivery', ['cmd' => $cmd, 'url' => $contact['url'], 'guid' => defaults($target_item, 'guid', $target_item['id']), 'return' => $deliver_status]);
|
||||
|
||||
if ($deliver_status < 0) {
|
||||
Logger::info('Delivery failed: defer message', ['id' => defaults($target_item, 'guid', $target_item['id'])]);
|
||||
Worker::defer();
|
||||
}
|
||||
|
||||
if (($deliver_status >= 200) && ($deliver_status <= 299)) {
|
||||
// We successfully delivered a message, the contact is alive
|
||||
Model\Contact::unmarkForArchival($contact);
|
||||
|
||||
if (in_array($cmd, [Delivery::POST, Delivery::COMMENT])) {
|
||||
Model\ItemDeliveryData::incrementQueueDone($target_item['id']);
|
||||
}
|
||||
} else {
|
||||
// The message could not be delivered. We mark the contact as "dead"
|
||||
Model\Contact::markForArchival($contact);
|
||||
|
||||
// Transmit via Diaspora when all other methods (legacy DFRN and new one) are failing.
|
||||
// This is a fallback for systems that don't know the new methods.
|
||||
self::deliverDiaspora($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup);
|
||||
Logger::info('Delivery failed: defer message', ['id' => defaults($target_item, 'guid', $target_item['id'])]);
|
||||
Worker::defer();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -380,32 +370,49 @@ class Delivery extends BaseObject
|
|||
if (!$contact['pubkey'] && !$public_message) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($cmd == self::RELOCATION) {
|
||||
Diaspora::sendAccountMigration($owner, $contact, $owner['uid']);
|
||||
return;
|
||||
$deliver_status = Diaspora::sendAccountMigration($owner, $contact, $owner['uid']);
|
||||
} elseif ($target_item['deleted'] && (($target_item['uri'] === $target_item['parent-uri']) || $followup)) {
|
||||
// top-level retraction
|
||||
Logger::log('diaspora retract: ' . $loc);
|
||||
Diaspora::sendRetraction($target_item, $owner, $contact, $public_message);
|
||||
return;
|
||||
$deliver_status = Diaspora::sendRetraction($target_item, $owner, $contact, $public_message);
|
||||
} elseif ($followup) {
|
||||
// send comments and likes to owner to relay
|
||||
Logger::log('diaspora followup: ' . $loc);
|
||||
Diaspora::sendFollowup($target_item, $owner, $contact, $public_message);
|
||||
return;
|
||||
$deliver_status = Diaspora::sendFollowup($target_item, $owner, $contact, $public_message);
|
||||
} elseif ($target_item['uri'] !== $target_item['parent-uri']) {
|
||||
// we are the relay - send comments, likes and relayable_retractions to our conversants
|
||||
Logger::log('diaspora relay: ' . $loc);
|
||||
Diaspora::sendRelay($target_item, $owner, $contact, $public_message);
|
||||
return;
|
||||
$deliver_status = Diaspora::sendRelay($target_item, $owner, $contact, $public_message);
|
||||
} elseif ($top_level && !$walltowall) {
|
||||
// currently no workable solution for sending walltowall
|
||||
Logger::log('diaspora status: ' . $loc);
|
||||
Diaspora::sendStatus($target_item, $owner, $contact, $public_message);
|
||||
$deliver_status = Diaspora::sendStatus($target_item, $owner, $contact, $public_message);
|
||||
} else {
|
||||
Logger::log('Unknown mode ' . $cmd . ' for ' . $loc);
|
||||
return;
|
||||
}
|
||||
|
||||
Logger::log('Unknown mode ' . $cmd . ' for ' . $loc);
|
||||
if (($deliver_status >= 200) && ($deliver_status <= 299)) {
|
||||
// We successfully delivered a message, the contact is alive
|
||||
Model\Contact::unmarkForArchival($contact);
|
||||
|
||||
if (in_array($cmd, [Delivery::POST, Delivery::COMMENT])) {
|
||||
Model\ItemDeliveryData::incrementQueueDone($target_item['id']);
|
||||
}
|
||||
} else {
|
||||
// The message could not be delivered. We mark the contact as "dead"
|
||||
Model\Contact::markForArchival($contact);
|
||||
|
||||
if (!empty($contact['contact-type']) && ($contact['contact-type'] != Model\Contact::TYPE_RELAY)) {
|
||||
Logger::info('Delivery failed: defer message', ['id' => defaults($target_item, 'guid', $target_item['id'])]);
|
||||
// defer message for redelivery
|
||||
Worker::defer();
|
||||
} elseif (in_array($cmd, [Delivery::POST, Delivery::COMMENT])) {
|
||||
Model\ItemDeliveryData::incrementQueueDone($target_item['id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue