diff --git a/src/lib/arch/unix/ArchNetworkBSD.cpp b/src/lib/arch/unix/ArchNetworkBSD.cpp index cf0eb84af..57d102654 100644 --- a/src/lib/arch/unix/ArchNetworkBSD.cpp +++ b/src/lib/arch/unix/ArchNetworkBSD.cpp @@ -79,6 +79,10 @@ ArchSocket ArchNetworkBSD::newSocket(AddressFamily family, SocketType type) } try { setBlockingOnSocket(fd, false); +#if defined(__APPLE__) + int on = 1; + setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &on, sizeof(on)); +#endif } catch (...) { close(fd); throw; @@ -196,6 +200,10 @@ ArchSocket ArchNetworkBSD::acceptSocket(ArchSocket s, ArchNetAddress *addr) try { setBlockingOnSocket(fd, false); +#if defined(__APPLE__) + int on = 1; + setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &on, sizeof(on)); +#endif } catch (...) { close(fd); delete newSocket; diff --git a/src/lib/net/SecureSocket.cpp b/src/lib/net/SecureSocket.cpp index 9518e86fd..252e853a3 100644 --- a/src/lib/net/SecureSocket.cpp +++ b/src/lib/net/SecureSocket.cpp @@ -384,6 +384,7 @@ void SecureSocket::freeSSL() setJob(nullptr); if (m_ssl) { if (m_ssl->m_ssl != nullptr) { + SSL_set_quiet_shutdown(m_ssl->m_ssl, 1); SSL_shutdown(m_ssl->m_ssl); SSL_free(m_ssl->m_ssl);