@@ -15,7 +15,7 @@ use defguard_gateway::{
1515 gateway:: { Gateway , TlsConfig , run_gateway_loop, run_stats} ,
1616 init_syslog,
1717 logging:: init_tracing,
18- server:: run_server ,
18+ server:: run_http_server ,
1919 setup:: run_setup,
2020} ;
2121use defguard_version:: Version ;
@@ -93,7 +93,7 @@ async fn main() -> Result<(), GatewayError> {
9393
9494 // Optionally, launch HTTP server to report gateway's health.
9595 if let Some ( health_port) = config. health_port {
96- tasks. spawn ( run_server (
96+ tasks. spawn ( run_http_server (
9797 health_port,
9898 config. http_bind_address ,
9999 Arc :: clone ( & gateway. connected ) ,
@@ -104,41 +104,40 @@ async fn main() -> Result<(), GatewayError> {
104104 let gateway = Arc :: new ( Mutex :: new ( gateway) ) ;
105105 tasks. spawn ( run_stats ( Arc :: clone ( & gateway) , config. stats_period ( ) ) ) ;
106106
107- let tls_config = if needs_setup {
108- log:: info!(
109- "gRPC TLS certificates not found in {}. They will be generated during setup." ,
110- cert_dir. display( )
111- ) ;
112- run_setup ( & config, cert_dir, Arc :: clone ( & logs_rx) ) . await ?
113- } else if let ( Some ( cert) , Some ( key) ) = ( grpc_cert, grpc_key) {
114- log:: info!(
115- "Using existing gRPC TLS certificates from {}" ,
116- cert_dir. display( )
117- ) ;
118- TlsConfig {
119- grpc_cert_pem : cert,
120- grpc_key_pem : key,
121- }
122- } else {
123- return Err ( GatewayError :: SetupError (
124- "gRPC TLS certificates are missing after setup" . to_string ( ) ,
125- ) ) ;
126- } ;
127-
128- // Launch gRPC server (with purge-triggered setup loop).
129- tasks. spawn ( run_gateway_loop (
130- config. clone ( ) ,
131- cert_dir. clone ( ) ,
132- gateway,
133- Arc :: clone ( & logs_rx) ,
134- tls_config,
135- ) ) ;
107+ // Clone for later.
108+ let post_down_clone = config. post_down . clone ( ) ;
109+
110+ tasks. spawn ( async move {
111+ let tls_config = if needs_setup {
112+ log:: info!(
113+ "gRPC TLS certificates not found in {}. They will be generated during setup." ,
114+ config. cert_dir. display( )
115+ ) ;
116+ run_setup ( & config, Arc :: clone ( & logs_rx) ) . await ?
117+ } else if let ( Some ( cert) , Some ( key) ) = ( grpc_cert, grpc_key) {
118+ log:: info!(
119+ "Using existing gRPC TLS certificates from {}" ,
120+ config. cert_dir. display( )
121+ ) ;
122+ TlsConfig {
123+ grpc_cert_pem : cert,
124+ grpc_key_pem : key,
125+ }
126+ } else {
127+ return Err ( GatewayError :: SetupError (
128+ "gRPC TLS certificates are missing after setup" . to_string ( ) ,
129+ ) ) ;
130+ } ;
131+
132+ // Launch gRPC server (with purge-triggered setup loop).
133+ run_gateway_loop ( config, gateway, Arc :: clone ( & logs_rx) , tls_config) . await
134+ } ) ;
136135
137136 while let Some ( Ok ( result) ) = tasks. join_next ( ) . await {
138137 result?;
139138 }
140139
141- if let Some ( post_down) = & config . post_down {
140+ if let Some ( post_down) = & post_down_clone {
142141 log:: info!( "Executing specified POST_DOWN command: {post_down}" ) ;
143142 execute_command ( post_down) ?;
144143 }
0 commit comments