diff options
Diffstat (limited to 'server/src/main.rs')
| -rw-r--r-- | server/src/main.rs | 16 | 
1 files changed, 10 insertions, 6 deletions
| diff --git a/server/src/main.rs b/server/src/main.rs index bf69f295..68927eaa 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -151,13 +151,17 @@ async fn run() -> anyhow::Result<()> {                              }                          };                          debug!("<- {id:?} {packet:?}"); -                        if let Err(e) = state.write().await.packet_in(id, packet).await { -                            warn!("client error: {e}"); -                            let _ = error_tx -                                .send(PacketC::Error { +                        let packet_out = match state.write().await.packet_in(id, packet).await { +                            Ok(packets) => packets, +                            Err(e) => { +                                warn!("client error: {e}"); +                                vec![PacketC::Error {                                      message: format!("{e}"), -                                }) -                                .await; +                                }] +                            } +                        }; +                        for packet in packet_out { +                            let _ = error_tx.send(packet).await;                          }                      }                      Message::Close(_) => break, | 
