diff options
author | rmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-06-09 17:06:41 +0000 |
---|---|---|
committer | rmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-06-09 17:06:41 +0000 |
commit | 3bd233b49d32bfbdf330f025ea35c7cec7b5b145 (patch) | |
tree | 55034207f040527910e6f42202acd99c8d0ee4e9 /channels/chan_dahdi.c | |
parent | 7347af6efd5556d46826cf29374c01f86fc2c999 (diff) |
Add missing API function to sig_ss7: sig_ss7_fixup().
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@269308 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_dahdi.c')
-rw-r--r-- | channels/chan_dahdi.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index d054323f5..5df6dae0c 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -7074,27 +7074,34 @@ static int dahdi_fixup(struct ast_channel *oldchan, struct ast_channel *newchan) { struct dahdi_pvt *p = newchan->tech_pvt; int x; + ast_mutex_lock(&p->lock); + ast_debug(1, "New owner for channel %d is %s\n", p->channel, newchan->name); if (p->owner == oldchan) { p->owner = newchan; } - for (x = 0; x < 3; x++) + for (x = 0; x < 3; x++) { if (p->subs[x].owner == oldchan) { - if (!x) + if (!x) { dahdi_unlink(NULL, p, 0); + } p->subs[x].owner = newchan; } + } if (analog_lib_handles(p->sig, p->radio, p->oprmode)) { analog_fixup(oldchan, newchan, p->sig_pvt); - } -#ifdef HAVE_PRI - else if (dahdi_sig_pri_lib_handles(p->sig)) { +#if defined(HAVE_PRI) + } else if (dahdi_sig_pri_lib_handles(p->sig)) { sig_pri_fixup(oldchan, newchan, p->sig_pvt); +#endif /* defined(HAVE_PRI) */ +#if defined(HAVE_SS7) + } else if (p->sig == SIG_SS7) { + sig_ss7_fixup(oldchan, newchan, p->sig_pvt); +#endif /* defined(HAVE_SS7) */ } -#endif - update_conf(p); + ast_mutex_unlock(&p->lock); if (newchan->_state == AST_STATE_RINGING) { |