try and fix diaspora multiple items queued issue

This commit is contained in:
Friendika 2011-11-06 16:48:13 -08:00
parent c991a1a606
commit 327105a4ea
3 changed files with 38 additions and 7 deletions

View File

@ -9,7 +9,7 @@ require_once('include/nav.php');
require_once('include/cache.php');
define ( 'FRIENDIKA_PLATFORM', 'Friendica');
define ( 'FRIENDIKA_VERSION', '2.3.1156' );
define ( 'FRIENDIKA_VERSION', '2.3.1157' );
define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
define ( 'DB_UPDATE_VERSION', 1102 );

View File

@ -1728,15 +1728,35 @@ function diaspora_transmit($owner,$contact,$slap,$public_batch) {
$a = get_app();
$logid = random_string(4);
logger('diaspora_transmit: ' . $logid . ' ' . (($public_batch) ? $contact['batch'] : $contact['notify']));
post_url((($public_batch) ? $contact['batch'] : $contact['notify']) . '/',$slap);
$dest_url = (($public_batch) ? $contact['batch'] : $contact['notify']);
if(! $dest_url) {
logger('diaspora_transmit: no url for contact: ' . $contact['id'] . ' batch mode =' . $public_batch);
return 0;
}
logger('diaspora_transmit: ' . $logid . ' ' . $dest_url);
post_url($dest_url . '/', $slap);
$return_code = $a->get_curl_code();
logger('diaspora_transmit: ' . $logid . ' returns: ' . $return_code);
if((! $return_code) || (($curl_stat == 503) && (stristr($a->get_curl_headers(),'retry-after')))) {
if((! $return_code) || (($return_code == 503) && (stristr($a->get_curl_headers(),'retry-after')))) {
logger('diaspora_transmit: queue message');
// queue message for redelivery
add_to_queue($contact['id'],NETWORK_DIASPORA,$slap,$public_batch);
$r = q("SELECT id from queue where cid = %d and network = '%s' and content = '%s' and batch = %d limit 1",
intval($contact['id']),
dbesc(NETWORK_DIASPORA),
dbesc($slap),
intval($public_batch)
);
if(count($r)) {
logger('diaspora_transmit: add_to_queue ignored - identical item already in queue');
}
else {
// queue message for redelivery
add_to_queue($contact['id'],NETWORK_DIASPORA,$slap,$public_batch);
}
}

View File

@ -206,7 +206,7 @@ function notifier_run($argv, $argc){
/**
*
* Be VERY CAREFUL if you make any changes to the following lines. Seemingly innocuous changes
* Be VERY CAREFUL if you make any changes to the following several lines. Seemingly innocuous changes
* have been known to cause runaway conditions which affected several servers, along with
* permissions issues.
*
@ -218,6 +218,17 @@ function notifier_run($argv, $argc){
$relay_to_owner = true;
}
// until the 'origin' flag has been in use for several months
// we will just use it as a fallback test
// later we will be able to use it as the primary test of whether or not to relay.
if(! $target_item['origin'])
$relay_to_owner = false;
if($parent['origin'])
$relay_to_owner = false;
if($relay_to_owner) {
logger('notifier: followup', LOGGER_DEBUG);