# endif
#endif
-#else
- /* undefine for OSX - its really an int */
-# ifdef __DARWIN__
-# undef SOCKLEN_T
-# define SOCKLEN_T int
-# endif
#endif /* SOCKLEN_T */
+#ifndef SOCKOPTLEN_T
+#define SOCKOPTLEN_T SOCKLEN_T
+#endif
+
/*
* MSW defines this, Unices don't.
*/
m_stream = true;
m_gui_dependent = NULL;
m_non_blocking = false;
+ m_reusable = false;
m_timeout = 10*60*1000;
/* 10 minutes * 60 sec * 1000 millisec */
m_establishing = false;
m_error = GSOCK_IOERR;
return GSOCK_IOERR;
}
-#if defined(__EMX__) || defined(__VISAGECPP__)
- ioctl(m_fd, FIONBIO, (char*)&arg, sizeof(arg));
-#else
ioctl(m_fd, FIONBIO, &arg);
-#endif
gs_gui_functions->Enable_Events(this);
/* allow a socket to re-bind if the socket is in the TIME_WAIT
err = _GAddress_translate_from(connection->m_peer, &from, fromlen);
if (err != GSOCK_NOERROR)
{
- GAddress_destroy(connection->m_peer);
delete connection;
m_error = err;
return NULL;
else
{
int error;
- SOCKLEN_T len = sizeof(error);
+ SOCKOPTLEN_T len = sizeof(error);
- getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (void*) &error, &len);
+ getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (char*) &error, &len);
if (!error)
return GSOCK_NOERROR;
/* Do not use a static struct, Linux can garble it */
tv.tv_sec = m_timeout / 1000;
- tv.tv_usec = (m_timeout % 1000) / 1000;
+ tv.tv_usec = (m_timeout % 1000) * 1000;
FD_ZERO(&readfds);
FD_ZERO(&writefds);
if (m_establishing && !m_server)
{
int error;
- SOCKLEN_T len = sizeof(error);
+ SOCKOPTLEN_T len = sizeof(error);
m_establishing = false;
- getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (void*)&error, &len);
+ getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (char*)&error, &len);
if (error)
{
GSocketError GSocket::GetSockOpt(int level, int optname,
void *optval, int *optlen)
{
- if (getsockopt(m_fd, level, optname, optval, (SOCKLEN_T*)optlen) == 0)
+ if (getsockopt(m_fd, level, optname, (char*)optval, (SOCKOPTLEN_T*)optlen) == 0)
{
return GSOCK_NOERROR;
}
GSocketError GSocket::SetSockOpt(int level, int optname,
const void *optval, int optlen)
{
- if (setsockopt(m_fd, level, optname, optval, optlen) == 0)
+ if (setsockopt(m_fd, level, optname, (const char*)optval, optlen) == 0)
{
return GSOCK_NOERROR;
}
if (m_establishing && !m_server)
{
int error;
- SOCKLEN_T len = sizeof(error);
+ SOCKOPTLEN_T len = sizeof(error);
m_establishing = false;
- getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (void*)&error, (SOCKLEN_T*) &len);
+ getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (char*)&error, &len);
if (error)
{
return GSOCK_INVPORT;
}
+#if defined(__WXPM__) && defined(__EMX__)
+ se = getservbyname(port, (char*)protocol);
+#else
se = getservbyname(port, protocol);
+#endif
if (!se)
{
/* the cast to int suppresses compiler warnings about subscript having the