trying to fix udp telegram
This commit is contained in:
@@ -44,7 +44,7 @@ pub(crate) async fn run_tcp_bridge<R, W>(
|
||||
maybe_data = v_rx.recv() => {
|
||||
match maybe_data {
|
||||
Some(data) => {
|
||||
if data.is_empty() { break; }
|
||||
if data.is_empty() { continue; }
|
||||
if let Err(e) = writer.write_all(&data).await {
|
||||
error!(stream_id, error = %e, "Socket write error");
|
||||
break;
|
||||
@@ -103,7 +103,6 @@ pub(crate) async fn run_udp_bridge(
|
||||
maybe_data = v_rx.recv() => {
|
||||
match maybe_data {
|
||||
Some(data) => {
|
||||
if data.is_empty() { break; }
|
||||
if let Err(e) = socket.send(&data).await {
|
||||
error!(stream_id, error = %e, "UDP socket write error");
|
||||
break;
|
||||
|
||||
@@ -193,22 +193,15 @@ impl ClientHandler {
|
||||
|
||||
tokio::spawn(async move {
|
||||
while let Some(payload) = v_rx.recv().await {
|
||||
if payload.is_empty() {
|
||||
let close_frame =
|
||||
RawCastFrame::close(protocol, socket_id, dst_ip, dst_port);
|
||||
let _ = tx_engine_clone.send(close_frame).await;
|
||||
let data_frame = RawCastFrame::data(
|
||||
protocol,
|
||||
socket_id,
|
||||
dst_ip,
|
||||
dst_port,
|
||||
payload.to_vec(),
|
||||
);
|
||||
if tx_engine_clone.send(data_frame).await.is_err() {
|
||||
break;
|
||||
} else {
|
||||
let data_frame = RawCastFrame::data(
|
||||
protocol,
|
||||
socket_id,
|
||||
dst_ip,
|
||||
dst_port,
|
||||
payload.to_vec(),
|
||||
);
|
||||
if tx_engine_clone.send(data_frame).await.is_err() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
muxer_clone.remove_stream(stream_id);
|
||||
|
||||
@@ -41,7 +41,8 @@ impl StreamHandler {
|
||||
let target_str = String::from_utf8_lossy(&payload).to_string();
|
||||
let muxer = self.muxer.clone();
|
||||
|
||||
let (v_tx, v_rx) = tokio::sync::mpsc::channel(NetworkConfig::global().stream_capacity);
|
||||
let (v_tx, v_rx) =
|
||||
tokio::sync::mpsc::channel(NetworkConfig::global().tcp_stream_capacity);
|
||||
muxer.register_stream(stream_id, v_tx);
|
||||
|
||||
tokio::spawn(async move {
|
||||
@@ -83,7 +84,8 @@ impl StreamHandler {
|
||||
let target_str = String::from_utf8_lossy(&payload).to_string();
|
||||
let muxer = self.muxer.clone();
|
||||
|
||||
let (v_tx, v_rx) = tokio::sync::mpsc::channel(NetworkConfig::global().stream_capacity);
|
||||
let (v_tx, v_rx) =
|
||||
tokio::sync::mpsc::channel(NetworkConfig::global().udp_stream_capacity);
|
||||
muxer.register_stream(stream_id, v_tx);
|
||||
|
||||
tokio::spawn(async move {
|
||||
@@ -128,7 +130,6 @@ impl StreamHandler {
|
||||
}
|
||||
|
||||
async fn on_close(&self, stream_id: u32) {
|
||||
self.muxer.dispatch_to_local(stream_id, Bytes::new()).await;
|
||||
self.muxer.remove_stream(stream_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ impl Network {
|
||||
let addr = format!("{}:{}", self.host, self.port);
|
||||
|
||||
// Инициализируем глобальный конфиг сети (MTU, размеры буферов)
|
||||
NetworkConfig::init_global(1350);
|
||||
NetworkConfig::init_global(1500);
|
||||
|
||||
match self.role {
|
||||
ConnectionRole::Client => {
|
||||
@@ -86,8 +86,9 @@ pub struct NetworkConfig {
|
||||
// --- ИЗМЕНЕНИЯ ЗДЕСЬ ---
|
||||
pub tcp_buffer_size: usize, // Размер буфера для системного tokio::TcpStream
|
||||
pub udp_buffer_size: usize,
|
||||
pub muxer_capacity: usize, // Глобальные каналы (Muxer <-> Engine)
|
||||
pub stream_capacity: usize, // Локальные каналы 1 сокета (Engine <-> Muxer)
|
||||
pub muxer_capacity: usize, // Глобальные каналы (Muxer <-> Engine)
|
||||
pub tcp_stream_capacity: usize, // Локальные каналы 1 сокета (Engine <-> Muxer)
|
||||
pub udp_stream_capacity: usize, // Локальные каналы 1 сокета (Engine <-> Muxer)
|
||||
|
||||
pub smoltcp_socket_buf: usize,
|
||||
pub tcp_max_pending: usize,
|
||||
@@ -101,7 +102,8 @@ impl NetworkConfig {
|
||||
let safe_payload = max_wire_frame.saturating_sub(10).saturating_sub(255);
|
||||
|
||||
let muxer_capacity = 64;
|
||||
let stream_capacity = 4;
|
||||
let tcp_stream_capacity = 4; // Жесткий лимит для загрузок
|
||||
let udp_stream_capacity = 8;
|
||||
|
||||
Self {
|
||||
mtu: system_mtu,
|
||||
@@ -113,7 +115,8 @@ impl NetworkConfig {
|
||||
udp_buffer_size: 16 * 1024,
|
||||
|
||||
muxer_capacity,
|
||||
stream_capacity,
|
||||
tcp_stream_capacity,
|
||||
udp_stream_capacity,
|
||||
smoltcp_socket_buf: 64 * 1024,
|
||||
tcp_max_pending: 16 * 1024,
|
||||
tcp_chunk_size: 8 * 1024,
|
||||
|
||||
Reference in New Issue
Block a user