aboutsummaryrefslogtreecommitdiffstats
path: root/src/kvilib/net/KviSSL.cpp
diff options
context:
space:
mode:
authorGravatar Fabio Bas2012-04-07 09:19:18 +0000
committerGravatar Fabio Bas2012-04-07 09:19:18 +0000
commitc6153bae281a4a86b89bad97f15dbcc6e1f92ed2 (patch)
treeb263e840ef35d6caa77086fb3a8d9f70fe3d40bb /src/kvilib/net/KviSSL.cpp
parentUpdate ukrainian translation, thanks igorko (diff)
downloadKVIrc-c6153bae281a4a86b89bad97f15dbcc6e1f92ed2.tar.gz
KVIrc-c6153bae281a4a86b89bad97f15dbcc6e1f92ed2.tar.bz2
KVIrc-c6153bae281a4a86b89bad97f15dbcc6e1f92ed2.zip
always avoid sigpipe on osx, not only on shutdown
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@6123 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/kvilib/net/KviSSL.cpp')
-rw-r--r--src/kvilib/net/KviSSL.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/kvilib/net/KviSSL.cpp b/src/kvilib/net/KviSSL.cpp
index c140e1c13..bde752b95 100644
--- a/src/kvilib/net/KviSSL.cpp
+++ b/src/kvilib/net/KviSSL.cpp
@@ -44,6 +44,10 @@
#include <signal.h>
#endif
+#ifdef COMPILE_ON_MAC
+ #include <sys/socket.h>
+#endif
+
static bool g_bSSLInitialized = false;
static KviMutex * g_pSSLMutex = 0;
@@ -312,10 +316,7 @@ void KviSSL::shutdown()
//avoid to die on a SIGPIPE if the connection has close (SSL_shutdown can call send())
//see bug #440
- #if defined(COMPILE_ON_MAC)
- SSL_set_quiet_shutdown(m_pSSL, 1);
- SSL_shutdown(m_pSSL);
- #elif !(defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW))
+ #if !(defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW))
// ignore SIGPIPE
signal( SIGPIPE, SIG_IGN );
// At least attempt to shutdown the connection gracefully
@@ -375,8 +376,11 @@ bool KviSSL::initSocket(kvi_socket_t fd)
m_pSSL = SSL_new(m_pSSLCtx);
if(!m_pSSL)return false;
if(!SSL_set_fd(m_pSSL,fd))return false;
+#ifdef COMPILE_ON_MAC
+ int set = 1;
+ setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, (void *)&set, sizeof(int));
+#endif
return true;
-
}
static int cb(char *buf, int size, int, void *u)