@@ -54,41 +54,41 @@ pub async fn route_api_request(
54
54
. await ?;
55
55
tracing:: info!( ?servers_res, "servers" ) ;
56
56
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 ( ) ,
73
71
} )
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
+ }
83
88
} else {
84
- // No API servers to route to
85
- Vec :: new ( )
89
+ targets
86
90
} ;
87
91
88
- if targets. is_empty ( ) {
89
- return Ok ( None ) ;
90
- }
91
-
92
92
return Ok ( Some ( RoutingOutput :: Route ( RouteConfig {
93
93
targets,
94
94
timeout : RoutingTimeout {
0 commit comments