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'); require_once('include/cache.php');
define ( 'FRIENDIKA_PLATFORM', 'Friendica'); define ( 'FRIENDIKA_PLATFORM', 'Friendica');
define ( 'FRIENDIKA_VERSION', '2.3.1156' ); define ( 'FRIENDIKA_VERSION', '2.3.1157' );
define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
define ( 'DB_UPDATE_VERSION', 1102 ); define ( 'DB_UPDATE_VERSION', 1102 );

View file

@ -1728,16 +1728,36 @@ function diaspora_transmit($owner,$contact,$slap,$public_batch) {
$a = get_app(); $a = get_app();
$logid = random_string(4); $logid = random_string(4);
logger('diaspora_transmit: ' . $logid . ' ' . (($public_batch) ? $contact['batch'] : $contact['notify'])); $dest_url = (($public_batch) ? $contact['batch'] : $contact['notify']);
post_url((($public_batch) ? $contact['batch'] : $contact['notify']) . '/',$slap); 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(); $return_code = $a->get_curl_code();
logger('diaspora_transmit: ' . $logid . ' returns: ' . $return_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'); logger('diaspora_transmit: queue message');
$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 // queue message for redelivery
add_to_queue($contact['id'],NETWORK_DIASPORA,$slap,$public_batch); add_to_queue($contact['id'],NETWORK_DIASPORA,$slap,$public_batch);
} }
}
return(($return_code) ? $return_code : (-1)); return(($return_code) ? $return_code : (-1));

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 * have been known to cause runaway conditions which affected several servers, along with
* permissions issues. * permissions issues.
* *
@ -218,6 +218,17 @@ function notifier_run($argv, $argc){
$relay_to_owner = true; $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) { if($relay_to_owner) {
logger('notifier: followup', LOGGER_DEBUG); logger('notifier: followup', LOGGER_DEBUG);