]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/gsocket.c
a better fix for notebook page not being refreshed after Delete()
[wxWidgets.git] / src / msw / gsocket.c
index 26388159d728fc1435bfb5133761481a8f7dbaad..ad714a64eca86363dd019c1c896ce3d52490021d 100644 (file)
@@ -103,6 +103,13 @@ GSocket *GSocket_new(void)
   return socket;
 }
 
+void GSocket_close(GSocket *socket)
+{
+    _GSocket_Disable_Events(socket);
+    closesocket(socket->m_fd);
+    socket->m_fd = INVALID_SOCKET;
+}
+
 void GSocket_destroy(GSocket *socket)
 {
   assert(socket != NULL);
@@ -139,8 +146,7 @@ void GSocket_Shutdown(GSocket *socket)
   if (socket->m_fd != INVALID_SOCKET)
   {
     shutdown(socket->m_fd, 2);
-    closesocket(socket->m_fd);
-    socket->m_fd = INVALID_SOCKET;
+    GSocket_close(socket);
   }
 
   /* Disable GUI callbacks */
@@ -148,7 +154,6 @@ void GSocket_Shutdown(GSocket *socket)
     socket->m_cbacks[evt] = NULL;
 
   socket->m_detected = GSOCK_LOST_FLAG;
-  _GSocket_Disable_Events(socket);
 }
 
 /* Address handling */
@@ -325,8 +330,7 @@ GSocketError GSocket_SetServer(GSocket *sck)
                    (SOCKLEN_T *)&sck->m_local->m_len) != 0) ||
       (listen(sck->m_fd, 5) != 0))
   {
-    closesocket(sck->m_fd);
-    sck->m_fd = INVALID_SOCKET;
+    GSocket_close(sck);
     sck->m_error = GSOCK_IOERR;
     return GSOCK_IOERR;
   }
@@ -508,8 +512,7 @@ GSocketError GSocket_Connect(GSocket *sck, GSocketStream stream)
 
       if (err != GSOCK_NOERROR)
       {
-        closesocket(sck->m_fd);
-        sck->m_fd = INVALID_SOCKET;
+        GSocket_close(sck);
         /* sck->m_error is set in _GSocket_Connect_Timeout */
       }
 
@@ -532,8 +535,7 @@ GSocketError GSocket_Connect(GSocket *sck, GSocketStream stream)
     /* If connect failed with an error other than EWOULDBLOCK,
      * then the call to GSocket_Connect() has failed.
      */
-    closesocket(sck->m_fd);
-    sck->m_fd = INVALID_SOCKET;
+    GSocket_close(sck);
     sck->m_error = GSOCK_IOERR;
     return GSOCK_IOERR;
   }
@@ -597,8 +599,7 @@ GSocketError GSocket_SetNonOriented(GSocket *sck)
                    sck->m_local->m_addr,
                    (SOCKLEN_T *)&sck->m_local->m_len) != 0))
   {
-    closesocket(sck->m_fd);
-    sck->m_fd    = INVALID_SOCKET;
+    GSocket_close(sck);
     sck->m_error = GSOCK_IOERR;
     return GSOCK_IOERR;
   }
@@ -792,7 +793,7 @@ void GSocket_SetTimeout(GSocket *socket, unsigned long millis)
  *  operations do not clear this back to GSOCK_NOERROR, so use it only
  *  after an error.
  */
-GSocketError WXDLLEXPORT GSocket_GetError(GSocket *socket)
+GSocketError GSocket_GetError(GSocket *socket)
 {
   assert(socket != NULL);
 
@@ -1380,3 +1381,5 @@ GSocketError GAddress_UNIX_GetPath(GAddress *address, char *path, size_t sbuf)
 typedef void (*wxDummy)();
 
 #endif  /* wxUSE_SOCKETS || defined(__GSOCKET_STANDALONE__) */
+
+// vi:sts=4:sw=4:et