diff --git a/libs/libdingaling/src/libdingaling.c b/libs/libdingaling/src/libdingaling.c
index 22056868ab..0e2ab66df6 100644
--- a/libs/libdingaling/src/libdingaling.c
+++ b/libs/libdingaling/src/libdingaling.c
@@ -1495,7 +1495,10 @@ static void xmpp_connect(ldl_handle_t *handle, char *jabber_id, char *pass)
 		handle->state = CS_NEW;
 	}
 	ldl_clear_flag_locked(handle, LDL_FLAG_RUNNING);
-
+	if (!ldl_test_flag(handle, LDL_FLAG_TLS)) {
+		ldl_flush_queue(handle, 1);
+	}
+	
 	while(ldl_test_flag(handle, LDL_FLAG_QUEUE_RUNNING)) {
 		microsleep(100);
 	}
@@ -2077,10 +2080,10 @@ ldl_status ldl_global_init(int debug)
 
 ldl_status ldl_global_destroy(void)
 {
-	if (ldl_test_flag(&globals, LDL_FLAG_INIT)) {
+	if (!ldl_test_flag(&globals, LDL_FLAG_INIT)) {
 		return LDL_STATUS_FALSE;
 	}
-
+	
 	apr_pool_destroy(globals.memory_pool);
 	ldl_clear_flag(&globals, LDL_FLAG_INIT);
 	apr_terminate();
diff --git a/src/mod/endpoints/mod_dingaling/mod_dingaling.c b/src/mod/endpoints/mod_dingaling/mod_dingaling.c
index 78f4614bcd..d55699081e 100644
--- a/src/mod/endpoints/mod_dingaling/mod_dingaling.c
+++ b/src/mod/endpoints/mod_dingaling/mod_dingaling.c
@@ -1928,6 +1928,7 @@ SWITCH_MOD_DECLARE(switch_status_t) switch_module_shutdown(void)
 				break;
 			}
 		}
+
 		if (globals.init) {
 			ldl_global_destroy();
 		}