|
@@ -27,10 +27,23 @@ async fn main() -> Result<(), Box<dyn Error>> {
|
|
|
let mut writer_db = HashMap::<ID, Updater<(OwnedWriteHalf, Arc<Notify>)>>::new();
|
|
|
|
|
|
loop {
|
|
|
- let (socket, _) = listener.accept().await?;
|
|
|
+ let socket = match listener.accept().await {
|
|
|
+ Ok((socket, _)) => socket,
|
|
|
+ Err(_) => {
|
|
|
+ log!("connection failed during accept");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ };
|
|
|
let (mut rd, wr) = socket.into_split();
|
|
|
|
|
|
- let id = parse_identifier(&mut rd).await?;
|
|
|
+ let id = match parse_identifier(&mut rd).await {
|
|
|
+ Ok(id) => id,
|
|
|
+ Err(mgen::Error::Utf8Error(e)) => {
|
|
|
+ let err: Box<dyn Error> = Box::new(e);
|
|
|
+ return Err(err);
|
|
|
+ }
|
|
|
+ Err(_) => continue,
|
|
|
+ };
|
|
|
log!("Accepting \"{id}\"");
|
|
|
if let Some(socket_updater) = writer_db.get(&id) {
|
|
|
// we've seen this client before
|