diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 49 |
1 files changed, 38 insertions, 11 deletions
diff --git a/src/main.rs b/src/main.rs index 6c9da05..dd2c903 100644 --- a/src/main.rs +++ b/src/main.rs | |||
| @@ -207,18 +207,45 @@ async fn main() -> Result<()> { | |||
| 207 | info!("Starting HTTP server on {}", config.bind_address); | 207 | info!("Starting HTTP server on {}", config.bind_address); |
| 208 | 208 | ||
| 209 | // Run server until shutdown signal, then cleanup | 209 | // Run server until shutdown signal, then cleanup |
| 210 | tokio::select! { | 210 | #[cfg(unix)] |
| 211 | result = http::run_server( | 211 | { |
| 212 | config, | 212 | use tokio::signal::unix::{signal, SignalKind}; |
| 213 | relay_with_db.relay, | 213 | let mut sigterm = signal(SignalKind::terminate())?; |
| 214 | relay_with_db.database, | 214 | |
| 215 | metrics, | 215 | tokio::select! { |
| 216 | purgatory, | 216 | result = http::run_server( |
| 217 | ) => { | 217 | config, |
| 218 | result? | 218 | relay_with_db.relay, |
| 219 | relay_with_db.database, | ||
| 220 | metrics, | ||
| 221 | purgatory, | ||
| 222 | ) => { | ||
| 223 | result? | ||
| 224 | } | ||
| 225 | _ = signal::ctrl_c() => { | ||
| 226 | info!("Received SIGINT (Ctrl+C), cleaning up..."); | ||
| 227 | } | ||
| 228 | _ = sigterm.recv() => { | ||
| 229 | info!("Received SIGTERM, cleaning up..."); | ||
| 230 | } | ||
| 219 | } | 231 | } |
| 220 | _ = signal::ctrl_c() => { | 232 | } |
| 221 | info!("Received shutdown signal, cleaning up..."); | 233 | |
| 234 | #[cfg(not(unix))] | ||
| 235 | { | ||
| 236 | tokio::select! { | ||
| 237 | result = http::run_server( | ||
| 238 | config, | ||
| 239 | relay_with_db.relay, | ||
| 240 | relay_with_db.database, | ||
| 241 | metrics, | ||
| 242 | purgatory, | ||
| 243 | ) => { | ||
| 244 | result? | ||
| 245 | } | ||
| 246 | _ = signal::ctrl_c() => { | ||
| 247 | info!("Received SIGINT (Ctrl+C), cleaning up..."); | ||
| 248 | } | ||
| 222 | } | 249 | } |
| 223 | } | 250 | } |
| 224 | 251 | ||