aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortpart <tpart120@proton.me>2025-06-18 20:48:52 +0200
committertpart <tpart120@proton.me>2025-06-18 20:48:52 +0200
commitec15983134472b4c9d6003b7eed49a245b94acd8 (patch)
tree8203a97eadb5fa07cef4ba7120adfd6507c51df7
parent8fc544344e7cd3141935c095422cd00bd89a52e9 (diff)
downloadhurrycurry-ec15983134472b4c9d6003b7eed49a245b94acd8.tar
hurrycurry-ec15983134472b4c9d6003b7eed49a245b94acd8.tar.bz2
hurrycurry-ec15983134472b4c9d6003b7eed49a245b94acd8.tar.zst
Add http fallback to server list (See #317)
-rw-r--r--client/server_list.gd14
1 files changed, 12 insertions, 2 deletions
diff --git a/client/server_list.gd b/client/server_list.gd
index f3c1b456..32feb242 100644
--- a/client/server_list.gd
+++ b/client/server_list.gd
@@ -38,6 +38,10 @@ var reg := HTTPRequest.new()
var thread: Thread
var pid: int = -1
+# Fallback to http, since there seems to be a problem related to mbed tls in Godot.
+# See: https://github.com/godotengine/godot/issues/96103
+var using_http_fallback := false
+
var mdns_timer := Timer.new()
var reg_timer := Timer.new()
# after 30 minutes we stop fetching results to reduce server load
@@ -85,7 +89,9 @@ func fetch_server_list(registry: Registry) -> void:
Registry.MDNS:
mdns.request(MDNS_URL, HEADERS)
Registry.GLOBAL:
- reg.request(Global.get_setting("online.registry_url") + "/v1/list", HEADERS)
+ var url: String = Global.get_setting("online.registry_url")
+ url = url.replace("https:", "http:") if using_http_fallback else url
+ reg.request(url + "/v1/list", HEADERS)
loading = true
update_loading.emit(true)
@@ -94,7 +100,11 @@ func _on_request_completed(result: int, _response_code: int, _headers: PackedStr
loading = false
update_loading.emit(false)
if result != 0:
- push_warning("Fetching server list failed with code %d" % result)
+ push_warning("Fetching server list failed with code %d." % result)
+ if !using_http_fallback:
+ print("Retrying with http...")
+ using_http_fallback = true
+ fetch_server_list(Registry.GLOBAL)
return
var json = JSON.parse_string(body.get_string_from_utf8())
if json == null: