diff options
Diffstat (limited to 'channels/chan_misdn.c')
-rw-r--r-- | channels/chan_misdn.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index 6dd9adf6a..02b525039 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -5954,7 +5954,9 @@ static int read_config(struct chan_list *ch) chan_misdn_log(1, port, "read_config: Getting Config\n"); misdn_cfg_get(port, MISDN_CFG_LANGUAGE, lang, sizeof(lang)); + ast_channel_lock(ast); ast_channel_language_set(ast, lang); + ast_channel_unlock(ast); misdn_cfg_get(port, MISDN_CFG_MUSICCLASS, ch->mohinterpret, sizeof(ch->mohinterpret)); @@ -6000,7 +6002,9 @@ static int read_config(struct chan_list *ch) misdn_cfg_get(bc->port, MISDN_CFG_CONTEXT, ch->context, sizeof(ch->context)); + ast_channel_lock(ast); ast_channel_context_set(ast, ch->context); + ast_channel_unlock(ast); #ifdef MISDN_1_2 update_pipeline_config(bc); @@ -6017,8 +6021,10 @@ static int read_config(struct chan_list *ch) misdn_cfg_get(port, MISDN_CFG_PICKUPGROUP, &pg, sizeof(pg)); misdn_cfg_get(port, MISDN_CFG_CALLGROUP, &cg, sizeof(cg)); chan_misdn_log(5, port, " --> * CallGrp:%s PickupGrp:%s\n", ast_print_group(buf, sizeof(buf), cg), ast_print_group(buf2, sizeof(buf2), pg)); + ast_channel_lock(ast); ast_channel_pickupgroup_set(ast, pg); ast_channel_callgroup_set(ast, cg); + ast_channel_unlock(ast); misdn_cfg_get(port, MISDN_CFG_NAMEDPICKUPGROUP, &npg, sizeof(npg)); misdn_cfg_get(port, MISDN_CFG_NAMEDCALLGROUP, &ncg, sizeof(ncg)); @@ -6031,8 +6037,10 @@ static int read_config(struct chan_list *ch) ast_free(tmp_str); } + ast_channel_lock(ast); ast_channel_named_pickupgroups_set(ast, npg); ast_channel_named_callgroups_set(ast, ncg); + ast_channel_unlock(ast); if (ch->originator == ORG_AST) { char callerid[BUFFERSIZE + 1]; @@ -6086,7 +6094,9 @@ static int read_config(struct chan_list *ch) /* Add configured prefix to dialed.number */ misdn_add_number_prefix(bc->port, bc->dialed.number_type, bc->dialed.number, sizeof(bc->dialed.number)); + ast_channel_lock(ast); ast_channel_exten_set(ast, bc->dialed.number); + ast_channel_unlock(ast); misdn_cfg_get(bc->port, MISDN_CFG_OVERLAP_DIAL, &ch->overlap_dial, sizeof(ch->overlap_dial)); ast_mutex_init(&ch->overlap_tv_lock); @@ -10232,8 +10242,10 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) export_ch(chan, bc, ch); + ast_channel_lock(ch->ast); ast_channel_rings_set(ch->ast, 1); ast_setstate(ch->ast, AST_STATE_RINGING); + ast_channel_unlock(ch->ast); /* Update asterisk channel caller information */ chan_misdn_log(2, bc->port, " --> TON: %s(%d)\n", misdn_to_str_ton(bc->caller.number_type), bc->caller.number_type); @@ -10532,7 +10544,9 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) } ast_queue_control(ch->ast, AST_CONTROL_RINGING); + ast_channel_lock(ch->ast); ast_setstate(ch->ast, AST_STATE_RINGING); + ast_channel_unlock(ch->ast); cb_log(7, bc->port, " --> Set State Ringing\n"); |