X-Git-Url: http://git.euphorik.ch/?p=rup.git;a=blobdiff_plain;f=src%2Fmain.rs;h=24cfdbb51886fee26528c4463728abd69ab1fabc;hp=a64950dc5e2237e189241c64d2fe0e8901b6bf2a;hb=8834567b2f53bad60b9d77ff7970077f9af0888d;hpb=c8ff7a48a92d1de8957ef1150296aa4648f3b3af diff --git a/src/main.rs b/src/main.rs index a64950d..24cfdbb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,8 @@ extern crate actix_web; +extern crate listenfd; extern crate askama; +use listenfd::ListenFd; use actix_files as fs; use actix_web::{web, middleware, App, HttpServer, HttpResponse, Responder, Result, web::Query}; use askama::Template; @@ -31,16 +33,24 @@ fn main_page(query: Query) -> Result { } fn main() -> std::io::Result<()> { - HttpServer::new( - || { - App::new() - .wrap(middleware::Compress::default()) - .wrap(middleware::Logger::default()) - .service(web::resource("/").to(main_page)) - .service(fs::Files::new("/static", "static").show_files_listing()) - } - ) - .bind("0.0.0.0:8082") - .expect("Can not bind to port 8082") - .run() + let mut listenfd = ListenFd::from_env(); + let mut server = + HttpServer::new( + || { + App::new() + .wrap(middleware::Compress::default()) + .wrap(middleware::Logger::default()) + .service(web::resource("/").to(main_page)) + .service(fs::Files::new("/static", "static").show_files_listing()) + } + ); + + server = + if let Some(l) = listenfd.take_tcp_listener(0).unwrap() { + server.listen(l).unwrap() + } else { + server.bind("0.0.0.0:8082").unwrap() + }; + + server.run() }