summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/inspircd.cpp4
-rw-r--r--src/inspircd_io.cpp24
2 files changed, 18 insertions, 10 deletions
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index d69aa6a1e..d784c0925 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -103,6 +103,7 @@ std::vector<int> fd_reap;
extern int MODCOUNT;
int openSockfd[MAXSOCKS];
bool nofork = false;
+bool unlimitcore = false;
time_t TIME = time(NULL);
@@ -2181,6 +2182,9 @@ int main(int argc, char **argv)
if (!strcmp(argv[i],"-wait")) {
sleep(6);
}
+ if (!strcmp(argv[i],"-nolimit")) {
+ unlimitcore = true;
+ }
}
}
strlcpy(MyExecutable,argv[0],MAXBUF);
diff --git a/src/inspircd_io.cpp b/src/inspircd_io.cpp
index fca22e3be..00842b697 100644
--- a/src/inspircd_io.cpp
+++ b/src/inspircd_io.cpp
@@ -33,6 +33,7 @@ extern FILE *log_file;
extern int boundPortCount;
extern int openSockfd[MAXSOCKS];
extern time_t TIME;
+extern bool unlimitcore;
void WriteOpers(char* text, ...);
@@ -126,17 +127,20 @@ int DaemonSeed (void)
setpriority(PRIO_PROCESS,(int)getpid(),15); /* ircd sets to low process priority so it doesnt hog the box */
- rlimit rl;
- if (getrlimit(RLIMIT_CORE, &rl) == -1)
+ if (unlimitcore)
{
- log(DEFAULT,"Failed to getrlimit()!");
- return(FALSE);
- }
- else
- {
- rl.rlim_cur = rl.rlim_max;
- if (setrlimit(RLIMIT_CORE, &rl) == -1)
- log(DEFAULT,"setrlimit() failed, cannot increase coredump size.");
+ rlimit rl;
+ if (getrlimit(RLIMIT_CORE, &rl) == -1)
+ {
+ log(DEFAULT,"Failed to getrlimit()!");
+ return(FALSE);
+ }
+ else
+ {
+ rl.rlim_cur = rl.rlim_max;
+ if (setrlimit(RLIMIT_CORE, &rl) == -1)
+ log(DEFAULT,"setrlimit() failed, cannot increase coredump size.");
+ }
}
return (TRUE);