}
-#ifndef MINGW
/**
* Make a socket non-inheritable to child processes
*
static int
socket_set_inheritable (const struct GNUNET_NETWORK_Handle *h)
{
+#ifndef MINGW
int i;
-
i = fcntl (h->fd, F_GETFD);
if (i < 0)
return GNUNET_SYSERR;
i |= FD_CLOEXEC;
if (fcntl (h->fd, F_SETFD, i) < 0)
return GNUNET_SYSERR;
+#else
+ BOOL b;
+ SetLastError (0);
+ b = SetHandleInformation (h->fd, HANDLE_FLAG_INHERIT, 0);
+ if (!b)
+ {
+ SetErrnoFromWinsockError (WSAGetLastError ());
+ return GNUNET_SYSERR;
+ }
+#endif
return GNUNET_OK;
}
-#endif
#ifdef DARWIN
errno = EMFILE;
return GNUNET_SYSERR;
}
+#endif
if (GNUNET_OK != socket_set_inheritable (h))
LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
"socket_set_inheritable");
-#endif
+
if (GNUNET_SYSERR == socket_set_blocking (h, GNUNET_NO))
{
GNUNET_break (0);
#endif
)
{
+ GNUNET_break (0);
LOG (GNUNET_ERROR_TYPE_ERROR,
_
("Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"),
"select");
- GNUNET_break (0);
}
#ifndef MINGW
tv.tv_sec = timeout.rel_value / GNUNET_TIME_UNIT_SECONDS.rel_value;