Index: main/autoservice.c =================================================================== --- main/autoservice.c (revision 162886) +++ main/autoservice.c (working copy) @@ -110,6 +110,20 @@ continue; } + for (i = 0; i < x; ) { + if (ast_channel_trylock(mons[i])) { + if (i < (x - 1)) { + memmove(&mons[i], &mons[i + 1], (x - (i + 1)) * sizeof(mons[0])); + } else { + ++i; + } + --x; + } else { + ast_channel_unlock(mons[i]); + ++i; + } + } + chan = ast_waitfor_n(mons, x, &ms); if (!chan) { continue;