X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7e134dc10c5412505716891154c67df3ee229efe..302c73511a6819c5a56269ba95cb18eb11e994f0:/src/common/sckstrm.cpp diff --git a/src/common/sckstrm.cpp b/src/common/sckstrm.cpp index b4498a51d0..f060b3fd1f 100644 --- a/src/common/sckstrm.cpp +++ b/src/common/sckstrm.cpp @@ -41,35 +41,12 @@ wxSocketOutputStream::~wxSocketOutputStream() size_t wxSocketOutputStream::OnSysWrite(const void *buffer, size_t size) { - size_t ret = m_o_socket->Write((const char *)buffer, size).LastCount(); - m_lasterror = m_o_socket->Error() ? wxSTREAM_WRITE_ERROR : wxSTREAM_NO_ERROR; + const size_t ret = m_o_socket->Write(buffer, size).LastCount(); + m_lasterror = m_o_socket->Error() + ? m_o_socket->IsClosed() ? wxSTREAM_EOF + : wxSTREAM_WRITE_ERROR + : wxSTREAM_NO_ERROR; return ret; - - // Patch 1476893 caused Advise to hang, needs further investigation -#if 0 - const char *buf = (const char *)buffer; - size_t count = 0; - - while ( count < size && m_o_socket->WaitForWrite() ) - { - const size_t ret = m_o_socket->Write(buf, size - count).LastCount(); - - buf += ret; - count += ret; - - if ( m_o_socket->Error() ) - { - if (m_o_socket->LastError() != wxSOCKET_WOULDBLOCK) - { - m_lasterror = wxSTREAM_WRITE_ERROR; - return count; - } - } - } - - m_lasterror = wxSTREAM_NO_ERROR; - return count; -#endif } // --------------------------------------------------------------------------- @@ -87,35 +64,12 @@ wxSocketInputStream::~wxSocketInputStream() size_t wxSocketInputStream::OnSysRead(void *buffer, size_t size) { - size_t ret = m_i_socket->Read((char *)buffer, size).LastCount(); - m_lasterror = m_i_socket->Error() ? wxSTREAM_READ_ERROR : wxSTREAM_NO_ERROR; + const size_t ret = m_i_socket->Read(buffer, size).LastCount(); + m_lasterror = m_i_socket->Error() + ? m_i_socket->IsClosed() ? wxSTREAM_EOF + : wxSTREAM_READ_ERROR + : wxSTREAM_NO_ERROR; return ret; - - // Patch 1476893 caused Advise to hang, needs further investigation -#if 0 - char *buf = (char *)buffer; - size_t count = 0; - - while ( count < size && m_i_socket->WaitForRead() ) - { - const size_t ret = m_i_socket->Read(buf, size - count).LastCount(); - - buf += ret; - count += ret; - - if ( m_i_socket->Error() ) - { - if (m_i_socket->LastError() != wxSOCKET_WOULDBLOCK) - { - m_lasterror = wxSTREAM_READ_ERROR; - return count; - } - } - } - - m_lasterror = wxSTREAM_NO_ERROR; - return count; -#endif } // --------------------------------------------------------------------------- @@ -131,5 +85,4 @@ wxSocketStream::~wxSocketStream() { } -#endif - // wxUSE_STREAMS && wxUSE_SOCKETS +#endif // wxUSE_STREAMS && wxUSE_SOCKETS