diff options
-rw-r--r-- | include/Contact.php | 5 | ||||
-rw-r--r-- | include/zot.php | 5 | ||||
-rw-r--r-- | mod/post.php | 69 |
3 files changed, 45 insertions, 34 deletions
diff --git a/include/Contact.php b/include/Contact.php index 8e22c608e..3bd5f9936 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -292,7 +292,8 @@ function channel_remove($channel_id, $local = true, $unset_session=true) { intval($channel_id) ); - + logger('deleting hublocs',LOGGER_DEBUG); + $r = q("update hubloc set hubloc_deleted = 1 where hubloc_hash = '%s'", dbesc($channel['channel_hash']) ); @@ -349,6 +350,8 @@ function channel_remove($channel_id, $local = true, $unset_session=true) { } + logger('deleting hublocs',LOGGER_DEBUG); + $r = q("update hubloc set hubloc_deleted = 1 where hubloc_hash = '%s' and hubloc_url = '%s' ", dbesc($channel['channel_hash']), dbesc(z_root()) diff --git a/include/zot.php b/include/zot.php index b13111f04..d7b865ee8 100644 --- a/include/zot.php +++ b/include/zot.php @@ -2373,6 +2373,7 @@ function sync_locations($sender, $arr, $absolute = false) { $changed = true; } elseif((! intval($r[0]['hubloc_deleted'])) && (intval($location['deleted']))) { + logger('deleting hubloc: ' . $r[0]['hubloc_addr']); $n = q("update hubloc set hubloc_deleted = 1, hubloc_updated = '%s' where hubloc_id = %d", dbesc(datetime_convert()), intval($r[0]['hubloc_id']) @@ -2427,7 +2428,7 @@ function sync_locations($sender, $arr, $absolute = false) { if($absolute && $xisting) { foreach($xisting as $x) { if(! array_key_exists('updated',$x)) { - logger('sync_locations: deleting unreferenced hub location ' . $x['hubloc_url']); + logger('sync_locations: deleting unreferenced hub location ' . $x['hubloc_addr']); $r = q("update hubloc set hubloc_deleted = 1, hubloc_updated = '%s' where hubloc_id = %d", dbesc(datetime_convert()), intval($x['hubloc_id']) @@ -2468,7 +2469,7 @@ function zot_encode_locations($channel) { // so that nobody tries to use it. if(intval($channel['channel_removed']) && $hub['hubloc_url'] === z_root()) - $hub['hubloc_deleted'] = true; + $hub['hubloc_deleted'] = 1; $ret[] = array( 'host' => $hub['hubloc_host'], diff --git a/mod/post.php b/mod/post.php index 00e599b49..e03e1321b 100644 --- a/mod/post.php +++ b/mod/post.php @@ -663,16 +663,16 @@ function post_post(&$a) { /* Check if the sender is already verified here */ - $hub = zot_gethub($sender); + $hubs = zot_gethub($sender,true); - if (! $hub) { + if (! $hubs) { /* Have never seen this guid or this guid coming from this location. Check it and register it. */ // (!!) this will validate the sender $result = zot_register_hub($sender); - if ((! $result['success']) || (! ($hub = zot_gethub($sender)))) { + if ((! $result['success']) || (! ($hubs = zot_gethub($sender,true)))) { $ret['message'] = 'Hub not available.'; logger('mod_zot: no hub'); json_return_and_die($ret); @@ -680,41 +680,48 @@ function post_post(&$a) { } - // Update our DB to show when we last communicated successfully with this hub - // This will allow us to prune dead hubs from using up resources + foreach($hubs as $hub) { - $r = q("update hubloc set hubloc_connected = '%s' where hubloc_id = %d", - dbesc(datetime_convert()), - intval($hub['hubloc_id']) - ); + // Update our DB to show when we last communicated successfully with this hub + // This will allow us to prune dead hubs from using up resources - // a dead hub came back to life - reset any tombstones we might have - - if(intval($hub['hubloc_error'])) { - q("update hubloc set hubloc_error = 0 where hubloc_id = %d", - intval($hub['hubloc_id']) + $r = q("update hubloc set hubloc_connected = '%s' where hubloc_id = %d", + dbesc(datetime_convert()), + intval($hub['hubloc_id']) ); - if(intval($r[0]['hubloc_orphancheck'])) { - q("update hubloc set hubloc_orhpancheck = 0 where hubloc_id = %d", - intval($hub['hubloc_id']) + + // a dead hub came back to life - reset any tombstones we might have + + if(intval($hub['hubloc_error'])) { + q("update hubloc set hubloc_error = 0 where hubloc_id = %d", + intval($hub['hubloc_id']) + ); + if(intval($r[0]['hubloc_orphancheck'])) { + q("update hubloc set hubloc_orhpancheck = 0 where hubloc_id = %d", + intval($hub['hubloc_id']) + ); + } + q("update xchan set xchan_orphan = 0 where xchan_orphan = 1 and xchan_hash = '%s'", + dbesc($hub['hubloc_hash']) ); } - q("update xchan set xchan_orphan = 0 where xchan_orphan = 1 and xchan_hash = '%s'", - dbesc($hub['hubloc_hash']) - ); - } - /* - * This hub has now been proven to be valid. - * Any hub with the same URL and a different sitekey cannot be valid. - * Get rid of them (mark them deleted). There's a good chance they were re-installs. - */ + /* + * This hub has now been proven to be valid. + * Any hub with the same URL and a different sitekey cannot be valid. + * Get rid of them (mark them deleted). There's a good chance they were re-installs. + */ - q("update hubloc set hubloc_deleted = 1 where hubloc_url = '%s' and hubloc_sitekey != '%s' ", - dbesc($hub['hubloc_url']), - dbesc($hub['hubloc_sitekey']) - ); + +// q("update hubloc set hubloc_deleted = 1 where hubloc_url = '%s' and hubloc_sitekey != '%s' ", +// dbesc($hub['hubloc_url']), +// dbesc($hub['hubloc_sitekey']) +// ); + + $connecting_url = $hub['hubloc_url']; + + } /** @TODO check which hub is primary and take action if mismatched */ @@ -917,7 +924,7 @@ function post_post(&$a) { if ($msgtype === 'notify') { - logger('notify received from ' . $hub['hubloc_url']); + logger('notify received from ' . $connecting_url); $async = get_config('system','queued_fetch'); |