summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS8
-rw-r--r--Modules/selectmodule.c11
2 files changed, 18 insertions, 1 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index ed29fcb..2b1d7b8 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -27,6 +27,14 @@ Core language, builtins, and interpreter
fit in an int. In 1.6 and earlier, a negative long formatted
via %u raised an error if it was too big to fit in an int.
+Windows changes
+
+- select module: By default under Windows, a select() call
+ can specify no more than 64 sockets. Python now boosts
+ this Microsoft default to 512. If you need even more than
+ that, see the MS docs (you'll need to #define FD_SETSIZE
+ and recompile Python from source).
+
What's New in Python 2.0?
=========================
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index 008ffa4..de910c6 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -1,4 +1,3 @@
-
/* select - Module containing unix select(2) call.
Under Unix, the file descriptors are small integers.
Under Win32, select only exists for sockets, and sockets may
@@ -9,6 +8,16 @@
#include "Python.h"
+/* Windows #defines FD_SETSIZE to 64 if FD_SETSIZE isn't already defined.
+ 64 is too small (too many people have bumped into that limit).
+ Here we boost it.
+ Users who want even more than the boosted limit should #define
+ FD_SETSIZE higher before this; e.g., via compiler /D switch.
+*/
+#if defined(MS_WINDOWS) && !defined(FD_SETSIZE)
+#define FD_SETSIZE 512
+#endif
+
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif