Unlock PRI lock, fix variable pasing
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@3093 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
f8c5bd5623
commit
4a66d3fb26
|
@ -1667,12 +1667,17 @@ struct ast_channel *__ast_request_and_dial(char *type, int format, void *data, i
|
|||
struct ast_channel *chan;
|
||||
struct ast_frame *f;
|
||||
int res = 0;
|
||||
char *variable;
|
||||
chan = ast_request(type, format, data);
|
||||
if (chan) {
|
||||
if (oh) {
|
||||
char *tmp, *var;
|
||||
/* JDG chanvar */
|
||||
tmp = oh->variable;
|
||||
if (oh->variable)
|
||||
variable = ast_strdupa(oh->variable);
|
||||
else
|
||||
variable = NULL;
|
||||
tmp = variable;
|
||||
/* FIXME replace this call with strsep NOT*/
|
||||
while( (var = strtok_r(NULL, "|", &tmp)) ) {
|
||||
pbx_builtin_setvar( chan, var );
|
||||
|
|
|
@ -6553,7 +6553,10 @@ static void *pri_dchannel(void *vpri)
|
|||
pri->pvt[chan]->callingpres = e->ring.callingpres;
|
||||
/* Start PBX */
|
||||
if (pri->overlapdial && ast_matchmore_extension(NULL, pri->pvt[chan]->context, pri->pvt[chan]->exten, 1, pri->pvt[chan]->callerid)) {
|
||||
/* Release the PRI lock while we create the channel */
|
||||
ast_mutex_unlock(&pri->lock);
|
||||
c = zt_new(pri->pvt[chan], AST_STATE_RING, 0, SUB_REAL, law, e->ring.ctype);
|
||||
ast_mutex_lock(&pri->lock);
|
||||
if (c && !pthread_create(&threadid, &attr, ss_thread, c)) {
|
||||
if (option_verbose > 2)
|
||||
ast_verbose(VERBOSE_PREFIX_3 "Accepting overlap call from '%s' to '%s' on channel %d, span %d\n",
|
||||
|
@ -6572,7 +6575,10 @@ static void *pri_dchannel(void *vpri)
|
|||
}
|
||||
}
|
||||
} else {
|
||||
ast_mutex_unlock(&pri->lock);
|
||||
/* Release PRI lock while we create the channel */
|
||||
c = zt_new(pri->pvt[chan], AST_STATE_RING, 1, SUB_REAL, law, e->ring.ctype);
|
||||
ast_mutex_lock(&pri->lock);
|
||||
if (c) {
|
||||
if (option_verbose > 2)
|
||||
ast_verbose(VERBOSE_PREFIX_3 "Accepting call from '%s' to '%s' on channel %d, span %d\n",
|
||||
|
|
Reference in New Issue