mirror of
https://github.com/rustdesk/rustdesk-server.git
synced 2025-08-16 16:35:52 +00:00
reuse port, and revert hbbr -k
This commit is contained in:
parent
a22dacce0c
commit
5078a1f797
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -779,7 +779,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hbbs"
|
name = "hbbs"
|
||||||
version = "1.1.11"
|
version = "1.1.11-1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-speed-limit",
|
"async-speed-limit",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "hbbs"
|
name = "hbbs"
|
||||||
version = "1.1.11"
|
version = "1.1.11-1"
|
||||||
authors = ["rustdesk <info@rustdesk.com>"]
|
authors = ["rustdesk <info@rustdesk.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
|
4
debian/changelog
vendored
4
debian/changelog
vendored
@ -1,3 +1,7 @@
|
|||||||
|
rustdesk-server (1.1.11-1) UNRELEASED; urgency=medium
|
||||||
|
* set reuse port to make restart friendly
|
||||||
|
* revert hbbr `-k` to not ruin back-compatibility
|
||||||
|
|
||||||
rustdesk-server (1.1.11) UNRELEASED; urgency=medium
|
rustdesk-server (1.1.11) UNRELEASED; urgency=medium
|
||||||
* change -k to default '-', so you need not to set -k any more
|
* change -k to default '-', so you need not to set -k any more
|
||||||
|
|
||||||
|
@ -260,8 +260,16 @@ pub async fn new_listener<T: ToSocketAddrs>(addr: T, reuse: bool) -> ResultType<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn listen_any(port: u16) -> ResultType<TcpListener> {
|
pub async fn listen_any(port: u16, reuse: bool) -> ResultType<TcpListener> {
|
||||||
if let Ok(mut socket) = TcpSocket::new_v6() {
|
if let Ok(mut socket) = TcpSocket::new_v6() {
|
||||||
|
if reuse {
|
||||||
|
// windows has no reuse_port, but it's reuse_address
|
||||||
|
// almost equals to unix's reuse_port + reuse_address,
|
||||||
|
// though may introduce nondeterministic behavior
|
||||||
|
#[cfg(unix)]
|
||||||
|
socket.set_reuseport(true).ok();
|
||||||
|
socket.set_reuseaddr(true).ok();
|
||||||
|
}
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
{
|
{
|
||||||
use std::os::unix::io::{FromRawFd, IntoRawFd};
|
use std::os::unix::io::{FromRawFd, IntoRawFd};
|
||||||
|
@ -39,7 +39,7 @@ fn main() -> ResultType<()> {
|
|||||||
matches.value_of("port").unwrap_or(&port.to_string()),
|
matches.value_of("port").unwrap_or(&port.to_string()),
|
||||||
matches
|
matches
|
||||||
.value_of("key")
|
.value_of("key")
|
||||||
.unwrap_or(&std::env::var("KEY").unwrap_or("-".to_owned())),
|
.unwrap_or(&std::env::var("KEY").unwrap_or_default()),
|
||||||
)?;
|
)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -85,7 +85,7 @@ pub async fn start(port: &str, key: &str) -> ResultType<()> {
|
|||||||
let main_task = async move {
|
let main_task = async move {
|
||||||
loop {
|
loop {
|
||||||
log::info!("Start");
|
log::info!("Start");
|
||||||
io_loop(listen_any(port).await?, listen_any(port2).await?, &key).await;
|
io_loop(listen_any(port, true).await?, listen_any(port2, true).await?, &key).await;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let listen_signal = crate::common::listen_signal();
|
let listen_signal = crate::common::listen_signal();
|
||||||
|
@ -1294,19 +1294,19 @@ async fn send_rk_res(
|
|||||||
|
|
||||||
async fn create_udp_listener(port: i32, rmem: usize) -> ResultType<FramedSocket> {
|
async fn create_udp_listener(port: i32, rmem: usize) -> ResultType<FramedSocket> {
|
||||||
let addr = SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), port as _);
|
let addr = SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), port as _);
|
||||||
if let Ok(s) = FramedSocket::new_reuse(&addr, false, rmem).await {
|
if let Ok(s) = FramedSocket::new_reuse(&addr, true, rmem).await {
|
||||||
log::debug!("listen on udp {:?}", s.local_addr());
|
log::debug!("listen on udp {:?}", s.local_addr());
|
||||||
return Ok(s);
|
return Ok(s);
|
||||||
}
|
}
|
||||||
let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), port as _);
|
let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), port as _);
|
||||||
let s = FramedSocket::new_reuse(&addr, false, rmem).await?;
|
let s = FramedSocket::new_reuse(&addr, true, rmem).await?;
|
||||||
log::debug!("listen on udp {:?}", s.local_addr());
|
log::debug!("listen on udp {:?}", s.local_addr());
|
||||||
Ok(s)
|
Ok(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
async fn create_tcp_listener(port: i32) -> ResultType<TcpListener> {
|
async fn create_tcp_listener(port: i32) -> ResultType<TcpListener> {
|
||||||
let s = listen_any(port as _).await?;
|
let s = listen_any(port as _, true).await?;
|
||||||
log::debug!("listen on tcp {:?}", s.local_addr());
|
log::debug!("listen on tcp {:?}", s.local_addr());
|
||||||
Ok(s)
|
Ok(s)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user