@@ -54,41 +54,41 @@ pub async fn route_api_request(
5454 . await ?;
5555 tracing:: info!( ?servers_res, "servers" ) ;
5656
57- let targets = if !servers_res. servers . is_empty ( ) {
58- let port = ctx. config ( ) . server ( ) ?. rivet . api_public . port ( ) ;
59- servers_res
60- . servers
61- . iter ( )
62- . map ( |server| {
63- // For each server, create a target
64- // In a real implementation, use the actual server IP
65- // For demo purposes, use the loopback IP for all servers
66- Ok ( RouteTarget {
67- actor_id : None ,
68- server_id : Some ( server. server_id ) ,
69- host : unwrap ! ( server. lan_ip) . to_string ( ) ,
70- port,
71- path : path. to_owned ( ) ,
72- } )
57+ let port = ctx. config ( ) . server ( ) ?. rivet . api_public . port ( ) ;
58+ let targets = servers_res
59+ . servers
60+ . iter ( )
61+ // Only include servers that are installed
62+ . filter ( |server| server. install_complete_ts . is_some ( ) )
63+ . map ( |server| {
64+ // For each server, create a target
65+ Ok ( RouteTarget {
66+ actor_id : None ,
67+ server_id : Some ( server. server_id ) ,
68+ host : unwrap ! ( server. lan_ip) . to_string ( ) ,
69+ port,
70+ path : path. to_owned ( ) ,
7371 } )
74- . collect :: < GlobalResult < Vec < _ > > > ( ) ?
75- } else if let Some ( ( host, port) ) = ctx. config ( ) . server ( ) ?. rivet . edge_api_fallback_addr_lan ( ) {
76- vec ! [ RouteTarget {
77- actor_id: None ,
78- server_id: None ,
79- host,
80- port,
81- path: path. to_owned( ) ,
82- } ]
72+ } )
73+ . collect :: < GlobalResult < Vec < _ > > > ( ) ?;
74+
75+ let targets = if targets. is_empty ( ) {
76+ if let Some ( ( host, port) ) = ctx. config ( ) . server ( ) ?. rivet . edge_api_fallback_addr_lan ( ) {
77+ vec ! [ RouteTarget {
78+ actor_id: None ,
79+ server_id: None ,
80+ host,
81+ port,
82+ path: path. to_owned( ) ,
83+ } ]
84+ } else {
85+ // No API servers to route to
86+ return Ok ( None ) ;
87+ }
8388 } else {
84- // No API servers to route to
85- Vec :: new ( )
89+ targets
8690 } ;
8791
88- if targets. is_empty ( ) {
89- return Ok ( None ) ;
90- }
91-
9292 return Ok ( Some ( RoutingOutput :: Route ( RouteConfig {
9393 targets,
9494 timeout : RoutingTimeout {
0 commit comments