aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--boot.php2
-rw-r--r--include/diaspora.php30
-rw-r--r--include/notifier.php13
3 files changed, 38 insertions, 7 deletions
diff --git a/boot.php b/boot.php
index 76f4f4693..e46c52a18 100644
--- a/boot.php
+++ b/boot.php
@@ -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);