mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-01 18:09:41 +00:00
Merge "Stasis: Use control queue to prevent crash." into 13
This commit is contained in:
@@ -355,14 +355,39 @@ int stasis_app_control_dial(struct stasis_app_control *control, const char *endp
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int app_control_add_role(struct stasis_app_control *control,
|
||||
struct ast_channel *chan, void *data)
|
||||
{
|
||||
char *role = data;
|
||||
|
||||
return ast_channel_add_bridge_role(chan, role);
|
||||
}
|
||||
|
||||
int stasis_app_control_add_role(struct stasis_app_control *control, const char *role)
|
||||
{
|
||||
return ast_channel_add_bridge_role(control->channel, role);
|
||||
char *role_dup;
|
||||
|
||||
role_dup = ast_strdup(role);
|
||||
if (!role_dup) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
stasis_app_send_command_async(control, app_control_add_role, role_dup, ast_free_ptr);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int app_control_clear_roles(struct stasis_app_control *control,
|
||||
struct ast_channel *chan, void *data)
|
||||
{
|
||||
ast_channel_clear_bridge_roles(chan);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void stasis_app_control_clear_roles(struct stasis_app_control *control)
|
||||
{
|
||||
ast_channel_clear_bridge_roles(control->channel);
|
||||
stasis_app_send_command_async(control, app_control_clear_roles, NULL, NULL);
|
||||
}
|
||||
|
||||
int control_command_count(struct stasis_app_control *control)
|
||||
@@ -598,9 +623,28 @@ int stasis_app_control_unmute(struct stasis_app_control *control, unsigned int d
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int app_control_set_channel_var(struct stasis_app_control *control,
|
||||
struct ast_channel *chan, void *data)
|
||||
{
|
||||
struct ast_variable *var = data;
|
||||
|
||||
pbx_builtin_setvar_helper(control->channel, var->name, var->value);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int stasis_app_control_set_channel_var(struct stasis_app_control *control, const char *variable, const char *value)
|
||||
{
|
||||
return pbx_builtin_setvar_helper(control->channel, variable, value);
|
||||
struct ast_variable *var;
|
||||
|
||||
var = ast_variable_new(variable, value, "ARI");
|
||||
if (!var) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
stasis_app_send_command_async(control, app_control_set_channel_var, var, ast_free_ptr);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int app_control_hold(struct stasis_app_control *control,
|
||||
|
Reference in New Issue
Block a user