]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
esl: use recv_timed in esl_connect_timemout in case we get stuck in a blocking recv
authorMathieu Rene <mrene@avgs.ca>
Tue, 20 Jul 2010 20:11:59 +0000 (16:11 -0400)
committerMathieu Rene <mrene@avgs.ca>
Tue, 20 Jul 2010 20:24:50 +0000 (16:24 -0400)
libs/esl/src/esl.c

index c63f2b1a00499d5b10fdda4d591f6e8a9d28a5d1..4084578217550a3fd31f9ce694c1219967e6b5cf 100644 (file)
@@ -713,7 +713,7 @@ ESL_DECLARE(esl_status_t) esl_connect_timeout(esl_handle_t *handle, const char *
 
        handle->connected = 1;
 
-       if (esl_recv(handle)) {
+       if (esl_recv_timed(handle, timeout)) {
                snprintf(handle->err, sizeof(handle->err), "Connection Error");
                goto fail;
        }
@@ -734,7 +734,7 @@ ESL_DECLARE(esl_status_t) esl_connect_timeout(esl_handle_t *handle, const char *
        esl_send(handle, sendbuf);
 
        
-       if (esl_recv(handle)) {
+       if (esl_recv_timed(handle, timeout)) {
                snprintf(handle->err, sizeof(handle->err), "Authentication Error");
                goto fail;
        }
@@ -813,6 +813,10 @@ 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;