]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
stupid crap
authorAnthony Minessale <anthony.minessale@gmail.com>
Wed, 4 Jan 2006 01:04:33 +0000 (01:04 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Wed, 4 Jan 2006 01:04:33 +0000 (01:04 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@279 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_core.h
src/mod/endpoints/mod_exosip/mod_exosip.c
src/switch_core.c
src/switch_loadable_module.c

index f3ee2c95e069f9cf353d5ce3673c5681bc3f6bac..cc8c2d7fcbbbc69bf69f228f2de12404340fac4a 100644 (file)
@@ -78,7 +78,7 @@ SWITCH_DECLARE(switch_status) switch_core_hash_insert(switch_hash *hash, char *k
 SWITCH_DECLARE(switch_status) switch_core_hash_insert_dup(switch_hash *hash, char *key, void *data);
 SWITCH_DECLARE(switch_status) switch_core_hash_delete(switch_hash *hash, char *key);
 SWITCH_DECLARE(void *) switch_core_hash_find(switch_hash *hash, char *key);
-SWITCH_DECLARE(void) switch_core_launch_thread(void *(*func)(switch_thread *, void*), void *obj);
+SWITCH_DECLARE(void) switch_core_launch_thread(void *(*func)(switch_thread *, void*), void *obj, switch_memory_pool *pool);
 SWITCH_DECLARE(FILE *) switch_core_data_channel(switch_text_channel channel);
 SWITCH_DECLARE(void) switch_core_session_launch_thread(switch_core_session *session, void *(*func)(switch_thread *, void *), void *obj);
 SWITCH_DECLARE(switch_status) switch_core_timer_init(switch_timer *timer, char *timer_name, int interval, int samples, switch_memory_pool *pool);
index 972797c3798f5f4026946581d5b45172c2d5bb59..4be0b5667063180e0b3320f9c796a6a06f325257 100644 (file)
@@ -734,18 +734,18 @@ static const switch_loadable_module_interface exosip_module_interface = {
        /*.application_interface*/      NULL
 };
 
-
+#if 1
 SWITCH_MOD_DECLARE(switch_status) switch_module_shutdown(void)
 {
        if (globals.running) {
                globals.running = -1;
                while(globals.running) {
-                       switch_yield(1000);
+                       switch_yield(100000);
                }
        }
        return SWITCH_STATUS_SUCCESS;
 }
-
+#endif
 SWITCH_MOD_DECLARE(switch_status) switch_module_load(const switch_loadable_module_interface **interface, char *filename) {
        /* NOTE:  **interface is **_interface because the common lib redefines interface to struct in some situations */
 
@@ -1240,10 +1240,82 @@ static void log_event(eXosip_event_t *je)
 
 
 
-static void *monitor_thread_run(void)
+static int config_exosip(int reload) 
+{
+       switch_config cfg;
+       char *var, *val;
+       char *cf = "exosip.conf";
+
+       globals.bytes_per_frame = DEFAULT_BYTES_PER_FRAME;
+       switch_core_hash_init(&globals.call_hash, module_pool);
+
+       if (!switch_config_open_file(&cfg, cf)) {
+               switch_console_printf(SWITCH_CHANNEL_CONSOLE, "open of %s failed\n", cf);
+               return SWITCH_STATUS_TERM;
+       }
+
+       globals.rtp_start = 16384;
+       globals.rtp_end = 32768;
+
+       while (switch_config_next_pair(&cfg, &var, &val)) {
+               if (!strcasecmp(cfg.category, "settings")) {
+                       if (!strcmp(var, "debug")) {
+                               globals.debug = atoi(val);
+                       } else if (!strcmp(var, "port")) {
+                               globals.port = atoi(val);
+                       } else if (!strcmp(var, "dialplan")) {
+                               set_global_dialplan(val);
+                       } else if (!strcmp(var, "rtp_min_port")) {
+                               globals.rtp_start = atoi(val);
+                       } else if (!strcmp(var, "rtp_max_port")) {
+                               globals.rtp_end = atoi(val);
+                       } else if (!strcmp(var, "codec_ms")) {
+                               globals.codec_ms = atoi(val);
+                       }
+               }
+       }
+
+       if (!globals.codec_ms) {
+               globals.codec_ms = 20;
+       }
+
+       if (!globals.port) {
+               globals.port = 5060;
+       }
+
+       switch_config_close_file(&cfg);
+
+       if (!globals.dialplan) {
+               set_global_dialplan("default");
+       }
+
+       switch_mutex_init(&globals.port_lock, SWITCH_MUTEX_NESTED, module_pool);
+
+       /* Setup the user agent */
+       eXosip_set_user_agent("FreeSWITCH");
+
+
+       return 0;
+
+}
+
+
+SWITCH_MOD_DECLARE(switch_status) switch_module_runtime(void)
 {
        eXosip_event_t *event = NULL;
 
+       config_exosip(0);
+
+       if (eXosip_init ()) {
+               switch_console_printf(SWITCH_CHANNEL_CONSOLE, "eXosip_init initialization failed!\n");
+               return SWITCH_STATUS_TERM;
+       }
+
+       if (eXosip_listen_addr (IPPROTO_UDP, NULL, globals.port, AF_INET, 0)) {
+               switch_console_printf(SWITCH_CHANNEL_CONSOLE, "eXosip_listen_addr failed!\n");
+               return SWITCH_STATUS_TERM;
+       }
+       
        globals.running = 1;
        while (globals.running > 0) {
                if (!(event = eXosip_event_wait(0,100))) {
@@ -1323,87 +1395,11 @@ static void *monitor_thread_run(void)
                eXosip_event_free(event);
        }
 
-       switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Monitor Thread Exiting\n");
-       globals.running = 0;
-       return NULL;
-}
-
-
-static int config_exosip(int reload) 
-{
-       switch_config cfg;
-       char *var, *val;
-       char *cf = "exosip.conf";
-
-       globals.bytes_per_frame = DEFAULT_BYTES_PER_FRAME;
-       switch_core_hash_init(&globals.call_hash, module_pool);
-
-       if (!switch_config_open_file(&cfg, cf)) {
-               switch_console_printf(SWITCH_CHANNEL_CONSOLE, "open of %s failed\n", cf);
-               return SWITCH_STATUS_TERM;
-       }
-
-       globals.rtp_start = 16384;
-       globals.rtp_end = 32768;
-
-       while (switch_config_next_pair(&cfg, &var, &val)) {
-               if (!strcasecmp(cfg.category, "settings")) {
-                       if (!strcmp(var, "debug")) {
-                               globals.debug = atoi(val);
-                       } else if (!strcmp(var, "port")) {
-                               globals.port = atoi(val);
-                       } else if (!strcmp(var, "dialplan")) {
-                               set_global_dialplan(val);
-                       } else if (!strcmp(var, "rtp_min_port")) {
-                               globals.rtp_start = atoi(val);
-                       } else if (!strcmp(var, "rtp_max_port")) {
-                               globals.rtp_end = atoi(val);
-                       } else if (!strcmp(var, "codec_ms")) {
-                               globals.codec_ms = atoi(val);
-                       }
-               }
-       }
-
-       if (!globals.codec_ms) {
-               globals.codec_ms = 20;
-       }
-
-       if (!globals.port) {
-               globals.port = 5060;
-       }
-
-       switch_config_close_file(&cfg);
-
-       if (!globals.dialplan) {
-               set_global_dialplan("default");
-       }
-
-       if (eXosip_init ()) {
-               switch_console_printf(SWITCH_CHANNEL_CONSOLE, "eXosip_init initialization failed!\n");
-               return SWITCH_STATUS_GENERR;
-       }
-       if (eXosip_listen_addr (IPPROTO_UDP, NULL, globals.port, AF_INET, 0)) {
-               switch_console_printf(SWITCH_CHANNEL_CONSOLE, "eXosip_listen_addr failed!\n");
-               return SWITCH_STATUS_GENERR;
-       }
-
-       switch_mutex_init(&globals.port_lock, SWITCH_MUTEX_NESTED, module_pool);
-
-       /* Setup the user agent */
-       eXosip_set_user_agent("FreeSWITCH");
-
-       monitor_thread_run();
-
        eXosip_quit();
-
-       return 0;
-
-}
-
-
-SWITCH_MOD_DECLARE(switch_status) switch_module_runtime(void)
-{
-       config_exosip(0);
+       globals.running = 0;
+       switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Monitor Thread Exiting\n");
+       //switch_sleep(2000000);
+          
        return SWITCH_STATUS_TERM;
 }
 
index ee97640ebb3ef195bda426965df2b8077c3a68fd..04ff9f3ac1885946d1f6b6b2942777a38cd7827c 100644 (file)
@@ -1594,32 +1594,36 @@ the core to have any clue and keeping switch_loadable_module.c from needing any
 
 */
 
-SWITCH_DECLARE(void) switch_core_launch_thread(switch_thread_start_t func, void *obj)
+SWITCH_DECLARE(void) switch_core_launch_thread(switch_thread_start_t func, void *obj, switch_memory_pool *pool)
 {
        switch_thread *thread;
-       switch_threadattr_t *thd_attr;
+       switch_threadattr_t *thd_attr = NULL;
        switch_core_thread_session *ts;
-       switch_memory_pool *pool = NULL;
+       int mypool;
 
-       switch_threadattr_create(&thd_attr, runtime.memory_pool);
-       switch_threadattr_detach_set(thd_attr, 1);
+       mypool = pool ? 0 : 1;
 
-       if (switch_core_new_memory_pool(&pool) != SWITCH_STATUS_SUCCESS) {
+       if (!pool && switch_core_new_memory_pool(&pool) != SWITCH_STATUS_SUCCESS) {
                switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Could not allocate memory pool\n");
                return;
        }
 
+       switch_threadattr_create(&thd_attr, pool);
+       switch_threadattr_detach_set(thd_attr, 1);
+
        if (!(ts = switch_core_alloc(pool, sizeof(*ts)))) {
                switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Could not allocate memory\n");
        } else {
-               ts->pool = pool;
+               if (mypool) {
+                       ts->pool = pool;
+               }
                ts->objs[0] = obj;
 
                switch_thread_create(&thread,
                        thd_attr,
                        func,
                        ts,
-                       ts->pool
+                       pool
                        );
        }
 
index 7586592eb197205182ef09f618d964c6d17e6a33..d38a129c1016e00eeb32a837be04155a47be4d13 100644 (file)
@@ -84,9 +84,10 @@ static void *switch_loadable_module_exec(switch_thread *thread, void *obj)
 
        if (ts->pool) {
                switch_memory_pool *pool = ts->pool;
+               switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Destroying Pool for %s\n", module->interface->module_name);
                switch_core_destroy_memory_pool(&pool);
        }
-
+       switch_yield(1000000);
        return NULL;
 }
 
@@ -173,7 +174,7 @@ static switch_status switch_loadable_module_load_file(char *filename, switch_mem
        module->lib = dso;
 
        if (module->switch_module_runtime) {
-               switch_core_launch_thread(switch_loadable_module_exec, module);
+               switch_core_launch_thread(switch_loadable_module_exec, module, loadable_modules.pool);
        }
 
        *new_module = module;