--- ../clean/asterisk-1.6.2.16.1/main/channel.c 2010-12-08 00:58:54.000000000 +0200 +++ main/channel.c 2011-06-03 11:42:07.000000000 +0200 @@ -1354,7 +1354,11 @@ AST_RWLIST_RDLOCK(&channels); AST_RWLIST_TRAVERSE(&channels, c, chan_list) { - ast_channel_lock(c); + while(ast_channel_trylock(c)) { + AST_RWLIST_UNLOCK(&channels); + usleep(1); + AST_RWLIST_RDLOCK(&channels); + } if (is_match(c, data)) { break; }