[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r24662 - gnunet/src/util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r24662 - gnunet/src/util |
Date: |
Thu, 1 Nov 2012 17:43:11 +0100 |
Author: LRN
Date: 2012-11-01 17:43:11 +0100 (Thu, 01 Nov 2012)
New Revision: 24662
Modified:
gnunet/src/util/network.c
Log:
W32: optimize GNUNET_NETWORK_fdset_add
Modified: gnunet/src/util/network.c
===================================================================
--- gnunet/src/util/network.c 2012-11-01 16:43:07 UTC (rev 24661)
+++ gnunet/src/util/network.c 2012-11-01 16:43:11 UTC (rev 24662)
@@ -896,6 +896,7 @@
GNUNET_NETWORK_fdset_add (struct GNUNET_NETWORK_FDSet *dst,
const struct GNUNET_NETWORK_FDSet *src)
{
+#ifndef MINGW
int nfds;
for (nfds = src->nsds; nfds > 0; nfds--)
@@ -906,7 +907,18 @@
if (nfds + 1 > dst->nsds)
dst->nsds = nfds + 1;
}
-#ifdef MINGW
+#else
+ /* This is MinGW32-specific implementation that relies on the code that
+ * winsock2.h defines for FD_SET. Namely, it relies on FD_SET checking
+ * that fd being added is not already in the set.
+ * Also relies on us knowing what's inside fd_set (fd_count and fd_array).
+ */
+ int i;
+ for (i = 0; i < src->sds.fd_count; i++)
+ FD_SET (src->sds.fd_array[i], &dst->sds);
+ if (src->nsds > dst->nsds)
+ dst->nsds = src->nsds;
+
GNUNET_CONTAINER_slist_append (dst->handles, src->handles);
#endif
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r24662 - gnunet/src/util,
gnunet <=