-#if defined(RLIMIT_FD_MAX) && defined(HAVE_SYS_RLIMIT_H)
- struct rlimit limit;
-
- if(!getrlimit(RLIMIT_FD_MAX, &limit))
- {
- if(limit.rlim_max < MAXCONNECTIONS)
- {
- fprintf(stderr, "ircd's bootstrap fd table is too big\n");
- fprintf(stderr, "Hard Limit: %ld bootstrap size: %d\n",
- (long) limit.rlim_max, MAXCONNECTIONS);
- fprintf(stderr, "Fix MAXCONNECTIONS\n");
- exit(-1);
- }
-
- limit.rlim_cur = limit.rlim_max; /* make soft limit the max */
- if(setrlimit(RLIMIT_FD_MAX, &limit) == -1)
- {
- fprintf(stderr, "error setting max fd's to %ld\n", (long) limit.rlim_cur);
- exit(EXIT_FAILURE);
- }
- }
-#endif /* RLIMIT_FD_MAX */
+#if defined(RLIMIT_NOFILE) && defined(HAVE_SYS_RESOURCE_H)\r
+ struct rlimit limit;\r
+\r
+ if(!getrlimit(RLIMIT_NOFILE, &limit))\r
+ {\r
+ maxconnections = limit.rlim_cur;\r
+ if(maxconnections <= MAX_BUFFER)\r
+ {\r
+ fprintf(stderr, "ERROR: Shell FD limits are too low.\n");\r
+ fprintf(stderr, "ERROR: ircd-ratbox reserves %d FDs, shell limits must be above this\n", MAX_BUFFER);\r
+ exit(EXIT_FAILURE);\r
+ }\r
+ return;\r
+ }\r
+#endif /* RLIMIT_FD_MAX */\r
+ maxconnections = MAXCONNECTIONS;