summaryrefslogtreecommitdiff
path: root/channels/sig_ss7.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2012-03-07 18:33:12 +0000
committerRichard Mudgett <rmudgett@digium.com>2012-03-07 18:33:12 +0000
commitb9a74214828b17087b31e1e5efa3bd7a020ef497 (patch)
tree55558d3c189919f6e98c958b16ab2d41b959fe47 /channels/sig_ss7.c
parent5aba1ca84a7a07190cb54f3950ebfbc65388fea8 (diff)
Change directly setting _softhangup in sig_ss7.c to use ast_softhangup_nolock().
Update to: (issue ASTERISK-19372) ........ Merged revisions 358530 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 358531 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@358532 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/sig_ss7.c')
-rw-r--r--channels/sig_ss7.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/channels/sig_ss7.c b/channels/sig_ss7.c
index ccea94932..490d767e8 100644
--- a/channels/sig_ss7.c
+++ b/channels/sig_ss7.c
@@ -459,8 +459,11 @@ static inline void ss7_hangup_cics(struct sig_ss7_linkset *linkset, int startcic
for (i = 0; i < linkset->numchans; i++) {
if (linkset->pvts[i] && (linkset->pvts[i]->dpc == dpc && ((linkset->pvts[i]->cic >= startcic) && (linkset->pvts[i]->cic <= endcic)))) {
sig_ss7_lock_private(linkset->pvts[i]);
- if (linkset->pvts[i]->owner)
- ast_channel_softhangup_internal_flag_add(linkset->pvts[i]->owner, AST_SOFTHANGUP_DEV);
+ sig_ss7_lock_owner(linkset, i);
+ if (linkset->pvts[i]->owner) {
+ ast_softhangup_nolock(linkset->pvts[i]->owner, AST_SOFTHANGUP_DEV);
+ ast_channel_unlock(linkset->pvts[i]->owner);
+ }
sig_ss7_unlock_private(linkset->pvts[i]);
}
}
@@ -1673,7 +1676,7 @@ int sig_ss7_indicate(struct sig_ss7_chan *p, struct ast_channel *chan, int condi
case AST_CONTROL_BUSY:
if (p->call_level < SIG_SS7_CALL_LEVEL_CONNECT) {
ast_channel_hangupcause_set(chan, AST_CAUSE_USER_BUSY);
- ast_channel_softhangup_internal_flag_add(chan, AST_SOFTHANGUP_DEV);
+ ast_softhangup_nolock(chan, AST_SOFTHANGUP_DEV);
res = 0;
break;
}
@@ -1737,7 +1740,7 @@ int sig_ss7_indicate(struct sig_ss7_chan *p, struct ast_channel *chan, int condi
case AST_CONTROL_INCOMPLETE:
if (p->call_level < SIG_SS7_CALL_LEVEL_CONNECT) {
ast_channel_hangupcause_set(chan, AST_CAUSE_INVALID_NUMBER_FORMAT);
- ast_channel_softhangup_internal_flag_add(chan, AST_SOFTHANGUP_DEV);
+ ast_softhangup_nolock(chan, AST_SOFTHANGUP_DEV);
res = 0;
break;
}
@@ -1747,7 +1750,7 @@ int sig_ss7_indicate(struct sig_ss7_chan *p, struct ast_channel *chan, int condi
case AST_CONTROL_CONGESTION:
if (p->call_level < SIG_SS7_CALL_LEVEL_CONNECT) {
ast_channel_hangupcause_set(chan, AST_CAUSE_CONGESTION);
- ast_channel_softhangup_internal_flag_add(chan, AST_SOFTHANGUP_DEV);
+ ast_softhangup_nolock(chan, AST_SOFTHANGUP_DEV);
res = 0;
break;
}