X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=chan_lcr.c;h=53c814f9200e497ab2ec1086e4d87edfcfecbf8c;hp=59687339a7c29ae51ac4d05c39d6f899436264b7;hb=86dda4048a8de440e3911b08e8ca4f6da519d682;hpb=ec4c180567d94ada2940ca106b45e5876d6bbf3a 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) {