From: Arnaud Giersch Date: Mon, 3 Apr 2023 14:13:42 +0000 (+0200) Subject: Treat ECONNRESET like a normal connection close. X-Git-Tag: v3.34~214 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/2fbcc71ab230e6a05e64189f6bd7c49c1df31907?hp=8ee33e91b51a3da554a097f6eb3927b74a1ea903 Treat ECONNRESET like a normal connection close. Also return immediately with EAGAIN, or handle_message() will fail with size == -1. --- diff --git a/src/mc/remote/CheckerSide.cpp b/src/mc/remote/CheckerSide.cpp index 2e64dd8449..ab9feec026 100644 --- a/src/mc/remote/CheckerSide.cpp +++ b/src/mc/remote/CheckerSide.cpp @@ -131,9 +131,15 @@ void CheckerSide::setup_events(bool socket_only) std::array buffer; ssize_t size = recv(checker->get_channel().get_socket(), buffer.data(), buffer.size(), MSG_DONTWAIT); if (size == -1) { - XBT_ERROR("Channel::receive failure: %s", strerror(errno)); - if (errno != EAGAIN) - throw simgrid::xbt::errno_error(); + if (errno == ECONNRESET) { + XBT_DEBUG("Channel::receive failure: %s", strerror(errno)); + size = 0; // Connection was closed + } else { + XBT_ERROR("Channel::receive failure: %s", strerror(errno)); + if (errno != EAGAIN) + throw simgrid::xbt::errno_error(); + return; + } } if (size == 0) // The app closed the socket. It must be dead by now.