diff --git a/apps/EchoServer.cpp b/apps/EchoServer.cpp index 4d21dac67043eee4caed1480cd48c65d17b5e931..8c1e8e722665bd676e455bd3b17dc64b2d97496c 100644 --- a/apps/EchoServer.cpp +++ b/apps/EchoServer.cpp @@ -2,8 +2,7 @@ // Copyright © 2020-2021 Florian Fischer #include <sys/types.h> -#include <cassert> -#include <climits> +#include <cerrno> #include <cstdlib> #include <cstring> #include <iostream> @@ -44,9 +43,10 @@ auto main(int argc, char* argv[]) -> int { if (unlikely(bytes_recv <= 0)) { // socket was shutdown if (bytes_recv < 0) { - DIE_MSG_ERRNO("server read failed"); + LOGE("server read failed:" << strerror(errno)); } + finish: emper::io::closeAndForget(socket); return; } @@ -55,8 +55,11 @@ auto main(int argc, char* argv[]) -> int { exit(EXIT_SUCCESS); } - ATTR_UNUSED ssize_t bytes_send = emper::io::sendAndWait(socket, buf, bytes_recv, 0); - assert(bytes_recv == bytes_send); + ssize_t bytes_send = emper::io::sendAndWait(socket, buf, bytes_recv, MSG_NOSIGNAL, true); + if (unlikely(bytes_recv != bytes_send)) { + LOGE("server send failed: " << strerror(errno)); + goto finish; + } } });