]> git.mxchange.org Git - friendica.git/commitdiff
Ensure that local delivery is done via DFRN
authorMichael <heluecht@pirati.ca>
Sat, 11 Jan 2020 18:25:48 +0000 (18:25 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 11 Jan 2020 18:25:48 +0000 (18:25 +0000)
src/Worker/Delivery.php
src/Worker/Notifier.php

index a2088fde5dcbb3c28fb69d148bff5b60c8fb24bc..37a4ec445a999ad85805db8685f4ffcca7d72fe7 100644 (file)
@@ -197,6 +197,11 @@ class Delivery
                        $contact['network'] = Protocol::DIASPORA;
                }
 
+               // Ensure that local contacts are delivered locally
+               if (Model\Contact::isLocal($contact['url'])) {
+                       $contact['network'] = Protocol::DFRN;
+               }
+
                Logger::notice('Delivering', ['cmd' => $cmd, 'target' => $target_id, 'followup' => $followup, 'network' => $contact['network']]);
 
                switch ($contact['network']) {
@@ -287,11 +292,8 @@ class Delivery
 
                Logger::debug('Notifier entry: ' . $contact["url"] . ' ' . (($target_item['guid'] ?? '') ?: $target_item['id']) . ' entry: ' . $atom);
 
-               $basepath =  implode('/', array_slice(explode('/', $contact['url']), 0, 3));
-
                // perform local delivery if we are on the same site
-
-               if (Strings::compareLink($basepath, DI::baseUrl())) {
+               if (Model\Contact::isLocal($contact['url'])) {
                        $condition = ['nurl' => Strings::normaliseLink($contact['url']), 'self' => true];
                        $target_self = DBA::selectFirst('contact', ['uid'], $condition);
                        if (!DBA::isResult($target_self)) {
index fea2da7e3238f8b79fec75e7fe050a0781f72134..f4caf0eb9e773169f168ebea0ea6c53b827041bc 100644 (file)
@@ -444,6 +444,11 @@ class Notifier
 
                        if (DBA::isResult($r)) {
                                foreach ($r as $rr) {
+                                       // Ensure that local contacts are delivered via DFRN
+                                       if (Contact::isLocal($rr['url'])) {
+                                               $contact['network'] == Protocol::DFRN;
+                                       }
+
                                        if (!empty($rr['addr']) && ($rr['network'] == Protocol::ACTIVITYPUB) && !DBA::exists('fcontact', ['addr' => $rr['addr']])) {
                                                Logger::info('Contact is AP omly', ['target' => $target_id, 'contact' => $rr['url']]);
                                                continue;
@@ -489,6 +494,11 @@ class Notifier
 
                // delivery loop
                while ($contact = DBA::fetch($delivery_contacts_stmt)) {
+                       // Ensure that local contacts are delivered via DFRN
+                       if (Contact::isLocal($contact['url'])) {
+                               $contact['network'] == Protocol::DFRN;
+                       }
+
                        if (!empty($contact['addr']) && ($contact['network'] == Protocol::ACTIVITYPUB) && !DBA::exists('fcontact', ['addr' => $contact['addr']])) {
                                Logger::info('Contact is AP omly', ['target' => $target_id, 'contact' => $contact['url']]);
                                continue;