summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorepicsam123 <92618898+epicsam123@users.noreply.github.com>2025-01-22 17:33:54 -0500
committerGitHub <noreply@github.com>2025-01-22 17:33:54 -0500
commit0546a73bfaef384b948acad27a92ca02bf44e3bf (patch)
treecb3051b3d7264e8906463281fe263ff6b6367c75 /src
parent164d764d553921e6ee98facda241f13c2103ec90 (diff)
downloadinvidious-0546a73bfaef384b948acad27a92ca02bf44e3bf.tar.gz
invidious-0546a73bfaef384b948acad27a92ca02bf44e3bf.tar.bz2
invidious-0546a73bfaef384b948acad27a92ca02bf44e3bf.zip
Pick a different instance upon redirect
Diffstat (limited to 'src')
-rw-r--r--src/invidious/routes/misc.cr13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/invidious/routes/misc.cr b/src/invidious/routes/misc.cr
index 8b620d63..152bc2cb 100644
--- a/src/invidious/routes/misc.cr
+++ b/src/invidious/routes/misc.cr
@@ -40,14 +40,23 @@ module Invidious::Routes::Misc
def self.cross_instance_redirect(env)
referer = get_referer(env)
+ redirect_url = "redirect.invidious.io"
instance_list = Invidious::Jobs::InstanceListRefreshJob::INSTANCES["INSTANCES"]
if instance_list.empty?
- instance_url = "redirect.invidious.io"
+ instance_url = redirect_url
else
# Sample returns an array
# Instances are packaged as {region, domain} in the instance list
- instance_url = instance_list.sample(1)[0][1]
+ # Filter out the current instance
+ other_available_instances = instance_list.reject! { |region, domain| domain == CONFIG.domain }
+
+ # If there are any other instances, select a random one
+ if other_available_instances.any?
+ instance_url = other_available_instances.sample(1)[0][1]
+ else
+ # If the current instance is the only one, use the redirect URL as fallback
+ instance_url = redirect_url
end
env.redirect "https://#{instance_url}#{referer}"