perform remote discovery on abook sync of nomadic clones if remote channel (xchan) is unknown
This commit is contained in:
parent
cf3b76c046
commit
c7ffae03d8
@ -2108,6 +2108,33 @@ function process_channel_sync_delivery($sender,$arr,$deliveries) {
|
|||||||
|
|
||||||
$clean = array();
|
$clean = array();
|
||||||
foreach($arr['abook'] as $abook) {
|
foreach($arr['abook'] as $abook) {
|
||||||
|
|
||||||
|
// Perform discovery if the referenced xchan hasn't ever been seen on this hub.
|
||||||
|
// This relies on the undocumented behaviour that red sites send xchan info with the abook
|
||||||
|
|
||||||
|
if($abook['abook_xchan'] && $abook['xchan_address']) {
|
||||||
|
$h = zot_get_hublocs($abook['abook_xchan']);
|
||||||
|
if(! $h) {
|
||||||
|
$f = zot_finger($abook['xchan_address'],$channel);
|
||||||
|
if(! $f['success']) {
|
||||||
|
logger('process_channel_sync_delivery: abook not probe-able' . $abook['xchan_address']);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$j = json_decode($f['body'],true);
|
||||||
|
if(! ($j['success'] && $j['guid'])) {
|
||||||
|
logger('process_channel_sync_delivery: probe failed.');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$x = import_xchan($j);
|
||||||
|
|
||||||
|
if(! $x['success']) {
|
||||||
|
logger('process_channel_sync_delivery: import failed.');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach($abook as $k => $v) {
|
foreach($abook as $k => $v) {
|
||||||
if(in_array($k,$disallowed) || (strpos($k,'abook') !== 0))
|
if(in_array($k,$disallowed) || (strpos($k,'abook') !== 0))
|
||||||
continue;
|
continue;
|
||||||
|
Reference in New Issue
Block a user