[commit] r11404 - in freeswitch/branches/1.0/libs/esl: . src
Author: mikej Date: Thu Jan 22 16:07:53 2009 New Revision: 11404 Log: libesl: fix disconnect failure (r:11078,11083) Modified: freeswitch/branches/1.0/libs/esl/fs_cli.c freeswitch/branches/1.0/libs/esl/src/esl.c Modified: freeswitch/branches/1.0/libs/esl/fs_cli.c ============================================================================== --- freeswitch/branches/1.0/libs/esl/fs_cli.c (original) +++ freeswitch/branches/1.0/libs/esl/fs_cli.c Thu Jan 22 16:07:53 2009 @@ -618,6 +618,7 @@ } if (esl_connect(&handle, profile->host, profile->port, profile->pass)) { + esl_global_set_default_logger(3); esl_log(ESL_LOG_ERROR, "Error Connecting [%s]\n", handle.err); return -1; } Modified: freeswitch/branches/1.0/libs/esl/src/esl.c ============================================================================== --- freeswitch/branches/1.0/libs/esl/src/esl.c (original) +++ freeswitch/branches/1.0/libs/esl/src/esl.c Thu Jan 22 16:07:53 2009 @@ -368,6 +368,10 @@ { char *txt; + if (!handle->connected) { + return ESL_FAIL; + } + esl_event_serialize(handle->last_ievent, &txt, ESL_TRUE); esl_log(ESL_LOG_DEBUG, "SEND EVENT\n%s\n", txt); @@ -388,6 +392,10 @@ char arg_buf[512] = ""; char send_buf[1292] = ""; + if (!handle->connected) { + return ESL_FAIL; + } + if (uuid) { snprintf(cmd_buf, sizeof(cmd_buf), "sendmsg %s", uuid); } @@ -570,24 +578,33 @@ ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle) { + esl_mutex_t *mutex = handle->mutex; + esl_status_t status = ESL_FAIL; + + if (mutex) { + esl_mutex_lock(mutex); + } + esl_event_safe_destroy(&handle->last_event); esl_event_safe_destroy(&handle->last_sr_event); esl_event_safe_destroy(&handle->last_ievent); esl_event_safe_destroy(&handle->info_event); - if (handle->mutex) { - esl_mutex_destroy(&handle->mutex); - } - if (handle->sock != ESL_SOCK_INVALID) { closesocket(handle->sock); handle->sock = ESL_SOCK_INVALID; - return ESL_SUCCESS; + status = ESL_SUCCESS; } handle->connected = 0; - return ESL_FAIL; + if (mutex) { + esl_mutex_unlock(mutex); + esl_mutex_destroy(&mutex); + } + + + return status; } ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms, esl_event_t **save_event) @@ -597,6 +614,10 @@ int max, activity; esl_status_t status = ESL_SUCCESS; + if (!handle->connected) { + return ESL_FAIL; + } + tv.tv_usec = ms * 1000; esl_mutex_lock(handle->mutex); @@ -652,6 +673,11 @@ esl_ssize_t len; int zc = 0; + + if (!handle->connected) { + return ESL_FAIL; + } + esl_mutex_lock(handle->mutex); esl_event_safe_destroy(&handle->last_event); @@ -850,6 +876,10 @@ { const char *e = cmd + strlen(cmd) -1; + if (!handle->connected) { + return ESL_FAIL; + } + esl_log(ESL_LOG_DEBUG, "SEND\n%s\n", cmd); if (send(handle->sock, cmd, strlen(cmd), 0) != (int)strlen(cmd)) { @@ -874,6 +904,10 @@ const char *hval; esl_status_t status; + if (!handle->connected) { + return ESL_FAIL; + } + esl_mutex_lock(handle->mutex); if ((status = esl_send(handle, cmd))) {
participants (1)
-
FreeSWITCH SVN