mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-11 00:14:00 +00:00
fix(multiplayer): reconcile authoritative initial connections
This commit is contained in:
@@ -12,6 +12,8 @@ func _init() -> void:
|
||||
quit(1)
|
||||
return
|
||||
control.set_process_ready(true)
|
||||
control.set_meta("admission_armed", false)
|
||||
control.initial_connect_ready.connect(func() -> void: control.set_meta("admission_armed", true))
|
||||
await process_frame
|
||||
var ready_response := await _request("GET", "/ready", [])
|
||||
if ready_response != 200:
|
||||
@@ -23,6 +25,16 @@ func _init() -> void:
|
||||
printerr("unauthorized drain response was %d" % unauthorized)
|
||||
quit(1)
|
||||
return
|
||||
var unauthorized_admission := await _request("POST", "/initial-connect-ready", ["Authorization: Bearer wrong"])
|
||||
if unauthorized_admission != 401 or bool(control.get_meta("admission_armed")):
|
||||
printerr("unauthorized initial-connect response/state was %d/%s" % [unauthorized_admission, control.get_meta("admission_armed")])
|
||||
quit(1)
|
||||
return
|
||||
var admitted := await _request("POST", "/initial-connect-ready", ["Authorization: Bearer drain-secret"])
|
||||
if admitted != 202 or not bool(control.get_meta("admission_armed")):
|
||||
printerr("authorized initial-connect response/state was %d/%s" % [admitted, control.get_meta("admission_armed")])
|
||||
quit(1)
|
||||
return
|
||||
var drained := await _request("POST", "/drain", ["Authorization: Bearer drain-secret"])
|
||||
if drained != 202 or not control.is_draining():
|
||||
printerr("authorized drain response/state was %d/%s" % [drained, control.is_draining()])
|
||||
|
||||
Reference in New Issue
Block a user