\r
#define DEBUG_SOCK GNUNET_NO\r
\r
+#ifndef INVALID_SOCKET\r
+#define INVALID_SOCKET -1\r
+#endif\r
+\r
struct GNUNET_NETWORK_Handle\r
{\r
int fd;\r
\r
ret = GNUNET_malloc (sizeof (struct GNUNET_NETWORK_Handle));\r
ret->fd = accept (desc->fd, address, address_len);\r
+ if (ret->fd == INVALID_SOCKET)\r
+ {\r
#ifdef MINGW\r
- if (INVALID_SOCKET == ret->fd)\r
- SetErrnoFromWinsockError (WSAGetLastError ());\r
+ SetErrnoFromWinsockError (WSAGetLastError ());\r
+#endif\r
+ GNUNET_free (ret);\r
+ return NULL;\r
+ }\r
+#ifndef MINGW\r
+ if (ret->fd >= FD_SETSIZE)\r
+ {\r
+ close (desc->fd);\r
+ GNUNET_free (ret);\r
+ errno = EMFILE;\r
+ return NULL;\r
+ }\r
#endif\r
return ret;\r
}\r
\r
ret = GNUNET_malloc (sizeof (struct GNUNET_NETWORK_Handle));\r
ret->fd = socket (domain, type, protocol);\r
-#ifdef MINGW\r
if (INVALID_SOCKET == ret->fd)\r
- SetErrnoFromWinsockError (WSAGetLastError ());\r
+ {\r
+#ifdef MINGW\r
+ SetErrnoFromWinsockError (WSAGetLastError ());\r
#endif\r
-\r
- if (ret->fd < 0)\r
+ GNUNET_free (ret);\r
+ return NULL;\r
+ }\r
+#ifndef MINGW\r
+ if (ret->fd >= FD_SETSIZE)\r
{\r
+ close (ret->fd);\r
GNUNET_free (ret);\r
- ret = NULL;\r
+ errno = EMFILE;\r
+ return NULL;\r
}\r
-\r
+#endif\r
return ret;\r
}\r
\r