From: Andreas Eversberg Date: Wed, 7 Jul 2010 07:14:21 +0000 (+0200) Subject: Another "trylock" test. X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=commitdiff_plain;h=86dda4048a8de440e3911b08e8ca4f6da519d682 Another "trylock" test. --- diff --git a/chan_lcr.c b/chan_lcr.c index 5968733..53c814f 100644 --- a/chan_lcr.c +++ b/chan_lcr.c @@ -1687,16 +1687,21 @@ static void handle_queue() struct ast_frame fr; char *p; +again: call = call_first; while(call) { p = call->queue_string; ast = call->ast; if (*p && ast) { lock_debug("A1+"); - while (ast_channel_trylock(ast)) { + if (ast_channel_trylock(ast)) { lock_debug(""); + ast_mutex_unlock(&log_lock); usleep(1000); lock_debug("A1++"); + ast_mutex_lock(&log_lock); + lock_debug("A1+-"); + goto again; } lock_debug("A1-"); while(*p) {