From 4d4df0ea061cdc2aa3097c0e050a4441671e1b03 Mon Sep 17 00:00:00 2001 From: Bastian Gruber Date: Sat, 29 Apr 2023 14:03:10 +0200 Subject: [PATCH] Check for proper username --- problem_03/src/server.rs | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/problem_03/src/server.rs b/problem_03/src/server.rs index becdbce..492c77d 100644 --- a/problem_03/src/server.rs +++ b/problem_03/src/server.rs @@ -57,17 +57,22 @@ async fn main() -> Result<()> { // we won't process until we find one. match framed.next().await { Some(Ok(username)) => { - name = username.clone(); - db.0.lock().unwrap().insert(username.clone(), address); - let message = compose_message(username.clone(), db.clone()); - info!("Adding username: {username} to db"); - let _ = framed.send(message).await; - info!("Send message to client"); - let b = BroadcastMessage( - username.clone(), - format!("* {} has entered the room", username), - ); - let _ = tx.send(b); + if !username.is_empty() && username.is_ascii() { + name = username.clone(); + db.0.lock().unwrap().insert(username.clone(), address); + let message = compose_message(username.clone(), db.clone()); + info!("Adding username: {username} to db"); + let _ = framed.send(message).await; + info!("Send message to client"); + let b = BroadcastMessage( + username.clone(), + format!("* {} has entered the room", username), + ); + let _ = tx.send(b); + } else { + return; + } + } Some(Err(e)) => { error!("Error parsing message: {e}"); @@ -98,7 +103,7 @@ async fn main() -> Result<()> { info!("No next frame"); let b = BroadcastMessage(name.clone(), format!("* {} has left the room", name)); - db.0.lock().unwrap().remove(username.clone()); + db.0.lock().unwrap().remove(&name.clone()); let _ = tx.send(b); break; }