diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index 4084578217..3acab01935 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -607,7 +607,7 @@ ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_list } -ESL_DECLARE(esl_status_t) esl_connect_timeout(esl_handle_t *handle, const char *host, esl_port_t port, const char *user, const char *password, long timeout) +ESL_DECLARE(esl_status_t) esl_connect_timeout(esl_handle_t *handle, const char *host, esl_port_t port, const char *user, const char *password, uint32_t timeout) { char sendbuf[256]; int rval = 0; @@ -649,7 +649,7 @@ ESL_DECLARE(esl_status_t) esl_connect_timeout(esl_handle_t *handle, const char * handle->sockaddr.sin_family = AF_INET; handle->sockaddr.sin_port = htons(port); - if (timeout != -1) { + if (timeout) { #ifdef WIN32 u_long arg = 1; if (ioctlsocket(handle->sock, FIONBIO, &arg) == SOCKET_ERROR) { @@ -667,7 +667,7 @@ ESL_DECLARE(esl_status_t) esl_connect_timeout(esl_handle_t *handle, const char * rval = connect(handle->sock, (struct sockaddr*)&handle->sockaddr, sizeof(handle->sockaddr)); - if (timeout != -1) { + if (timeout) { fd_set wfds; struct timeval tv = { timeout / 1000, (timeout % 1000) * 1000 }; int r; @@ -800,6 +800,10 @@ ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms struct timeval tv = { 0 }; int max, activity; esl_status_t status = ESL_SUCCESS; + + if (!ms) { + return esl_recv_event(handle, check_q, save_event); + } if (!handle || !handle->connected || handle->sock == ESL_SOCK_INVALID) { return ESL_FAIL; @@ -813,14 +817,9 @@ ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms } esl_mutex_unlock(handle->mutex); } - - if (ms == -1) { - ms = 30000; - } tv.tv_usec = ms * 1000; - FD_ZERO(&rfds); FD_ZERO(&efds); @@ -1146,7 +1145,7 @@ ESL_DECLARE(esl_status_t) esl_send(esl_handle_t *handle, const char *cmd) } -ESL_DECLARE(esl_status_t) esl_send_recv(esl_handle_t *handle, const char *cmd) +ESL_DECLARE(esl_status_t) esl_send_recv_timed(esl_handle_t *handle, const char *cmd, uint32_t ms) { const char *hval; esl_status_t status; @@ -1176,7 +1175,7 @@ ESL_DECLARE(esl_status_t) esl_send_recv(esl_handle_t *handle, const char *cmd) recv: - status = esl_recv_event(handle, 0, &handle->last_sr_event); + status = esl_recv_event_timed(handle, ms, 0, &handle->last_sr_event); if (handle->last_sr_event) { char *ct = esl_event_get_header(handle->last_sr_event,"content-type"); diff --git a/libs/esl/src/include/esl.h b/libs/esl/src/include/esl.h index d87f83f26b..9f28c3d925 100644 --- a/libs/esl/src/include/esl.h +++ b/libs/esl/src/include/esl.h @@ -389,8 +389,8 @@ ESL_DECLARE(esl_status_t) esl_sendevent(esl_handle_t *handle, esl_event_t *event \param password FreeSWITCH server password \param timeout Connection timeout, in miliseconds */ -ESL_DECLARE(esl_status_t) esl_connect_timeout(esl_handle_t *handle, const char *host, esl_port_t port, const char *user, const char *password, long timeout); -#define esl_connect(_handle, _host, _port, _user, _password) esl_connect_timeout(_handle, _host, _port, _user, _password, -1) +ESL_DECLARE(esl_status_t) esl_connect_timeout(esl_handle_t *handle, const char *host, esl_port_t port, const char *user, const char *password, uint32_t timeout); +#define esl_connect(_handle, _host, _port, _user, _password) esl_connect_timeout(_handle, _host, _port, _user, _password, 0) /*! \brief Disconnect a handle @@ -423,7 +423,8 @@ ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms \param handle Handle to be used \param cmd Raw command to send */ -ESL_DECLARE(esl_status_t) esl_send_recv(esl_handle_t *handle, const char *cmd); +ESL_DECLARE(esl_status_t) esl_send_recv_timed(esl_handle_t *handle, const char *cmd, uint32_t ms); +#define esl_send_recv(_handle, _cmd) esl_send_recv_timed(_handle, _cmd, 0) /*! \brief Applies a filter to received events \param handle Handle to apply the filter to