summaryrefslogtreecommitdiffstats
path: root/xrdpapi/xrdpapi.c
diff options
context:
space:
mode:
authorItamar Reis Peixoto <itamar@ispbrasil.com.br>2016-02-08 22:37:44 -0200
committerItamar Reis Peixoto <itamar@ispbrasil.com.br>2016-02-08 22:37:44 -0200
commitee436aeec9385a77cb547384575bcc2f9ad2746c (patch)
treed7fc2f98e36a9c06713284e450ad9bf98653346e /xrdpapi/xrdpapi.c
parent40a197e7a8960fdaefb1e4bd90344c5734bd9e77 (diff)
parent2a5d204baaa84207e835af570d89b10a17083fae (diff)
downloadxrdp-proprietary-ee436aeec9385a77cb547384575bcc2f9ad2746c.tar.gz
xrdp-proprietary-ee436aeec9385a77cb547384575bcc2f9ad2746c.zip
Merge pull request #309 from proski/devel
Fixes for autotools, compile warnings and MacOS compatibility
Diffstat (limited to 'xrdpapi/xrdpapi.c')
-rw-r--r--xrdpapi/xrdpapi.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/xrdpapi/xrdpapi.c b/xrdpapi/xrdpapi.c
index cd343e75..974a094c 100644
--- a/xrdpapi/xrdpapi.c
+++ b/xrdpapi/xrdpapi.c
@@ -162,6 +162,14 @@ WTSVirtualChannelOpenEx(unsigned int SessionId, const char *pVirtualName,
return wts;
}
+/*
+ * Prevent receiving SIGPIPE on disconnect using either MSG_NOSIGNAL (Linux)
+ * or SO_NOSIGPIPE (Mac OS X)
+ */
+#if !defined(MSG_NOSIGNAL)
+#define MSG_NOSIGNAL 0
+#endif
+
/*****************************************************************************/
static int
mysend(int sck, const void* adata, int bytes)
@@ -170,6 +178,11 @@ mysend(int sck, const void* adata, int bytes)
int error;
const char* data;
+#if defined(SO_NOSIGPIPE)
+ const int on = 1;
+ setsockopt(sck, SOL_SOCKET, SO_NOSIGPIPE, &on, sizeof(on));
+#endif
+
data = (const char*)adata;
sent = 0;
while (sent < bytes)