X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3a922bb4bd8dbcb04e31e324648c2912e167e0cd..92980e9076469956e1e2cb94df97d0f8d873114a:/src/msw/gsocket.c?ds=sidebyside diff --git a/src/msw/gsocket.c b/src/msw/gsocket.c index 55b8679987..ad714a64ec 100644 --- a/src/msw/gsocket.c +++ b/src/msw/gsocket.c @@ -60,7 +60,6 @@ #include - /* if we use configure for MSW SOCKLEN_T will be already defined */ #ifndef SOCKLEN_T # define SOCKLEN_T int @@ -104,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); @@ -140,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 */ @@ -149,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 */ @@ -326,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; } @@ -509,12 +512,11 @@ 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 */ } - return err; + return (GSocketError) err; } /* If connect failed with EWOULDBLOCK and the GSocket object @@ -533,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; } @@ -598,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; } @@ -1381,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