Recent CDR fixes moved execution of the 'h' exten into the bridging code, so variables that were set after ast_bridge_call was called would not show up in the 'h' exten. Added a callback function to handle setting variables, etc. from w/in the bridging code. Calls back into a nested function within the function calling ast_bridge_call

(closes issue #13793)
Reported by: greenfieldtech


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@153181 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Terry Wilson
2008-10-31 18:55:33 +00:00
parent 46abb39ca2
commit 5fe37e47c6
5 changed files with 64 additions and 21 deletions

View File

@@ -3159,6 +3159,13 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
int callcompletedinsl;
struct ao2_iterator memi;
struct ast_datastore *datastore;
auto void end_bridge_callback(void);
void end_bridge_callback(void)
{
ao2_lock(qe->parent);
set_queue_variables(qe);
ao2_unlock(qe->parent);
}
ast_channel_lock(qe->chan);
datastore = ast_channel_datastore_find(qe->chan, &dialed_interface_info, NULL);
@@ -3229,6 +3236,8 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
}
bridge_config.end_bridge_callback = end_bridge_callback;
/* Hold the lock while we setup the outgoing calls */
if (use_weight)
ao2_lock(queues);