From 00cc2b4520f7f1d6c4dbfedab130ca83057550e2 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 11 Mar 2009 15:58:11 +0000 Subject: [PATCH] FSCORE-328 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12569 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch_core.c | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/switch_core.c b/src/switch_core.c index 66b588e457..4ef0313d0c 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -42,6 +42,7 @@ #include #endif #endif +#include SWITCH_DECLARE_DATA switch_directories SWITCH_GLOBAL_dirs = { 0 }; @@ -1589,9 +1590,27 @@ struct system_thread_handle { static void *SWITCH_THREAD_FUNC system_thread(switch_thread_t *thread, void *obj) { struct system_thread_handle *sth = (struct system_thread_handle *)obj; +#if defined(HAVE_SETRLIMIT) && !defined(__FreeBSD__) + struct rlimit rlim; + + rlim.rlim_cur = SWITCH_SYSTEM_THREAD_STACKSIZE; + rlim.rlim_max = SWITCH_SYSTEM_THREAD_STACKSIZE; + if (setrlimit(RLIMIT_STACK, &rlim) < 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Setting stack size failed! (%s)\n", strerror(errno)); + } +#endif sth->ret = system(sth->cmd); +#if defined(HAVE_SETRLIMIT) && !defined(__FreeBSD__) + rlim.rlim_cur = SWITCH_THREAD_STACKSIZE; + rlim.rlim_max = SWITCH_SYSTEM_THREAD_STACKSIZE; + if (setrlimit(RLIMIT_STACK, &rlim) < 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Setting stack size failed! (%s)\n", strerror(errno)); + } + +#endif + switch_mutex_lock(sth->mutex); switch_thread_cond_signal(sth->cond); switch_mutex_unlock(sth->mutex); @@ -1608,15 +1627,6 @@ SWITCH_DECLARE(int) switch_system(const char *cmd, switch_bool_t wait) int ret = 0; struct system_thread_handle *sth; switch_memory_pool_t *pool; -#if defined(HAVE_SETRLIMIT) && !defined(__FreeBSD__) - struct rlimit rlim; - - rlim.rlim_cur = SWITCH_SYSTEM_THREAD_STACKSIZE; - rlim.rlim_max = SWITCH_SYSTEM_THREAD_STACKSIZE; - if (setrlimit(RLIMIT_STACK, &rlim) < 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Setting stack size failed!\n"); - } -#endif if (switch_core_new_memory_pool(&pool) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Pool Failure\n"); @@ -1640,15 +1650,6 @@ SWITCH_DECLARE(int) switch_system(const char *cmd, switch_bool_t wait) switch_threadattr_detach_set(thd_attr, 1); switch_thread_create(&thread, thd_attr, system_thread, sth, sth->pool); - -#if defined(HAVE_SETRLIMIT) && !defined(__FreeBSD__) - rlim.rlim_cur = SWITCH_THREAD_STACKSIZE; - rlim.rlim_max = SWITCH_THREAD_STACKSIZE; - if (setrlimit(RLIMIT_STACK, &rlim) < 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Setting stack size failed!\n"); - } -#endif - if (wait) { switch_thread_cond_wait(sth->cond, sth->mutex); ret = sth->ret;