diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 74975159ea..f233f158a9 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -1405,25 +1405,27 @@ class DFRN { $a = get_app(); - if (empty($contact['addr'])) { - logger('Empty contact handle for ' . $contact['id'] . ' - ' . $contact['url'] . ' - trying to update it.'); - if (Contact::updateFromProbe($contact['id'])) { - $new_contact = dba::selectFirst('contact', ['addr'], ['id' => $contact['id']]); - $contact['addr'] = $new_contact['addr']; - } - + if (!$public_batch) { if (empty($contact['addr'])) { - logger('Unable to find contact handle for ' . $contact['id'] . ' - ' . $contact['url']); - Contact::markForArchival($contact); - return -21; - } - } + logger('Empty contact handle for ' . $contact['id'] . ' - ' . $contact['url'] . ' - trying to update it.'); + if (Contact::updateFromProbe($contact['id'])) { + $new_contact = dba::selectFirst('contact', ['addr'], ['id' => $contact['id']]); + $contact['addr'] = $new_contact['addr']; + } - $fcontact = Diaspora::personByHandle($contact['addr']); - if (empty($fcontact)) { - logger('Unable to find contact details for ' . $contact['id'] . ' - ' . $contact['addr']); - Contact::markForArchival($contact); - return -22; + if (empty($contact['addr'])) { + logger('Unable to find contact handle for ' . $contact['id'] . ' - ' . $contact['url']); + Contact::markForArchival($contact); + return -21; + } + } + + $fcontact = Diaspora::personByHandle($contact['addr']); + if (empty($fcontact)) { + logger('Unable to find contact details for ' . $contact['id'] . ' - ' . $contact['addr']); + Contact::markForArchival($contact); + return -22; + } } $envelope = Diaspora::buildMessage($atom, $owner, $contact, $owner['uprvkey'], $fcontact['pubkey'], $public_batch); diff --git a/src/Worker/Delivery.php b/src/Worker/Delivery.php index 9dbe0eca0a..d8ab882243 100644 --- a/src/Worker/Delivery.php +++ b/src/Worker/Delivery.php @@ -269,7 +269,10 @@ class Delivery extends BaseObject { // We don't have a relationship with contacts on a public post. // Se we transmit with the new method and via Diaspora as a fallback if ($items[0]['uid'] == 0) { - $deliver_status = DFRN::transmit($owner, $contact, $atom); + // Transmit in public if it's a relay post + $public_dfrn = ($contact['contact-type'] == ACCOUNT_TYPE_RELAY); + + $deliver_status = DFRN::transmit($owner, $contact, $atom, $public_dfrn); if (($deliver_status < 200) || ($deliver_status > 299)) { // Transmit via Diaspora if not possible via Friendica self::deliverDiaspora($cmd, $contact, $owner, $items, $target_item, $public_message, $top_level, $followup);