aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLRN <lrn1986@gmail.com>2012-11-01 16:43:11 +0000
committerLRN <lrn1986@gmail.com>2012-11-01 16:43:11 +0000
commit4df851487dba3f31f2bfd1e5fc1c78d2c26ca66c (patch)
tree122b1fceec325d9f232cfb10dff278d053e3b8ca /src
parentb9d0c35af63d28f00e1a482fe8e6047d1281d76c (diff)
downloadgnunet-4df851487dba3f31f2bfd1e5fc1c78d2c26ca66c.tar.gz
gnunet-4df851487dba3f31f2bfd1e5fc1c78d2c26ca66c.zip
W32: optimize GNUNET_NETWORK_fdset_add
Diffstat (limited to 'src')
-rw-r--r--src/util/network.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/util/network.c b/src/util/network.c
index fd6687c0f..125eaca8b 100644
--- a/src/util/network.c
+++ b/src/util/network.c
@@ -896,6 +896,7 @@ void
896GNUNET_NETWORK_fdset_add (struct GNUNET_NETWORK_FDSet *dst, 896GNUNET_NETWORK_fdset_add (struct GNUNET_NETWORK_FDSet *dst,
897 const struct GNUNET_NETWORK_FDSet *src) 897 const struct GNUNET_NETWORK_FDSet *src)
898{ 898{
899#ifndef MINGW
899 int nfds; 900 int nfds;
900 901
901 for (nfds = src->nsds; nfds > 0; nfds--) 902 for (nfds = src->nsds; nfds > 0; nfds--)
@@ -906,7 +907,18 @@ GNUNET_NETWORK_fdset_add (struct GNUNET_NETWORK_FDSet *dst,
906 if (nfds + 1 > dst->nsds) 907 if (nfds + 1 > dst->nsds)
907 dst->nsds = nfds + 1; 908 dst->nsds = nfds + 1;
908 } 909 }
909#ifdef MINGW 910#else
911 /* This is MinGW32-specific implementation that relies on the code that
912 * winsock2.h defines for FD_SET. Namely, it relies on FD_SET checking
913 * that fd being added is not already in the set.
914 * Also relies on us knowing what's inside fd_set (fd_count and fd_array).
915 */
916 int i;
917 for (i = 0; i < src->sds.fd_count; i++)
918 FD_SET (src->sds.fd_array[i], &dst->sds);
919 if (src->nsds > dst->nsds)
920 dst->nsds = src->nsds;
921
910 GNUNET_CONTAINER_slist_append (dst->handles, src->handles); 922 GNUNET_CONTAINER_slist_append (dst->handles, src->handles);
911#endif 923#endif
912} 924}