Merged revisions 89296 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r89296 | russell | 2007-11-15 11:19:28 -0600 (Thu, 15 Nov 2007) | 8 lines

Update the SLAStation application to account for the case where the SLA thread
has a call out to the station,  but the user has pressed a line button to answer
the call instead of picking up the handset.  If they do, the phone sends out a
new INVITE.  So, the SLAStation app must check to see if it is picking up a
ringing trunk, and ensure that the other stations stop ringing.

(reported internally, patched by me, tested by mogorman)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89297 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.0
Russell Bryant 18 years ago
parent eee92d0881
commit 1bf63d1c5b

@ -4821,6 +4821,29 @@ static int sla_station_exec(struct ast_channel *chan, void *data)
ast_devstate_changed(AST_DEVICE_INUSE, ast_devstate_changed(AST_DEVICE_INUSE,
"SLA:%s_%s", station->name, trunk_ref->trunk->name); "SLA:%s_%s", station->name, trunk_ref->trunk->name);
} }
} else if (trunk_ref->state == SLA_TRUNK_STATE_RINGING) {
struct sla_ringing_trunk *ringing_trunk;
ast_mutex_lock(&sla.lock);
AST_LIST_TRAVERSE_SAFE_BEGIN(&sla.ringing_trunks, ringing_trunk, entry) {
if (ringing_trunk->trunk == trunk_ref->trunk) {
AST_LIST_REMOVE_CURRENT(entry);
break;
}
}
AST_LIST_TRAVERSE_SAFE_END
ast_mutex_unlock(&sla.lock);
if (ringing_trunk) {
ast_answer(ringing_trunk->trunk->chan);
sla_change_trunk_state(ringing_trunk->trunk, SLA_TRUNK_STATE_UP, ALL_TRUNK_REFS, NULL);
free(ringing_trunk);
/* Queue up reprocessing ringing trunks, and then ringing stations again */
sla_queue_event(SLA_EVENT_RINGING_TRUNK);
sla_queue_event(SLA_EVENT_DIAL_STATE);
}
} }
trunk_ref->chan = chan; trunk_ref->chan = chan;

Loading…
Cancel
Save