From d92dfe0ef52880ea1fb54620c0c1250a58c126c6 Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Tue, 12 Dec 2000 01:18:41 +0000 Subject: SF bug 110843: Low FD_SETSIZE limit on Win32 (PR#41). Boosted to 512. --- Misc/NEWS | 8 ++++++++ Modules/selectmodule.c | 11 ++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) 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 #endif -- cgit v0.12