|
@@ -1,13 +1,12 @@
|
|
use std::io;
|
|
use std::io;
|
|
-use std::net::SocketAddr;
|
|
|
|
|
|
+use std::net::{Ipv4Addr, SocketAddr};
|
|
|
|
|
|
use salvo::hyper::server::conn::AddrIncoming;
|
|
use salvo::hyper::server::conn::AddrIncoming;
|
|
use salvo::hyper;
|
|
use salvo::hyper;
|
|
-use socket2::{Domain, Socket, Type};
|
|
|
|
-use tokio::net::TcpListener;
|
|
|
|
|
|
+use tokio::net::{TcpListener, TcpSocket};
|
|
|
|
|
|
pub fn builder() -> hyper::server::Builder<AddrIncoming> {
|
|
pub fn builder() -> hyper::server::Builder<AddrIncoming> {
|
|
- let addr = SocketAddr::from(([0, 0, 0, 0], 8080));
|
|
|
|
|
|
+ let addr = SocketAddr::from((Ipv4Addr::UNSPECIFIED, 8080));
|
|
let listener = reuse_listener(addr).expect("couldn't bind to addr");
|
|
let listener = reuse_listener(addr).expect("couldn't bind to addr");
|
|
let incoming = AddrIncoming::from_listener(listener).unwrap();
|
|
let incoming = AddrIncoming::from_listener(listener).unwrap();
|
|
hyper::Server::builder(incoming).http1_only(true).tcp_nodelay(true)
|
|
hyper::Server::builder(incoming).http1_only(true).tcp_nodelay(true)
|
|
@@ -15,21 +14,18 @@ pub fn builder() -> hyper::server::Builder<AddrIncoming> {
|
|
|
|
|
|
fn reuse_listener(addr: SocketAddr) -> io::Result<TcpListener> {
|
|
fn reuse_listener(addr: SocketAddr) -> io::Result<TcpListener> {
|
|
let socket = match addr {
|
|
let socket = match addr {
|
|
- SocketAddr::V4(_) => Socket::new(Domain::IPV4, Type::STREAM, None)?,
|
|
|
|
- SocketAddr::V6(_) => Socket::new(Domain::IPV6, Type::STREAM, None)?,
|
|
|
|
|
|
+ SocketAddr::V4(_) => TcpSocket::new_v4()?,
|
|
|
|
+ SocketAddr::V6(_) => TcpSocket::new_v6()?,
|
|
};
|
|
};
|
|
|
|
|
|
#[cfg(unix)]
|
|
#[cfg(unix)]
|
|
- {
|
|
|
|
- if let Err(e) = socket.set_reuse_port(true) {
|
|
|
|
- eprintln!("error setting SO_REUSEPORT: {}", e);
|
|
|
|
|
|
+ {
|
|
|
|
+ if let Err(e) = socket.set_reuseport(true) {
|
|
|
|
+ eprintln!("error setting SO_REUSEPORT: {}", e);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- socket.set_reuse_address(true)?;
|
|
|
|
- socket.set_nonblocking(true)?;
|
|
|
|
- socket.set_nodelay(true)?;
|
|
|
|
- socket.bind(&addr.into())?;
|
|
|
|
- socket.listen(1024)?;
|
|
|
|
- Ok(TcpListener::from_std(socket.into())?)
|
|
|
|
-}
|
|
|
|
|
|
+ socket.set_reuseaddr(true)?;
|
|
|
|
+ socket.bind(addr)?;
|
|
|
|
+ socket.listen(1024)
|
|
|
|
+}
|