} else if (res == 0) {
ast_debug(1, "Not enough digits (%s) (and no ambiguous match)...\n", d->exten);
memset(d->exten, 0, sizeof(d->exten));
- transmit_tone(d, SKINNY_REORDER, l->instance, sub->callid);
+ if (l->hookstate == SKINNY_OFFHOOK) {
+ transmit_tone(d, SKINNY_REORDER, l->instance, sub->callid);
+ }
if (sub->owner && sub->owner->_state != AST_STATE_UP) {
ast_indicate(c, -1);
ast_hangup(c);
((d->exten[0] != '*') || (!ast_strlen_zero(d->exten) > 2))) {
ast_log(LOG_WARNING, "Can't match [%s] from '%s' in context %s\n", d->exten, c->cid.cid_num ? c->cid.cid_num : "<Unknown Caller>", c->context);
memset(d->exten, 0, sizeof(d->exten));
- transmit_tone(d, SKINNY_REORDER, l->instance, sub->callid);
- /* hang out for 3 seconds to let congestion play */
- ast_safe_sleep(c, 3000);
+ if (l->hookstate == SKINNY_OFFHOOK) {
+ transmit_tone(d, SKINNY_REORDER, l->instance, sub->callid);
+ /* hang out for 3 seconds to let congestion play */
+ ast_safe_sleep(c, 3000);
+ }
break;
}
if (!timeout) {
transmit_closereceivechannel(d, sub);
transmit_stopmediatransmission(d, sub);
transmit_lamp_indication(d, STIMULUS_LINE, l->instance, SKINNY_LAMP_BLINK);
+ transmit_tone(d, SKINNY_SILENCE, l->instance, sub->callid);
} 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)) {
transmit_stopmediatransmission(d, sub);
transmit_speaker_mode(d, SKINNY_SPEAKEROFF);
transmit_ringer_mode(d, SKINNY_RING_OFF);
+ transmit_tone(d, SKINNY_SILENCE, l->instance, sub->callid);
/* we should check to see if we can start the ringer if another line is ringing */
}
}
if (sub && sub->outgoing) {
/* We're answering a ringing call */
ast_queue_control(sub->owner, AST_CONTROL_ANSWER);
- transmit_callstateonly(d, sub, SKINNY_CONNECTED);
+ transmit_callstate(d, l->instance, SKINNY_OFFHOOK, sub->callid);
transmit_tone(d, SKINNY_SILENCE, l->instance, sub->callid);
- transmit_callstate(d, l->instance, SKINNY_CONNECTED, sub->callid);
+ transmit_callstateonly(d, sub, SKINNY_CONNECTED);
transmit_selectsoftkeys(d, l->instance, sub->callid, KEYDEF_CONNECTED);
start_rtp(sub);
ast_setstate(sub->owner, AST_STATE_UP);