The System() and TrySystem() applications can take a substantial amount of

time to execute while not servicing the channel.  So, put the channel in
autoservice while the command is being executed.
(closes issue #10726, reported by mnicholson)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@83179 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.4
Russell Bryant 18 years ago
parent f59ad2a3ed
commit 47dc1101eb

@ -95,6 +95,8 @@ static int system_exec_helper(struct ast_channel *chan, void *data, int failmode
u = ast_module_user_add(chan); u = ast_module_user_add(chan);
ast_autoservice_start(chan);
/* Do our thing here */ /* Do our thing here */
res = ast_safe_system((char *)data); res = ast_safe_system((char *)data);
if ((res < 0) && (errno != ECHILD)) { if ((res < 0) && (errno != ECHILD)) {
@ -118,6 +120,8 @@ static int system_exec_helper(struct ast_channel *chan, void *data, int failmode
res = 0; res = 0;
} }
ast_autoservice_stop(chan);
ast_module_user_remove(u); ast_module_user_remove(u);
return res; return res;

Loading…
Cancel
Save