diff options
author | Mario <mario@mariovavti.com> | 2021-06-02 17:58:46 +0000 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2021-06-02 17:58:46 +0000 |
commit | 33463152e844f98b933401c394cc0e111893a077 (patch) | |
tree | 6c1af14e98dfe226e05b8b97abaa0de125c04596 /Zotlabs/Module/Channel.php | |
parent | 50c14d353b30d0dcd7c761884d797dc0fe90f777 (diff) | |
download | volse-hubzilla-33463152e844f98b933401c394cc0e111893a077.tar.gz volse-hubzilla-33463152e844f98b933401c394cc0e111893a077.tar.bz2 volse-hubzilla-33463152e844f98b933401c394cc0e111893a077.zip |
fix issue where a deleted channel will return 404 before returning zotinfo
Diffstat (limited to 'Zotlabs/Module/Channel.php')
-rw-r--r-- | Zotlabs/Module/Channel.php | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php index a7deb4f6b..20cbe0b5c 100644 --- a/Zotlabs/Module/Channel.php +++ b/Zotlabs/Module/Channel.php @@ -46,14 +46,22 @@ class Channel extends Controller { } $profile = 0; - $channel = App::get_channel(); if ((local_channel()) && (argc() > 2) && (argv(2) === 'view')) { + $channel = App::get_channel(); $which = $channel['channel_address']; $profile = argv(1); } - $channel = channelx_by_nick($which); + + // Do not use channelx_by_nick() here since it will dismiss deleted channels. + // We need to provide zotinfo for deleted channels so that directories can pick up the info. + $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_address = '%s' LIMIT 1", + dbesc($which) + ); + + $channel = $r[0]; + if (!$channel) { http_status_exit(404, 'Not found'); } @@ -83,12 +91,17 @@ class Channel extends Controller { 'Digest' => HTTPSig::generate_digest_header($data), '(request-target)' => strtolower($_SERVER['REQUEST_METHOD']) . ' ' . $_SERVER['REQUEST_URI'] ]; - $h = HTTPSig::create_sig($headers, $channel['channel_prvkey'], channel_url($channel)); + + $h = HTTPSig::create_sig($headers, $channel['channel_prvkey'], channel_url($channel)); HTTPSig::set_headers($h); echo $data; killme(); } + if ($channel['channel_removed']) { + http_status_exit(404, 'Not found'); + } + if (ActivityStreams::is_as_request($channel)) { // Somebody may attempt an ActivityStreams fetch on one of our message permalinks |