#include <fcntl.h>
#include <stdlib.h>
#include <stdbool.h>
+#include <sys/ioctl.h>
#include <errno.h>
#include "sockets.h"
{
#ifdef WIN32_NATIVE
unsigned long iMode = 1;
- ioctlsocket (s, FIONBIO, (void *) &iMode);
-
+ ioctl (s, FIONBIO, (char *) &iMode);
+
#elif defined F_GETFL
int oldflags = fcntl (s, F_GETFL, NULL);
-
+
if (!(oldflags & O_NONBLOCK))
fcntl (s, F_SETFL, oldflags | O_NONBLOCK);
#endif
}
- if (connect (s, (struct sockaddr *) &ia, sizeof (ia)) < 0)
+ if (connect (s, (struct sockaddr *) &ia, sizeof (ia)) < 0
+ && (blocking || errno != EINPROGRESS))
{
- if (errno != EINPROGRESS)
- {
- perror ("connect");
- exit (77);
- }
+ perror ("connect");
+ exit (77);
}
- else if (!blocking)
- failed ("huh, connect succeeded?");
return s;
}
pfd.fd = fd;
pfd.events = ev;
pfd.revents = 0;
- r = poll (&pfd, 1, time);
+ r = poll (&pfd, 1, time);
if (r < 0)
return r;
{
int result;
- gl_sockets_startup (SOCKETS_2_0);
+ gl_sockets_startup (SOCKETS_1_1);
#ifdef INTERACTIVE
printf ("Please press Enter\n");