mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	make sending indications more robust and proper
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3116 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -617,6 +617,8 @@ struct skinny_subchannel { | ||||
| 	struct skinny_line *parent; | ||||
| 	struct ast_rtp *rtp; | ||||
| 	time_t lastouttime; | ||||
| 	int progress; | ||||
| 	int ringing; | ||||
| 	int lastout; | ||||
| 	int cxmode; | ||||
| 	int nat; | ||||
| @@ -1697,17 +1699,40 @@ static int skinny_indicate(struct ast_channel *ast, int ind) | ||||
|     	} | ||||
| 	switch(ind) { | ||||
| 	case AST_CONTROL_RINGING: | ||||
| 		transmit_tone(s, SKINNY_ALERT); | ||||
| 		transmit_callstate(s, l->instance, SKINNY_PROGRESS, sub->callid); | ||||
| 		break; | ||||
| 		if (ast->_state == AST_STATE_RINGING) { | ||||
| 			if (!sub->progress) {		 | ||||
| 				transmit_tone(s, SKINNY_ALERT); | ||||
| 				transmit_callstate(s, l->instance, SKINNY_RINGOUT, sub->callid); | ||||
| 				sub->ringing = 1; | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		return -1; | ||||
| 	case AST_CONTROL_BUSY: | ||||
| 		transmit_tone(s, SKINNY_BUSYTONE); | ||||
| 		transmit_callstate(s, l->instance, SKINNY_BUSY, sub->callid); | ||||
| 		break; | ||||
| 		if (ast->_state != AST_STATE_UP) {		 | ||||
| 			transmit_tone(s, SKINNY_BUSYTONE); | ||||
| 			transmit_callstate(s, l->instance, SKINNY_BUSY, sub->callid); | ||||
| 			sub->alreadygone = 1; | ||||
| 			ast_softhangup_nolock(ast, AST_SOFTHANGUP_DEV); | ||||
|                         break; | ||||
|                 } | ||||
|                 return -1; | ||||
| 	case AST_CONTROL_CONGESTION: | ||||
| 		transmit_tone(s, SKINNY_REORDER); | ||||
| 		transmit_callstate(s, l->instance, SKINNY_CONGESTION, sub->callid); | ||||
| 		break; | ||||
| 		if (ast->_state != AST_STATE_UP) {		 | ||||
| 			transmit_tone(s, SKINNY_REORDER); | ||||
| 			transmit_callstate(s, l->instance, SKINNY_CONGESTION, sub->callid); | ||||
| 			sub->alreadygone = 1; | ||||
|                         ast_softhangup_nolock(ast, AST_SOFTHANGUP_DEV); | ||||
|                         break; | ||||
|                 } | ||||
|                 return -1; | ||||
| 	case AST_CONTROL_PROGRESS: | ||||
|                 if ((ast->_state != AST_STATE_UP) && !sub->progress && !sub->outgoing) { | ||||
| 			transmit_callstate(s, l->instance, SKINNY_PROGRESS, sub->callid); | ||||
|                         sub->progress = 1; | ||||
|                         break; | ||||
|                 } | ||||
|                 return -1;   | ||||
| 	case -1: | ||||
| 		transmit_tone(s, SKINNY_SILENCE); | ||||
| 		break;		 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user