update port-forward
1. fix multi remote port override. 2. add connection.rs port-forward failed to close
This commit is contained in:
parent
37617fa888
commit
fcc62febb1
@ -568,7 +568,6 @@ impl Session {
|
|||||||
self.send(Data::AddPortForward(pf));
|
self.send(Data::AddPortForward(pf));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fn on_error(&self, err: &str) {
|
fn on_error(&self, err: &str) {
|
||||||
self.msgbox("error", "Error", err);
|
self.msgbox("error", "Error", err);
|
||||||
}
|
}
|
||||||
@ -886,7 +885,6 @@ impl Connection {
|
|||||||
video_format: CodecFormat::Unknown,
|
video_format: CodecFormat::Unknown,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
match Client::start(&session.id, &key, &token, conn_type, session.clone()).await {
|
match Client::start(&session.id, &key, &token, conn_type, session.clone()).await {
|
||||||
Ok((mut peer, direct)) => {
|
Ok((mut peer, direct)) => {
|
||||||
SERVER_KEYBOARD_ENABLED.store(true, Ordering::SeqCst);
|
SERVER_KEYBOARD_ENABLED.store(true, Ordering::SeqCst);
|
||||||
@ -2414,7 +2412,6 @@ pub fn get_session_id(id: String) -> String {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async fn start_one_port_forward(
|
async fn start_one_port_forward(
|
||||||
handler: Session,
|
handler: Session,
|
||||||
port: i32,
|
port: i32,
|
||||||
@ -2424,7 +2421,6 @@ async fn start_one_port_forward(
|
|||||||
key: &str,
|
key: &str,
|
||||||
token: &str,
|
token: &str,
|
||||||
) {
|
) {
|
||||||
handler.lc.write().unwrap().port_forward = (remote_host, remote_port);
|
|
||||||
if let Err(err) = crate::port_forward::listen(
|
if let Err(err) = crate::port_forward::listen(
|
||||||
handler.id.clone(),
|
handler.id.clone(),
|
||||||
String::new(), // TODO
|
String::new(), // TODO
|
||||||
@ -2433,10 +2429,13 @@ async fn start_one_port_forward(
|
|||||||
receiver,
|
receiver,
|
||||||
key,
|
key,
|
||||||
token,
|
token,
|
||||||
|
handler.lc.clone(),
|
||||||
|
remote_host,
|
||||||
|
remote_port,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
handler.on_error(&format!("Failed to listen on {}: {}", port, err));
|
handler.on_error(&format!("Failed to listen on {}: {}", port, err));
|
||||||
}
|
}
|
||||||
log::info!("port forward (:{}) exit", port);
|
log::info!("port forward (:{}) exit", port);
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
use std::sync::{Arc, RwLock};
|
||||||
|
|
||||||
use crate::client::*;
|
use crate::client::*;
|
||||||
use hbb_common::{
|
use hbb_common::{
|
||||||
allow_err, bail,
|
allow_err, bail,
|
||||||
@ -48,6 +50,9 @@ pub async fn listen(
|
|||||||
ui_receiver: mpsc::UnboundedReceiver<Data>,
|
ui_receiver: mpsc::UnboundedReceiver<Data>,
|
||||||
key: &str,
|
key: &str,
|
||||||
token: &str,
|
token: &str,
|
||||||
|
lc: Arc<RwLock<LoginConfigHandler>>,
|
||||||
|
remote_host: String,
|
||||||
|
remote_port: i32,
|
||||||
) -> ResultType<()> {
|
) -> ResultType<()> {
|
||||||
let listener = tcp::new_listener(format!("0.0.0.0:{}", port), true).await?;
|
let listener = tcp::new_listener(format!("0.0.0.0:{}", port), true).await?;
|
||||||
let addr = listener.local_addr()?;
|
let addr = listener.local_addr()?;
|
||||||
@ -61,6 +66,7 @@ pub async fn listen(
|
|||||||
tokio::select! {
|
tokio::select! {
|
||||||
Ok((forward, addr)) = listener.accept() => {
|
Ok((forward, addr)) = listener.accept() => {
|
||||||
log::info!("new connection from {:?}", addr);
|
log::info!("new connection from {:?}", addr);
|
||||||
|
lc.write().unwrap().port_forward = (remote_host.clone(), remote_port);
|
||||||
let id = id.clone();
|
let id = id.clone();
|
||||||
let password = password.clone();
|
let password = password.clone();
|
||||||
let mut forward = Framed::new(forward, BytesCodec::new());
|
let mut forward = Framed::new(forward, BytesCodec::new());
|
||||||
|
@ -949,6 +949,7 @@ impl Connection {
|
|||||||
addr
|
addr
|
||||||
))
|
))
|
||||||
.await;
|
.await;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1253,7 +1253,6 @@ async fn start_one_port_forward(
|
|||||||
key: &str,
|
key: &str,
|
||||||
token: &str,
|
token: &str,
|
||||||
) {
|
) {
|
||||||
handler.lc.write().unwrap().port_forward = (remote_host, remote_port);
|
|
||||||
if let Err(err) = crate::port_forward::listen(
|
if let Err(err) = crate::port_forward::listen(
|
||||||
handler.id.clone(),
|
handler.id.clone(),
|
||||||
handler.password.clone(),
|
handler.password.clone(),
|
||||||
@ -1262,6 +1261,9 @@ async fn start_one_port_forward(
|
|||||||
receiver,
|
receiver,
|
||||||
key,
|
key,
|
||||||
token,
|
token,
|
||||||
|
handler.lc.clone(),
|
||||||
|
remote_host,
|
||||||
|
remote_port,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user