]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
MODENDP-202 and MODENDP-204
authorAnthony Minessale <anthony.minessale@gmail.com>
Fri, 20 Mar 2009 12:58:04 +0000 (12:58 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Fri, 20 Mar 2009 12:58:04 +0000 (12:58 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12680 d0543943-73ff-0310-b7d9-9358b9ac24b2

Makefile.am
libs/libdingaling/src/libdingaling.c
libs/libdingaling/src/libdingaling.h
src/mod/endpoints/mod_dingaling/mod_dingaling.c

index fcab5108dd210fc0c3a960c85e289a5680b4c5e8..b1a132a816dd5f59c5e16b7eff3f1d1a907f5f20 100644 (file)
@@ -321,7 +321,7 @@ core-clean: clean_core
 core-install: core_install
 
 clean_core: clean-libLTLIBRARIES
-
+       rm -f $(libfreeswitch_la_OBJECTS)
 install_core: install-libLTLIBRARIES
 
 core_install: install_core
index 4912ecac85290ce173f82f2b9d4b3a177ad7a61c..ec111ed70e974fb48f3ea1ddac5aca9f8f6d3a95 100644 (file)
@@ -1593,6 +1593,7 @@ static void xmpp_connect(ldl_handle_t *handle, char *jabber_id, char *pass)
                microsleep(100);
        }
 
+       ldl_set_flag_locked(handle, LDL_FLAG_STOPPED);
 
 }
 
@@ -2324,6 +2325,7 @@ ldl_status ldl_handle_init(ldl_handle_t **handle,
 
 void ldl_handle_run(ldl_handle_t *handle)
 {
+       ldl_clear_flag_locked(handle, LDL_FLAG_STOPPED);
        ldl_set_flag_locked(handle, LDL_FLAG_RUNNING);
        xmpp_connect(handle, handle->login, handle->password);
        ldl_clear_flag_locked(handle, LDL_FLAG_RUNNING);
@@ -2332,12 +2334,24 @@ void ldl_handle_run(ldl_handle_t *handle)
 void ldl_handle_stop(ldl_handle_t *handle)
 {
        ldl_clear_flag_locked(handle, LDL_FLAG_RUNNING);
+       if (ldl_test_flag(handle, LDL_FLAG_TLS)) {
+               int fd;
+               if ((fd = iks_fd(handle->parser)) > -1) {
+                       shutdown(fd, 0x02);
+               }
+       }
+       
+       while(!ldl_test_flag(handle, LDL_FLAG_STOPPED)) {
+               microsleep(100);
+       }
+
 }
 
 ldl_status ldl_handle_destroy(ldl_handle_t **handle)
 {
        apr_pool_t *pool = (*handle)->pool;
 
+       ldl_handle_stop(*handle);
        ldl_flush_queue(*handle, 1);
        
 
index 45b3add49716b2dc7794404ab256b1f094adfb18..33c644e11d1bb27e251d181bd1aa5630a1673487 100644 (file)
@@ -119,7 +119,8 @@ typedef enum {
        LDL_FLAG_AUTHORIZED = (1 << 2),
        LDL_FLAG_READY = (1 << 3),
        LDL_FLAG_CONNECTED = (1 << 4),
-       LDL_FLAG_QUEUE_RUNNING = (1 << 5)
+       LDL_FLAG_QUEUE_RUNNING = (1 << 5),
+       LDL_FLAG_STOPPED = (1 << 6)
 } ldl_flag_t;
 
 typedef enum {
index 29cd6f56f7ca782dc866e3fd30b4b799f5b82082..81bf71a11995667765742e772de203b2c375af4f 100644 (file)
@@ -1805,7 +1805,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dingaling_load)
 
 #define PRES_SYNTAX "dl_pres <profile_name>"
 #define LOGOUT_SYNTAX "dl_logout <profile_name>"
-#define LOGIN_SYNTAX "dl_login <profile_name>"
+#define LOGIN_SYNTAX "Existing Profile:\ndl_login profile=<profile_name>\nDynamic Profile:\ndl_login var1=val1;var2=val2;varN=valN\n"
 #define DEBUG_SYNTAX "dl_debug [true|false]"
 
        SWITCH_ADD_API(api_interface, "dl_debug", "DingaLing Debug", dl_debug, DEBUG_SYNTAX);