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);
{
gs_gui_functions = guifunc;
}
-
+
int GSocket_Init(void)
{
WSADATA wsaData;
-
+
if (gs_gui_functions)
{
if ( !gs_gui_functions->GUI_Init() )
{
gs_gui_functions->GUI_Cleanup();
}
-
+
/* Cleanup WinSocket */
WSACleanup();
}
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.
fd_set readfds;
fd_set writefds;
fd_set exceptfds;
-
+
assert(socket != NULL);
FD_ZERO(&readfds);
{
socket->m_detected = GSOCK_LOST_FLAG;
socket->m_establishing = FALSE;
-
+
/* LOST event: Abort any further processing */
return (GSOCK_LOST_FLAG & flags);
}
return GSOCK_OPTERR;
}
-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)
{
- return GSOCK_NOERROR;
+ 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;
#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.
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;