rendered paste bodyIndex: main/autoservice.c
===================================================================
--- main/autoservice.c (revision 110165)
+++ main/autoservice.c (working copy)
@@ -254,9 +254,6 @@
}
AST_LIST_TRAVERSE_SAFE_END;
- if (removed && asthread != AST_PTHREADT_NULL)
- pthread_kill(asthread, SIGURG);
-
AST_LIST_UNLOCK(&aslist);
if (!removed)
@@ -265,6 +262,9 @@
if (!orig_end_dtmf_flag)
ast_clear_flag(chan, AST_FLAG_END_DTMF_ONLY);
+ if (ast_test_flag(chan, AST_FLAG_BLOCKING) && asthread != AST_PTHREADT_NULL)
+ pthread_kill(asthread, SIGURG);
+
/* Wait for it to un-block */
while (ast_test_flag(chan, AST_FLAG_BLOCKING))
usleep(1000);
@@ -274,6 +274,9 @@
ast_frfree(f);
}
+ if (chan_list_state == as_chan_list_state && asthread != AST_PTHREADT_NULL)
+ pthread_kill(asthread, SIGURG);
+
while (chan_list_state == as_chan_list_state)
usleep(1000);