mirror of
https://github.com/fafhrd91/actix-web
synced 2024-11-27 17:52:56 +01:00
Feature uds: Add listen_uds to ServerBuilder (#1085)
Allows using an existing Unix Listener instead of binding to a path. Useful for when running as a daemon under systemd. Change-Id: I54a0e78c321d8b7a9ded381083217af590e9a7fa
This commit is contained in:
parent
959f7754b2
commit
c659c33919
@ -11,6 +11,9 @@
|
|||||||
|
|
||||||
* Allow to re-construct `ServiceRequest` from `HttpRequest` and `Payload`
|
* Allow to re-construct `ServiceRequest` from `HttpRequest` and `Payload`
|
||||||
|
|
||||||
|
* Add `HttpServer::listen_uds` for ability to listen on UDS FD rather than path,
|
||||||
|
which is useful for example with systemd.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
* Make UrlEncodedError::Overflow more informativve
|
* Make UrlEncodedError::Overflow more informativve
|
||||||
|
@ -79,7 +79,7 @@ actix-router = "0.1.5"
|
|||||||
actix-rt = "0.2.4"
|
actix-rt = "0.2.4"
|
||||||
actix-web-codegen = "0.1.2"
|
actix-web-codegen = "0.1.2"
|
||||||
actix-http = "0.2.9"
|
actix-http = "0.2.9"
|
||||||
actix-server = "0.6.0"
|
actix-server = "0.6.1"
|
||||||
actix-server-config = "0.1.2"
|
actix-server-config = "0.1.2"
|
||||||
actix-testing = "0.1.0"
|
actix-testing = "0.1.0"
|
||||||
actix-threadpool = "0.1.1"
|
actix-threadpool = "0.1.1"
|
||||||
|
@ -435,6 +435,37 @@ where
|
|||||||
Ok(self)
|
Ok(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "uds")]
|
||||||
|
/// Start listening for unix domain connections on existing listener.
|
||||||
|
///
|
||||||
|
/// This method is available with `uds` feature.
|
||||||
|
pub fn listen_uds(
|
||||||
|
mut self,
|
||||||
|
lst: std::os::unix::net::UnixListener,
|
||||||
|
) -> io::Result<Self> {
|
||||||
|
let cfg = self.config.clone();
|
||||||
|
let factory = self.factory.clone();
|
||||||
|
// todo duplicated:
|
||||||
|
self.sockets.push(Socket {
|
||||||
|
scheme: "http",
|
||||||
|
addr: net::SocketAddr::new(
|
||||||
|
net::IpAddr::V4(net::Ipv4Addr::new(127, 0, 0, 1)),
|
||||||
|
8080,
|
||||||
|
),
|
||||||
|
});
|
||||||
|
|
||||||
|
let addr = format!("actix-web-service-{:?}", lst.local_addr()?);
|
||||||
|
|
||||||
|
self.builder = self.builder.listen_uds(addr, lst, move || {
|
||||||
|
let c = cfg.lock();
|
||||||
|
HttpService::build()
|
||||||
|
.keep_alive(c.keep_alive)
|
||||||
|
.client_timeout(c.client_timeout)
|
||||||
|
.finish(factory())
|
||||||
|
})?;
|
||||||
|
Ok(self)
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(feature = "uds")]
|
#[cfg(feature = "uds")]
|
||||||
/// Start listening for incoming unix domain connections.
|
/// Start listening for incoming unix domain connections.
|
||||||
///
|
///
|
||||||
|
Loading…
Reference in New Issue
Block a user