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:
Vadim Zeitlin
2005-09-24 22:31:55 +00:00
parent fbfb8bcc3f
commit 976abb72fc
2 changed files with 14 additions and 9 deletions

View File

@@ -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)

View File

@@ -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 */