diff --git a/src/common/mainloop/interserver.rs b/src/common/mainloop/interserver.rs index 059e27e..8d8124b 100644 --- a/src/common/mainloop/interserver.rs +++ b/src/common/mainloop/interserver.rs @@ -139,27 +139,32 @@ where } async fn interserver_send_loop(server_id: ServerId, - mut socket: async_std::net::TcpStream, - output_loop_receiver: async_std::sync::Receiver) + mut socket: async_std::net::TcpStream, + output_loop_receiver: async_std::sync::Receiver) where S: Serialize + std::fmt::Debug + Send + 'static, { async_std::task::spawn(async move { loop { info!("login send loop"); - let msg = output_loop_receiver.recv().await.unwrap(); + match output_loop_receiver.recv().await { + Ok(msg) => { + let payload = serde_json::to_string(&msg); + if let Ok(payload) = payload { + let len_bytes = u32::to_le_bytes(payload.len() as u32); - let payload = serde_json::to_string(&msg); - if let Ok(payload) = payload { - let len_bytes = u32::to_le_bytes(payload.len() as u32); - - match socket.write_all(&len_bytes).await { - Ok(_) => {}, - Err(err) => warn!("send failed: {:?}", err), - } - match socket.write_all(&payload.as_bytes()).await { - Ok(_) => {}, - Err(err) => warn!("send failed: {:?}", err), + match socket.write_all(&len_bytes).await { + Ok(_) => {}, + Err(err) => warn!("send failed: {:?}", err), + } + match socket.write_all(&payload.as_bytes()).await { + Ok(_) => {}, + Err(err) => warn!("send failed: {:?}", err), + } + } + }, + Err(err) => { + warn!("error in send_loop: {:?}, {:?}", server_id, err) } } } @@ -179,7 +184,7 @@ pub fn login_listen_mainloop(state: Arc