ldl_set_flag_locked(handle, LDL_FLAG_QUEUE_RUNNING);
- while (ldl_test_flag(handle, LDL_FLAG_RUNNING)) {
+ while (ldl_test_flag((&globals), LDL_FLAG_READY) && ldl_test_flag(handle, LDL_FLAG_RUNNING)) {
ldl_flush_queue(handle, 0);
if (handle->loop_callback(handle) != LDL_STATUS_SUCCESS) {
static void xmpp_connect(ldl_handle_t *handle, char *jabber_id, char *pass)
{
- while (ldl_test_flag(handle, LDL_FLAG_RUNNING)) {
+ while (ldl_test_flag((&globals), LDL_FLAG_READY) && ldl_test_flag(handle, LDL_FLAG_RUNNING)) {
int e;
char tmp[512], *sl;
launch_queue_thread(handle);
}
- while (ldl_test_flag(handle, LDL_FLAG_RUNNING)) {
+ while (ldl_test_flag((&globals), LDL_FLAG_READY) && ldl_test_flag(handle, LDL_FLAG_RUNNING)) {
e = iks_recv(handle->parser, 1);
if (!ldl_test_flag(handle, LDL_FLAG_TLS) && handle->loop_callback) {
if (handle->loop_callback(handle) != LDL_STATUS_SUCCESS) {
}
}
+ldl_status ldl_global_terminate(void)
+{
+ ldl_clear_flag_locked((&globals), LDL_FLAG_READY);
+ return LDL_STATUS_SUCCESS;
+}
+
ldl_status ldl_global_init(int debug)
{
if (ldl_test_flag((&globals), LDL_FLAG_INIT)) {
globals.logger = default_logger;
globals.avatar_hash = apr_hash_make(globals.memory_pool);
ldl_set_flag_locked((&globals), LDL_FLAG_INIT);
+ ldl_set_flag_locked((&globals), LDL_FLAG_READY);
return LDL_STATUS_SUCCESS;
}