mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-02 11:58:40 +00:00
Remove some unnecessary calls to ast_bridged_channel() in chan_dahdi.c/sig_analog.c
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@387181 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1354,9 +1354,7 @@ int analog_hangup(struct analog_pvt *p, struct ast_channel *ast)
|
||||
if (ast_channel_state(p->owner) != AST_STATE_UP) {
|
||||
ast_queue_control(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_ANSWER);
|
||||
}
|
||||
if (ast_bridged_channel(p->subs[ANALOG_SUB_REAL].owner)) {
|
||||
ast_queue_control(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_UNHOLD);
|
||||
}
|
||||
ast_queue_control(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_UNHOLD);
|
||||
/* Unlock the call-waiting call that we swapped to real-call. */
|
||||
ast_channel_unlock(p->subs[ANALOG_SUB_REAL].owner);
|
||||
} else if (p->subs[ANALOG_SUB_THREEWAY].allocd) {
|
||||
@@ -1383,7 +1381,7 @@ int analog_hangup(struct analog_pvt *p, struct ast_channel *ast)
|
||||
|
||||
/* This is actually part of a three way, placed on hold. Place the third part
|
||||
on music on hold now */
|
||||
if (p->subs[ANALOG_SUB_THREEWAY].owner && ast_bridged_channel(p->subs[ANALOG_SUB_THREEWAY].owner)) {
|
||||
if (p->subs[ANALOG_SUB_THREEWAY].owner) {
|
||||
ast_queue_control_data(p->subs[ANALOG_SUB_THREEWAY].owner, AST_CONTROL_HOLD,
|
||||
S_OR(p->mohsuggest, NULL),
|
||||
!ast_strlen_zero(p->mohsuggest) ? strlen(p->mohsuggest) + 1 : 0);
|
||||
@@ -1407,7 +1405,7 @@ int analog_hangup(struct analog_pvt *p, struct ast_channel *ast)
|
||||
/* The other party of the three way call is currently in a call-wait state.
|
||||
Start music on hold for them, and take the main guy out of the third call */
|
||||
analog_set_inthreeway(p, ANALOG_SUB_CALLWAIT, 0);
|
||||
if (p->subs[ANALOG_SUB_CALLWAIT].owner && ast_bridged_channel(p->subs[ANALOG_SUB_CALLWAIT].owner)) {
|
||||
if (p->subs[ANALOG_SUB_CALLWAIT].owner) {
|
||||
ast_queue_control_data(p->subs[ANALOG_SUB_CALLWAIT].owner, AST_CONTROL_HOLD,
|
||||
S_OR(p->mohsuggest, NULL),
|
||||
!ast_strlen_zero(p->mohsuggest) ? strlen(p->mohsuggest) + 1 : 0);
|
||||
@@ -2325,9 +2323,7 @@ static void *__analog_ss_thread(void *data)
|
||||
analog_swap_subs(p, ANALOG_SUB_REAL, ANALOG_SUB_THREEWAY);
|
||||
analog_unalloc_sub(p, ANALOG_SUB_THREEWAY);
|
||||
analog_set_new_owner(p, p->subs[ANALOG_SUB_REAL].owner);
|
||||
if (ast_bridged_channel(p->subs[ANALOG_SUB_REAL].owner)) {
|
||||
ast_queue_control(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_UNHOLD);
|
||||
}
|
||||
ast_queue_control(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_UNHOLD);
|
||||
ast_hangup(chan);
|
||||
goto quit;
|
||||
} else {
|
||||
@@ -3027,10 +3023,8 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_
|
||||
case AST_STATE_UP:
|
||||
/* Make sure it stops ringing */
|
||||
analog_off_hook(p);
|
||||
/* Okay -- probably call waiting*/
|
||||
if (ast_bridged_channel(p->owner)) {
|
||||
ast_queue_control(p->owner, AST_CONTROL_UNHOLD);
|
||||
}
|
||||
/* Okay -- probably call waiting */
|
||||
ast_queue_control(p->owner, AST_CONTROL_UNHOLD);
|
||||
break;
|
||||
case AST_STATE_RESERVED:
|
||||
/* Start up dialtone */
|
||||
@@ -3188,16 +3182,14 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_
|
||||
analog_stop_callwait(p);
|
||||
|
||||
/* Start music on hold if appropriate */
|
||||
if (!p->subs[ANALOG_SUB_CALLWAIT].inthreeway && ast_bridged_channel(p->subs[ANALOG_SUB_CALLWAIT].owner)) {
|
||||
if (!p->subs[ANALOG_SUB_CALLWAIT].inthreeway) {
|
||||
ast_queue_control_data(p->subs[ANALOG_SUB_CALLWAIT].owner, AST_CONTROL_HOLD,
|
||||
S_OR(p->mohsuggest, NULL),
|
||||
!ast_strlen_zero(p->mohsuggest) ? strlen(p->mohsuggest) + 1 : 0);
|
||||
}
|
||||
if (ast_bridged_channel(p->subs[ANALOG_SUB_REAL].owner)) {
|
||||
ast_queue_control_data(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_HOLD,
|
||||
S_OR(p->mohsuggest, NULL),
|
||||
!ast_strlen_zero(p->mohsuggest) ? strlen(p->mohsuggest) + 1 : 0);
|
||||
}
|
||||
ast_queue_control_data(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_HOLD,
|
||||
S_OR(p->mohsuggest, NULL),
|
||||
!ast_strlen_zero(p->mohsuggest) ? strlen(p->mohsuggest) + 1 : 0);
|
||||
ast_queue_control(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_UNHOLD);
|
||||
|
||||
/* Unlock the call-waiting call that we swapped to real-call. */
|
||||
@@ -3289,12 +3281,10 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_
|
||||
} else {
|
||||
ast_verb(3, "Started three way call on channel %d\n", p->channel);
|
||||
|
||||
/* Start music on hold if appropriate */
|
||||
if (ast_bridged_channel(p->subs[ANALOG_SUB_THREEWAY].owner)) {
|
||||
ast_queue_control_data(p->subs[ANALOG_SUB_THREEWAY].owner, AST_CONTROL_HOLD,
|
||||
S_OR(p->mohsuggest, NULL),
|
||||
!ast_strlen_zero(p->mohsuggest) ? strlen(p->mohsuggest) + 1 : 0);
|
||||
}
|
||||
/* Start music on hold */
|
||||
ast_queue_control_data(p->subs[ANALOG_SUB_THREEWAY].owner, AST_CONTROL_HOLD,
|
||||
S_OR(p->mohsuggest, NULL),
|
||||
!ast_strlen_zero(p->mohsuggest) ? strlen(p->mohsuggest) + 1 : 0);
|
||||
}
|
||||
ast_callid_threadstorage_auto_clean(callid, callid_created);
|
||||
}
|
||||
@@ -3344,9 +3334,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_
|
||||
analog_swap_subs(p, ANALOG_SUB_THREEWAY, ANALOG_SUB_REAL);
|
||||
orig_3way_sub = ANALOG_SUB_REAL;
|
||||
}
|
||||
if (ast_bridged_channel(p->subs[orig_3way_sub].owner)) {
|
||||
ast_queue_control(p->subs[orig_3way_sub].owner, AST_CONTROL_UNHOLD);
|
||||
}
|
||||
ast_queue_control(p->subs[orig_3way_sub].owner, AST_CONTROL_UNHOLD);
|
||||
analog_set_new_owner(p, p->subs[ANALOG_SUB_REAL].owner);
|
||||
} else {
|
||||
ast_verb(3, "Dumping incomplete call on %s\n", ast_channel_name(p->subs[ANALOG_SUB_THREEWAY].owner));
|
||||
@@ -3354,9 +3342,7 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_
|
||||
orig_3way_sub = ANALOG_SUB_REAL;
|
||||
ast_softhangup_nolock(p->subs[ANALOG_SUB_THREEWAY].owner, AST_SOFTHANGUP_DEV);
|
||||
analog_set_new_owner(p, p->subs[ANALOG_SUB_REAL].owner);
|
||||
if (ast_bridged_channel(p->subs[ANALOG_SUB_REAL].owner)) {
|
||||
ast_queue_control(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_UNHOLD);
|
||||
}
|
||||
ast_queue_control(p->subs[ANALOG_SUB_REAL].owner, AST_CONTROL_UNHOLD);
|
||||
analog_set_echocanceller(p, 1);
|
||||
}
|
||||
}
|
||||
@@ -3598,7 +3584,7 @@ struct ast_frame *analog_exception(struct analog_pvt *p, struct ast_channel *ast
|
||||
ast_log(LOG_WARNING, "Event %s on %s is not restored owner %s\n",
|
||||
analog_event2str(res), ast_channel_name(ast), ast_channel_name(p->owner));
|
||||
}
|
||||
if (p->owner && ast_bridged_channel(p->owner)) {
|
||||
if (p->owner) {
|
||||
ast_queue_control(p->owner, AST_CONTROL_UNHOLD);
|
||||
}
|
||||
}
|
||||
@@ -3638,9 +3624,7 @@ struct ast_frame *analog_exception(struct analog_pvt *p, struct ast_channel *ast
|
||||
ast_setstate(p->owner, AST_STATE_UP);
|
||||
}
|
||||
analog_stop_callwait(p);
|
||||
if (ast_bridged_channel(p->owner)) {
|
||||
ast_queue_control(p->owner, AST_CONTROL_UNHOLD);
|
||||
}
|
||||
ast_queue_control(p->owner, AST_CONTROL_UNHOLD);
|
||||
} else {
|
||||
ast_log(LOG_WARNING, "Absorbed %s, but nobody is left!?!?\n",
|
||||
analog_event2str(res));
|
||||
|
||||
Reference in New Issue
Block a user