summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorDamien Wedhorn <voip@facts.com.au>2010-08-07 22:36:08 +0000
committerDamien Wedhorn <voip@facts.com.au>2010-08-07 22:36:08 +0000
commitf8d64f861402d13ac2e5821cc4fbff8d145c189a (patch)
tree3264dba92f9df0bc3bafba0cb20b2fecbdf44b74 /channels
parent394fa75a0ae9ef7adee4e965a6f11616eb1c3b9e (diff)
Fix up handling and indications during transfer.
Cleaned up handling of onhook indications and added indications if more than one sub on device. Also fixes issue in 12324 so that the phone can call itself without locking up. (closes issue #17692) Reported by: jmhunter Patches: chan_skinny-transfer-v4.txt uploaded by DEA (license 3) skinnytransfver.v8.diff uploaded by wedhorn (license 30) Tested by: jmhunter, salecha, wedhorn Review: NA git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@281257 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_skinny.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 31b55d919..fc91138e5 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -4075,12 +4075,15 @@ static int skinny_hangup(struct ast_channel *ast)
l->activesub = AST_LIST_FIRST(&l->sub);
}
}
- //transmit_callstate(d, l->instance, SKINNY_ONHOOK, sub->callid);
- transmit_activatecallplane(d, l);
+ if (l->activesub) {
+ transmit_selectsoftkeys(d, 0, 0, KEYDEF_ONHOLD);
+ }
transmit_closereceivechannel(d, sub);
transmit_stopmediatransmission(d, sub);
transmit_lamp_indication(d, STIMULUS_LINE, l->instance, SKINNY_LAMP_BLINK);
transmit_stop_tone(d, l->instance, sub->callid);
+ transmit_callstate(d, l->instance, sub->callid, SKINNY_ONHOOK);
+ transmit_activatecallplane(d, l);
} else { /* we are killing a background sub on the line with other subs*/
ast_verb(4,"Killing inactive sub %d\n", sub->callid);
if (AST_LIST_NEXT(sub, list)) {
@@ -4088,6 +4091,8 @@ static int skinny_hangup(struct ast_channel *ast)
} else {
transmit_lamp_indication(d, STIMULUS_LINE, l->instance, SKINNY_LAMP_ON);
}
+ transmit_callstate(d, l->instance, sub->callid, SKINNY_ONHOOK);
+ transmit_activatecallplane(d, l);
}
} else { /* no more subs on line so make idle */
ast_verb(4,"Killing only sub %d\n", sub->callid);
@@ -4790,7 +4795,7 @@ static int handle_transfer_button(struct skinny_subchannel *sub)
sub->related = newsub;
newsub->xferor = 1;
l->activesub = newsub;
- transmit_callstate(d, l->instance, sub->callid, SKINNY_OFFHOOK);
+ transmit_callstate(d, l->instance, newsub->callid, SKINNY_OFFHOOK);
transmit_activatecallplane(d, l);
transmit_clear_display_message(d, l->instance, newsub->callid);
transmit_start_tone(d, SKINNY_DIALTONE, l->instance, newsub->callid);