diff --git a/lib/net/CTCPSocket.cpp b/lib/net/CTCPSocket.cpp index 7c9b12ce..ee276ee0 100644 --- a/lib/net/CTCPSocket.cpp +++ b/lib/net/CTCPSocket.cpp @@ -334,16 +334,22 @@ CTCPSocket::newJob() { // note -- must have m_mutex locked on entry - if (m_socket == NULL || !(m_readable || m_writable)) { + if (m_socket == NULL) { return NULL; } else if (!m_connected) { assert(!m_readable); + if (!(m_readable || m_writable)) { + return NULL; + } return new TSocketMultiplexerMethodJob( this, &CTCPSocket::serviceConnecting, m_socket, m_readable, m_writable); } else { + if (!(m_readable || (m_writable && (m_outputBuffer.getSize() > 0)))) { + return NULL; + } return new TSocketMultiplexerMethodJob( this, &CTCPSocket::serviceConnected, m_socket, m_readable,