From 777ed05da9685939970e8d647e4ef61f05ac28bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=A4ufele?= Date: Mon, 20 Aug 2018 19:17:10 +0200 Subject: [PATCH 1/2] Prevent server from crashing with SIGPIPE when terminating client --- common/SoapyRPCSocket.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/SoapyRPCSocket.cpp b/common/SoapyRPCSocket.cpp index 8f7234d..69bf538 100644 --- a/common/SoapyRPCSocket.cpp +++ b/common/SoapyRPCSocket.cpp @@ -415,7 +415,7 @@ int SoapyRPCSocket::multicastJoin(const std::string &group, const bool loop, con int SoapyRPCSocket::send(const void *buf, size_t len, int flags) { - int ret = ::send(_sock, (const char *)buf, int(len), flags); + int ret = ::send(_sock, (const char *)buf, int(len), flags | MSG_NOSIGNAL); if (ret == -1) this->reportError("send()"); return ret; } From cb5cf1e21127573e09fb69638434855e5070449d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=A4ufele?= Date: Tue, 21 Aug 2018 10:58:04 +0200 Subject: [PATCH 2/2] Ignore MSG_NOSIGNAL flag on platforms other than linux, because it is not supported --- common/SoapySocketDefs.in.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/common/SoapySocketDefs.in.hpp b/common/SoapySocketDefs.in.hpp index 19ae419..9bb88b9 100644 --- a/common/SoapySocketDefs.in.hpp +++ b/common/SoapySocketDefs.in.hpp @@ -127,3 +127,10 @@ typedef int socklen_t; #if !defined(IPV6_DROP_MEMBERSHIP) && defined(IPV6_LEAVE_GROUP) #define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP #endif + +/*********************************************************************** + * socket flag definitions + **********************************************************************/ +#ifndef MSG_NOSIGNAL +#define MSG_NOSIGNAL 0 +#endif