Просмотр исходного кода

net/acceptor: Gracefully handle ECONNRESET

parazyd 2 лет назад
Родитель
Сommit
c45e9bb6e5
1 измененных файлов с 8 добавлено и 1 удалено
  1. 8 1
      src/net/acceptor.rs

+ 8 - 1
src/net/acceptor.rs

@@ -24,7 +24,7 @@ use std::{
     },
     },
 };
 };
 
 
-use log::{debug, error};
+use log::{debug, error, warn};
 use smol::Executor;
 use smol::Executor;
 use url::Url;
 use url::Url;
 
 
@@ -150,6 +150,13 @@ impl Acceptor {
                 // As per accept(2) recommendation:
                 // As per accept(2) recommendation:
                 Err(e) if e.raw_os_error().is_some() => match e.raw_os_error().unwrap() {
                 Err(e) if e.raw_os_error().is_some() => match e.raw_os_error().unwrap() {
                     libc::EAGAIN | libc::ECONNABORTED | libc::EPROTO | libc::EINTR => continue,
                     libc::EAGAIN | libc::ECONNABORTED | libc::EPROTO | libc::EINTR => continue,
+                    libc::ECONNRESET => {
+                        warn!(
+                            target: "net::acceptor::run_accept_loop()",
+                            "[P2P] Connection reset by peer in accept_loop"
+                        );
+                        continue
+                    }
                     _ => {
                     _ => {
                         error!(
                         error!(
                             target: "net::acceptor::run_accept_loop()",
                             target: "net::acceptor::run_accept_loop()",