diff options
-rw-r--r-- | src/inspircd.cpp | 4 | ||||
-rw-r--r-- | src/inspircd_io.cpp | 24 |
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); |