diff options
-rw-r--r-- | Zotlabs/Daemon/Onedirsync.php | 31 | ||||
-rw-r--r-- | Zotlabs/Lib/Libzotdir.php | 50 | ||||
-rw-r--r-- | Zotlabs/Module/Dirsearch.php | 3 |
3 files changed, 35 insertions, 49 deletions
diff --git a/Zotlabs/Daemon/Onedirsync.php b/Zotlabs/Daemon/Onedirsync.php index 89f4a40ed..5132924c8 100644 --- a/Zotlabs/Daemon/Onedirsync.php +++ b/Zotlabs/Daemon/Onedirsync.php @@ -23,35 +23,13 @@ class Onedirsync { intval($update_id) ); - if (!$r) - return; - -/* - if (($r[0]['ud_flags'] & UPDATE_FLAGS_UPDATED) || (!$r[0]['ud_addr'])) - return; - - // Have we probed this channel more recently than the other directory server - // (where we received this update from) ? - // If we have, we don't need to do anything except mark any older entries updated - - $x = q("select * from updates where ud_addr = '%s' and ud_date > '%s' and ( ud_flags & %d )>0 order by ud_date desc limit 1", - dbesc($r[0]['ud_addr']), - dbesc($r[0]['ud_date']), - intval(UPDATE_FLAGS_UPDATED) - ); - if ($x) { - q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 and ud_date != '%s'", - intval(UPDATE_FLAGS_UPDATED), - dbesc($r[0]['ud_addr']), - intval(UPDATE_FLAGS_UPDATED), - dbesc($x[0]['ud_date']) - ); + if (!$r) { return; } -*/ + // ignore doing an update if this ud_addr refers to a known dead hubloc - $h = q("select * from hubloc where hubloc_addr = '%s' order by hubloc_id desc", + $h = q("select * from hubloc where hubloc_id_url = '%s' order by hubloc_id desc", dbesc($r[0]['ud_addr']), ); @@ -71,8 +49,9 @@ class Onedirsync { // we might have to pull this out some day, but for now update_directory_entry() // runs zot_finger() and is kind of zot specific - if ($h && $h['hubloc_network'] !== 'zot6') + if ($h && $h['hubloc_network'] !== 'zot6') { return; + } Libzotdir::update_directory_entry($r[0]); diff --git a/Zotlabs/Lib/Libzotdir.php b/Zotlabs/Lib/Libzotdir.php index bb7efe501..c595f0b3f 100644 --- a/Zotlabs/Lib/Libzotdir.php +++ b/Zotlabs/Lib/Libzotdir.php @@ -334,32 +334,37 @@ class Libzotdir { logger('update_directory_entry: ' . print_r($ud,true), LOGGER_DATA); - if ($ud['ud_hash'] /* && (! ($ud['ud_flags'] & UPDATE_FLAGS_DELETED))*/) { - $success = false; - $zf = []; + if (!$ud['ud_hash'] && !$ud['ud_addr']) { + return; + } - $href = ((strpos($ud['ud_addr'], '://') === false) ? Webfinger::zot_url(punify($ud['ud_addr'])) : punify($ud['ud_addr'])); - if($href) { - $zf = Zotfinger::exec($href); - } - if(array_path_exists('signature/signer',$zf) && $zf['signature']['signer'] === $href && intval($zf['signature']['header_valid'])) { - $xc = Libzot::import_xchan($zf['data']); - // This is a workaround for a missing xchan_updated column - // TODO: implement xchan_updated in the xchan table and update this column instead - if($zf['data']['primary_location']['address'] && $zf['data']['primary_location']['url']) { - q("UPDATE hubloc SET hubloc_updated = '%s' WHERE hubloc_id_url = '%s' AND hubloc_primary = 1", - dbesc(datetime_convert()), - dbesc($zf['data']['primary_location']['url']) - ); - } - } - else { - q("UPDATE updates SET ud_last = '%s' WHERE ud_hash = '%s'", + $href = ((strpos($ud['ud_addr'], '://') === false) ? Webfinger::zot_url(punify($ud['ud_addr'])) : punify($ud['ud_addr'])); + if(!$href) { + return; + } + + $zf = Zotfinger::exec($href); + + if(array_path_exists('signature/signer',$zf) && $zf['signature']['signer'] === $href && intval($zf['signature']['header_valid'])) { + $xc = Libzot::import_xchan($zf['data']); + // This is a workaround for a missing xchan_updated column + // TODO: implement xchan_updated in the xchan table and update this column instead + if($zf['data']['primary_location']['address'] && $zf['data']['primary_location']['url']) { + q("UPDATE hubloc SET hubloc_updated = '%s' WHERE hubloc_id_url = '%s' AND hubloc_primary = 1", dbesc(datetime_convert()), - dbesc($ud['ud_hash']) + dbesc($zf['data']['primary_location']['url']) ); } + + return true; } + + q("UPDATE updates SET ud_last = '%s' WHERE ud_hash = '%s'", + dbesc(datetime_convert()), + dbesc($ud['ud_hash']) + ); + + return false; } @@ -676,8 +681,9 @@ class Libzotdir { ); if ($u) { - $x = q("UPDATE updates SET ud_date = '%s', ud_guid = '%s', ud_addr = '%s', ud_flags = 0 WHERE ud_id = %d", + $x = q("UPDATE updates SET ud_date = '%s', ud_last = '%s', ud_guid = '%s', ud_addr = '%s', ud_flags = 0 WHERE ud_id = %d", dbesc(datetime_convert()), + dbesc(NULL_DATE), dbesc(\App::get_hostname()), dbesc($addr), intval($u[0]['ud_id']) diff --git a/Zotlabs/Module/Dirsearch.php b/Zotlabs/Module/Dirsearch.php index 837783e8b..45cb48c11 100644 --- a/Zotlabs/Module/Dirsearch.php +++ b/Zotlabs/Module/Dirsearch.php @@ -216,7 +216,8 @@ class Dirsearch extends Controller { if($sync) { $spkt = array('transactions' => array()); - $r = q("SELECT * FROM updates WHERE ud_flags = 0 AND ud_date >= '%s' ORDER BY ud_date DESC", + $r = q("SELECT * FROM updates WHERE ud_flags = 0 AND ud_last = '%s' AND ud_date >= '%s' ORDER BY ud_date DESC", + dbesc(NULL_DATE), dbesc($sync) ); |