]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add self-adjusting rlimit stuff for systems that support it
authorAnthony Minessale <anthony.minessale@gmail.com>
Tue, 18 Dec 2007 16:55:39 +0000 (16:55 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Tue, 18 Dec 2007 16:55:39 +0000 (16:55 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6864 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch.c
src/switch_core.c

index d4715aa9a4eb778d21e83d187649546567e58125..a8f07af0c1e94ae2428b21ab0e7d09e9e82b7c78 100644 (file)
@@ -235,6 +235,9 @@ int main(int argc, char *argv[])
                "\t-g [group]       -- specify group to switch to\n"
 #endif
                "\t-help            -- this message\n"
+#ifdef HAVE_SETRLIMIT
+               "\t-core            -- dump cores\n"
+#endif
                "\t-hp              -- enable high priority settings\n"
                "\t-nosql           -- disable internal sql scoreboard\n"
                "\t-stop            -- stop freeswitch\n"
@@ -307,6 +310,17 @@ int main(int argc, char *argv[])
                        known_opt++;
                }
 #endif
+#ifdef HAVE_SETRLIMIT
+               if (argv[x] && !strcmp(argv[x], "-core")) {
+                       struct rlimit rlp;
+                       memset(&rlp, 0, sizeof(rlp));
+                       rlp.rlim_cur = RLIM_INFINITY;
+                       rlp.rlim_max = RLIM_INFINITY;
+                       setrlimit(RLIMIT_CORE, &rlp);
+                       known_opt++;
+               }
+#endif
+
                if (argv[x] && !strcmp(argv[x], "-hp")) {
                        high_prio++;
                        known_opt++;
index d0d6bd4d4df2ff7f1391075d298e56c23ec0b62e..27425c72e4cdda031d0831409fdb2e157452b881 100644 (file)
@@ -36,6 +36,7 @@
 #include <switch.h>
 #include <switch_version.h>
 #include "private/switch_core_pvt.h"
+#include <switch_private.h>
 
 SWITCH_DECLARE_DATA switch_directories SWITCH_GLOBAL_dirs = { 0 };
 
@@ -683,6 +684,33 @@ SWITCH_DECLARE(switch_status_t) switch_core_init(switch_core_flag_t flags, switc
        switch_core_set_variable("base_dir", SWITCH_GLOBAL_dirs.base_dir);
        
 
+#ifdef HAVE_SETRLIMIT
+       {
+               struct rlimit rlp;
+
+               memset(&rlp, 0, sizeof(rlp));
+               rlp.rlim_cur = SWITCH_THREAD_STACKSIZE;
+               rlp.rlim_max = SWITCH_THREAD_STACKSIZE;
+               setrlimit(RLIMIT_STACK, &rlp);
+
+               memset(&rlp, 0, sizeof(rlp));
+               rlp.rlim_cur = 999999;
+               rlp.rlim_max = 999999;
+               setrlimit(RLIMIT_NOFILE, &rlp);
+
+               memset(&rlp, 0, sizeof(rlp));
+               rlp.rlim_cur = RLIM_INFINITY;
+               rlp.rlim_max = RLIM_INFINITY;
+
+               setrlimit(RLIMIT_CPU, &rlp);
+               setrlimit(RLIMIT_DATA, &rlp);
+               setrlimit(RLIMIT_FSIZE, &rlp);
+               setrlimit(RLIMIT_AS, &rlp);
+       }
+       
+#endif
+
+
        if (switch_xml_init(runtime.memory_pool, err) != SWITCH_STATUS_SUCCESS) {
                apr_terminate();
                return SWITCH_STATUS_MEMERR;
@@ -712,6 +740,15 @@ SWITCH_DECLARE(switch_status_t) switch_core_init(switch_core_flag_t flags, switc
                            switch_core_session_ctl(SCSC_LOGLEVEL, &level);
                                        }
                                        
+#ifdef HAVE_SETRLIMIT
+                               } else if (!strcasecmp(var, "dump-cores")) {
+                                       struct rlimit rlp;
+                                       memset(&rlp, 0, sizeof(rlp));
+                                       rlp.rlim_cur = RLIM_INFINITY;
+                                       rlp.rlim_max = RLIM_INFINITY;
+                                       setrlimit(RLIMIT_CORE, &rlp);
+#endif
+
                                } else if (!strcasecmp(var, "mailer-app")) {
                                        runtime.mailer_app = switch_core_strdup(runtime.memory_pool, val);
                                } else if (!strcasecmp(var, "mailer-app-args")) {