]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/gsocket.c
Incorporated src/unix/gsocket.c 1.86 to 1.92 changes (except 1.90 to 1.91
[wxWidgets.git] / src / msw / gsocket.c
index 4d6e01f6245a65492f5cc66a1da02d41e3731229..5cb994b8381041704246fef120f541a78a45434c 100644 (file)
@@ -109,11 +109,11 @@ void GSocket_SetGUIFunctions(struct GSocketGUIFunctionsTable *guifunc)
 {
   gs_gui_functions = guifunc;
 }
-         
+
 int GSocket_Init(void)
 {
   WSADATA wsaData;
-  
+
   if (gs_gui_functions)
   {
       if ( !gs_gui_functions->GUI_Init() )
@@ -130,7 +130,7 @@ void GSocket_Cleanup(void)
   {
       gs_gui_functions->GUI_Cleanup();
   }
-  
+
   /* Cleanup WinSocket */
   WSACleanup();
 }
@@ -389,11 +389,6 @@ GSocketError GSocket_SetServer(GSocket *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.
@@ -777,7 +772,7 @@ GSocketEventFlags GSocket_Select(GSocket *socket, GSocketEventFlags flags)
     fd_set readfds;
     fd_set writefds;
     fd_set exceptfds;
-    
+
     assert(socket != NULL);
 
     FD_ZERO(&readfds);
@@ -829,7 +824,7 @@ GSocketEventFlags GSocket_Select(GSocket *socket, GSocketEventFlags flags)
         {
           socket->m_detected = GSOCK_LOST_FLAG;
           socket->m_establishing = FALSE;
-      
+
           /* LOST event: Abort any further processing */
           return (GSOCK_LOST_FLAG & flags);
         }
@@ -990,6 +985,45 @@ void GSocket_UnsetCallback(GSocket *socket, GSocketEventFlags flags)
   }
 }
 
+GSocketError GSocket_GetSockOpt(GSocket *socket, int level, int optname,
+                                void *optval, int *optlen)
+{
+    if (getsockopt(socket->m_fd, level, optname, optval, optlen) == 0)
+    {
+        return GSOCK_NOERROR;
+    }
+    return GSOCK_OPTERR;
+}
+
+GSocketError GSocket_SetSockOpt(GSocket *socket, int level, int optname,
+                                const void *optval, int optlen)
+{
+    if (setsockopt(socket->m_fd, level, optname, optval, optlen) == 0)
+    {
+        return GSOCK_NOERROR;
+    }
+    return GSOCK_OPTERR;
+}
+
+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_Unstreamed(GSocket *socket)
+{
+    socket->m_stream = FALSE;
+}
+
 /* Internals (IO) */
 
 /* _GSocket_Input_Timeout:
@@ -1312,7 +1346,7 @@ GSocketError _GAddress_Init_INET(GAddress *address)
   }
 
   address->m_family = GSOCK_INET;
-  address->m_realfamily = PF_INET;
+  address->m_realfamily = AF_INET;
   ((struct sockaddr_in *)address->m_addr)->sin_family = AF_INET;
   ((struct sockaddr_in *)address->m_addr)->sin_addr.s_addr = INADDR_ANY;