gnunet-svn
[Top][All Lists]
Advanced

[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
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]