aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMario Vavti <mario@mariovavti.com>2023-04-12 18:24:44 +0200
committerMario Vavti <mario@mariovavti.com>2023-04-12 18:24:44 +0200
commitbdf1b23198ed958942f30c7103995231afd2f5da (patch)
treedc88bd01ebab4e848468e526f98d229b354adb9a
parent6f1c261f6bc740d3a8a0c3b8540b7a5712c20cfd (diff)
downloadvolse-hubzilla-bdf1b23198ed958942f30c7103995231afd2f5da.tar.gz
volse-hubzilla-bdf1b23198ed958942f30c7103995231afd2f5da.tar.bz2
volse-hubzilla-bdf1b23198ed958942f30c7103995231afd2f5da.zip
reset ud_last if we had contact and some cleanup
-rw-r--r--Zotlabs/Daemon/Onedirsync.php31
-rw-r--r--Zotlabs/Lib/Libzotdir.php50
-rw-r--r--Zotlabs/Module/Dirsearch.php3
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)
);