diff options
-rw-r--r-- | boot.php | 2 | ||||
-rw-r--r-- | include/diaspora.php | 30 | ||||
-rw-r--r-- | include/notifier.php | 13 |
3 files changed, 38 insertions, 7 deletions
@@ -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 ); diff --git a/include/diaspora.php b/include/diaspora.php index 85be13a30..7e1e034d6 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -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); + } } diff --git a/include/notifier.php b/include/notifier.php index cc53a17c4..a4fe9b71e 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -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); |