Skip to content

Commit e91f8c7

Browse files
committed
fix(mio): handle more errors
1 parent df404b5 commit e91f8c7

File tree

1 file changed

+18
-8
lines changed
  • p2p/src/service_impl/mio

1 file changed

+18
-8
lines changed

p2p/src/service_impl/mio/mod.rs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ enum MioError {
2626
Poll(io::Error),
2727
#[error("mio failed to start listening on {0}, error: {1}")]
2828
Listen(SocketAddr, io::Error),
29+
#[error("mio failed to register the socket on {0}, error: {1}")]
30+
Register(SocketAddr, io::Error),
2931
}
3032

3133
impl MioError {
@@ -509,10 +511,14 @@ where
509511

510512
if let Some(interests) = interests {
511513
let token = self.tokens.register(Token::Connection(addr));
512-
self.poll
513-
.registry()
514-
.reregister(&mut connection.stream, token, interests)
515-
.unwrap();
514+
if let Err(err) = self.poll.registry().reregister(
515+
&mut connection.stream,
516+
token,
517+
interests,
518+
) {
519+
MioError::Register(addr.sock_addr, err).report();
520+
return;
521+
}
516522
}
517523
self.connections.insert(addr, connection);
518524
}
@@ -547,10 +553,14 @@ where
547553
};
548554
if let Some(interests) = interests {
549555
let token = self.tokens.register(Token::Connection(addr));
550-
self.poll
551-
.registry()
552-
.reregister(&mut connection.stream, token, interests)
553-
.unwrap();
556+
if let Err(err) = self.poll.registry().reregister(
557+
&mut connection.stream,
558+
token,
559+
interests,
560+
) {
561+
self.connections.remove(&addr);
562+
self.send(MioEvent::ConnectionDidClose(addr, Err(err.to_string())));
563+
}
554564
}
555565
} else {
556566
self.send(MioEvent::OutgoingDataDidSend(

0 commit comments

Comments
 (0)