set error to GSOCK_TIMEOUT if the socket timed out (modified and extended patch 1303554)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35666 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -726,7 +726,10 @@ int GSocket::Read(char *buffer, int size)
|
||||
|
||||
/* If the socket is blocking, wait for data (with a timeout) */
|
||||
if (Input_Timeout() == GSOCK_TIMEDOUT)
|
||||
{
|
||||
m_error = GSOCK_TIMEDOUT;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Read the data */
|
||||
if (m_stream)
|
||||
|
@@ -869,23 +869,25 @@ int GSocket::Read(char *buffer, int size)
|
||||
Disable(GSOCK_INPUT);
|
||||
|
||||
/* If the socket is blocking, wait for data (with a timeout) */
|
||||
if (Input_Timeout() == GSOCK_TIMEDOUT)
|
||||
/* We no longer return here immediately, otherwise socket events would not be re-enabled! */
|
||||
if (Input_Timeout() == GSOCK_TIMEDOUT) {
|
||||
m_error = GSOCK_TIMEDOUT;
|
||||
/* Don't return here immediately, otherwise socket events would not be
|
||||
* re-enabled! */
|
||||
ret = -1;
|
||||
}
|
||||
else {
|
||||
/* Read the data */
|
||||
if (m_stream)
|
||||
ret = Recv_Stream(buffer, size);
|
||||
else
|
||||
ret = Recv_Dgram(buffer, size);
|
||||
}
|
||||
|
||||
if (ret == -1)
|
||||
{
|
||||
if ((errno == EWOULDBLOCK) || (errno == EAGAIN))
|
||||
m_error = GSOCK_WOULDBLOCK;
|
||||
else
|
||||
m_error = GSOCK_IOERR;
|
||||
if (ret == -1) {
|
||||
if ((errno == EWOULDBLOCK) || (errno == EAGAIN))
|
||||
m_error = GSOCK_WOULDBLOCK;
|
||||
else
|
||||
m_error = GSOCK_IOERR;
|
||||
}
|
||||
}
|
||||
|
||||
/* Enable events again now that we are done processing */
|
||||
|
Reference in New Issue
Block a user