#include "buffer.h" #include "exit.h" #include "fmt.h" #include "select.h" #include "auto_spawn.h" #define MAXSPAWN 1000 /* Silent spawn limit increased to 1000 */ char num[FMT_ULONG]; fd_set fds; int main() { unsigned long hiddenlimit; unsigned long maxnumd; hiddenlimit = sizeof(fds) * 8; maxnumd = (hiddenlimit - 5) / 2; if (auto_spawn < 1) { buffer_puts(buffer_2, "Oops. You have set conf-spawn lower than 1.\n"); buffer_flush(buffer_2); _exit(1); } if (auto_spawn > MAXSPAWN) { buffer_puts(buffer_2, "Oops. You have set conf-spawn higher than MAXSPAWN.\n"); buffer_flush(buffer_2); _exit(1); } if (auto_spawn > maxnumd) { buffer_puts(buffer_2, "Oops. Your system's FD_SET() has a hidden limit of "); buffer_put(buffer_2, num, fmt_ulong(num, hiddenlimit)); buffer_puts( buffer_2, " descriptors.\n\ This means that the qmail daemons could crash if you set the run-time\n\ concurrency higher than "); buffer_put(buffer_2, num, fmt_ulong(num, maxnumd)); buffer_puts( buffer_2, ". So I'm going to insist that the concurrency\n\ limit in conf-spawn be at most "); buffer_put(buffer_2, num, fmt_ulong(num, maxnumd)); buffer_puts(buffer_2, ". Right now it's "); buffer_put(buffer_2, num, fmt_ulong(num, (unsigned long)auto_spawn)); buffer_puts(buffer_2, ".\n"); buffer_flush(buffer_2); _exit(1); } _exit(0); }