summaryrefslogtreecommitdiff
path: root/channels/chan_unistim.c
diff options
context:
space:
mode:
authorIgor Goncharovskiy <igor.goncharovsky@gmail.com>2012-10-15 08:26:58 +0000
committerIgor Goncharovskiy <igor.goncharovsky@gmail.com>2012-10-15 08:26:58 +0000
commite41a591dfc6c199602d2a49ef9a139ec1ad054a7 (patch)
treea9532ed1adead6b6cc9d003bd04f283736335b5e /channels/chan_unistim.c
parentd6dd24d71ef3df7872719cbcb2987112edf7aa81 (diff)
Fix underscreen buttons warnings apeared while transfer process
........ Merged revisions 375016 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@375017 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_unistim.c')
-rw-r--r--channels/chan_unistim.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c
index a277cd348..21805a26c 100644
--- a/channels/chan_unistim.c
+++ b/channels/chan_unistim.c
@@ -3297,7 +3297,7 @@ static void handle_key_fav(struct unistimsession *pte, char keycode)
static void key_call(struct unistimsession *pte, char keycode)
{
- struct unistim_subchannel *sub = NULL;
+ struct unistim_subchannel *sub = get_sub(pte->device, SUB_REAL);
if ((keycode >= KEY_0) && (keycode <= KEY_SHARP)) {
if (keycode == KEY_SHARP) {
keycode = '#';
@@ -3311,15 +3311,19 @@ static void key_call(struct unistimsession *pte, char keycode)
}
switch (keycode) {
case KEY_FUNC1:
- if (get_sub(pte->device, SUB_THREEWAY)) {
- close_call(pte);
+ if (ast_channel_state(sub->owner) == AST_STATE_UP) {
+ if (get_sub(pte->device, SUB_THREEWAY)) {
+ close_call(pte);
+ }
}
break;
case KEY_FUNC2:
- if (get_sub(pte->device, SUB_THREEWAY)) {
- transfer_cancel_step2(pte);
- } else {
- transfer_call_step1(pte);
+ if (ast_channel_state(sub->owner) == AST_STATE_UP) {
+ if (get_sub(pte->device, SUB_THREEWAY)) {
+ transfer_cancel_step2(pte);
+ } else {
+ transfer_call_step1(pte);
+ }
}
break;
case KEY_HANGUP:
@@ -3351,7 +3355,6 @@ static void key_call(struct unistimsession *pte, char keycode)
MUTE_OFF);
break;
case KEY_MUTE:
- sub = get_sub(pte->device, SUB_REAL);
if (!sub || !sub->owner) {
ast_log(LOG_WARNING, "Unable to find subchannel for music on hold\n");
return;
@@ -3366,7 +3369,6 @@ static void key_call(struct unistimsession *pte, char keycode)
}
break;
case KEY_ONHOLD:
- sub = get_sub(pte->device, SUB_REAL);
if (!sub) {
if(pte->device->ssub[pte->device->selected]) {
sub_hold(pte, pte->device->ssub[pte->device->selected]);