The "trylock" test patch.
authorAndreas Eversberg <jolly@eversberg.eu>
Tue, 6 Jul 2010 15:53:21 +0000 (17:53 +0200)
committerAndreas Eversberg <jolly@eversberg.eu>
Tue, 6 Jul 2010 15:53:21 +0000 (17:53 +0200)
chan_lcr.c

index a091fdb..5968733 100644 (file)
@@ -1693,7 +1693,11 @@ static void handle_queue()
                ast = call->ast;
                if (*p && ast) {
                        lock_debug("A1+");
                ast = call->ast;
                if (*p && ast) {
                        lock_debug("A1+");
-//                     ast_channel_lock(ast);
+                       while (ast_channel_trylock(ast)) {
+                               lock_debug("<trylock failed>");
+                               usleep(1000);
+                               lock_debug("A1++");
+                       }
                        lock_debug("A1-");
                        while(*p) {
                                switch (*p) {
                        lock_debug("A1-");
                        while(*p) {
                                switch (*p) {
@@ -1750,7 +1754,7 @@ static void handle_queue()
                                p++;
                        }
                        call->queue_string[0] = '\0';
                                p++;
                        }
                        call->queue_string[0] = '\0';
-//                     ast_channel_unlock(ast);
+                       ast_channel_unlock(ast);
                        lock_debug("a1");
                }
                call = call->next;
                        lock_debug("a1");
                }
                call = call->next;