X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/04b2ab1a0cfe39c98617a6c961e5ae715987c52f..50b5e38d3ff57f33b9b3510ab8576123efd670e9:/src/common/socket.cpp diff --git a/src/common/socket.cpp b/src/common/socket.cpp index 5d7eb3ad4f..3c4f417e75 100644 --- a/src/common/socket.cpp +++ b/src/common/socket.cpp @@ -64,10 +64,11 @@ #define wxSOCKET_MSG_NOSIGNAL MSG_NOSIGNAL #else // MSG_NOSIGNAL not available (BSD including OS X) // next best possibility is to use SO_NOSIGPIPE socket option, this covers - // BSD systems (including OS X) -- but if we don't have it neither, we have - // to fall back to the old way of simply disabling SIGPIPE temporarily, so - // define a class to do it in a simple way + // BSD systems (including OS X) -- but if we don't have it neither (AIX and + // old HP-UX do not), we have to fall back to the old way of simply + // disabling SIGPIPE temporarily, so define a class to do it in a safe way #if defined(__UNIX__) && !defined(SO_NOSIGPIPE) + extern "C" { typedef void (*wxSigHandler_t)(int); } namespace { class IgnoreSignal @@ -87,13 +88,15 @@ } private: - const sighandler_t m_handler; + const wxSigHandler_t m_handler; const int m_sig; wxDECLARE_NO_COPY_CLASS(IgnoreSignal); }; } // anonymous namespace - #endif + + #define wxNEEDS_IGNORE_SIGPIPE + #endif // Unix without SO_NOSIGPIPE #define wxSOCKET_MSG_NOSIGNAL 0 #endif @@ -640,7 +643,7 @@ int wxSocketImpl::RecvStream(void *buffer, int size) int wxSocketImpl::SendStream(const void *buffer, int size) { -#if !defined(MSG_NOSIGNAL) && !defined(SO_NOSIGPIPE) +#ifdef wxNEEDS_IGNORE_SIGPIPE IgnoreSignal ignore(SIGPIPE); #endif