]> git.saurik.com Git - wxWidgets.git/commitdiff
set error to GSOCK_TIMEOUT if the socket timed out (modified and extended patch 1303554)
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 24 Sep 2005 22:31:55 +0000 (22:31 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 24 Sep 2005 22:31:55 +0000 (22:31 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35666 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/gsocket.cpp
src/unix/gsocket.cpp

index 1fcf0afa6d0a2f349c1830f9bf374e2cf0728682..ac350bc4ce9a2d8402a7cf2e6e59413b6ce07707 100644 (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)
index becd67f59cfce20df21579175bf0860b66d7dbe3..d9a83d361e551fc25f17691b03dcfe661216942b 100644 (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 */