git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28463 
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
 
 GSocketError GSocket_SetSockOpt(GSocket *socket, int level, int optname, 
                                 const void *optval, int optlen);
 
 GSocketError GSocket_SetSockOpt(GSocket *socket, int level, int optname, 
                                 const void *optval, int optlen);
+GSocketError GSocket_SetReuseAddr(GSocket *socket);
 
 void GSocket_Streamed(GSocket *socket);
 void GSocket_Unstreamed(GSocket *socket);
 
 void GSocket_Streamed(GSocket *socket);
 void GSocket_Unstreamed(GSocket *socket);
 
 {
   gs_gui_functions = guifunc;
 }
 {
   gs_gui_functions = guifunc;
 }
 int GSocket_Init(void)
 {
   WSADATA wsaData;
 int GSocket_Init(void)
 {
   WSADATA wsaData;
   if (gs_gui_functions)
   {
       if ( !gs_gui_functions->GUI_Init() )
   if (gs_gui_functions)
   {
       if ( !gs_gui_functions->GUI_Init() )
   {
       gs_gui_functions->GUI_Cleanup();
   }
   {
       gs_gui_functions->GUI_Cleanup();
   }
   /* Cleanup WinSocket */
   WSACleanup();
 }
   /* Cleanup WinSocket */
   WSACleanup();
 }
   ioctlsocket(sck->m_fd, FIONBIO, (u_long FAR *) &arg);
   _GSocket_Enable_Events(sck);
 
   ioctlsocket(sck->m_fd, FIONBIO, (u_long FAR *) &arg);
   _GSocket_Enable_Events(sck);
 
-  /* allow a socket to re-bind if the socket is in the TIME_WAIT
-     state after being previously closed.
-   */
-  setsockopt(sck->m_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&arg, sizeof(u_long));
-
   /* Bind to the local address,
    * retrieve the actual address bound,
    * and listen up to 5 connections.
   /* Bind to the local address,
    * retrieve the actual address bound,
    * and listen up to 5 connections.
     fd_set readfds;
     fd_set writefds;
     fd_set exceptfds;
     fd_set readfds;
     fd_set writefds;
     fd_set exceptfds;
     assert(socket != NULL);
 
     FD_ZERO(&readfds);
     assert(socket != NULL);
 
     FD_ZERO(&readfds);
         {
           socket->m_detected = GSOCK_LOST_FLAG;
           socket->m_establishing = FALSE;
         {
           socket->m_detected = GSOCK_LOST_FLAG;
           socket->m_establishing = FALSE;
           /* LOST event: Abort any further processing */
           return (GSOCK_LOST_FLAG & flags);
         }
           /* LOST event: Abort any further processing */
           return (GSOCK_LOST_FLAG & flags);
         }
-GSocketError GSocket_SetSockOpt(GSocket *socket, int level, int optname, 
+GSocketError GSocket_SetSockOpt(GSocket *socket, int level, int optname,
                                 const void *optval, int optlen)
 {
     if (setsockopt(socket->m_fd, level, optname, optval, optlen) == 0)
     {
                                 const void *optval, int optlen)
 {
     if (setsockopt(socket->m_fd, level, optname, optval, optlen) == 0)
     {
+GSocketError GSocket_SetReuseAddr(GSocket *socket)
+{
+  /* allow a socket to re-bind if the socket is in the TIME_WAIT
+     state after being previously closed.
+   */
+  u_long arg = 1;
+  setsockopt(socket->m_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&arg, sizeof(u_long));
+}
+
 void GSocket_Streamed(GSocket *socket)
 {
     socket->m_stream = TRUE;
 void GSocket_Streamed(GSocket *socket)
 {
     socket->m_stream = TRUE;
 
 #endif
   _GSocket_Enable_Events(sck);
 
 #endif
   _GSocket_Enable_Events(sck);
 
-  /* allow a socket to re-bind if the socket is in the TIME_WAIT
-     state after being previously closed.
-   */
-  setsockopt(sck->m_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&arg, sizeof(u_long));
-
   /* Bind to the local address,
    * retrieve the actual address bound,
    * and listen up to 5 connections.
   /* Bind to the local address,
    * retrieve the actual address bound,
    * and listen up to 5 connections.
+GSocketError GSocket_SetReuseAddr(GSocket *socket)
+{
+  /* allow a socket to re-bind if the socket is in the TIME_WAIT
+     state after being previously closed.
+   */
+  u_long arg = 1;
+  setsockopt(socket->m_fd, SOL_SOCKET, SO_REUSEADDR, (const char*)&arg, sizeof(u_long));
+}
+
 void GSocket_Streamed(GSocket *socket)
 {
     socket->m_stream = TRUE;
 void GSocket_Streamed(GSocket *socket)
 {
     socket->m_stream = TRUE;