mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	Add dial events to app_queue and app_followme.
Also fixes an issue in app_dial, where the channels were swapped on dial events. (closes issue ASTERISK-21551) (closes issue ASTERISK-21550) Review: https://reviewboard.asterisk.org/r/2549/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@389492 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -66,8 +66,9 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") | ||||
| #include "asterisk/ccss.h" | ||||
| #include "asterisk/indications.h" | ||||
| #include "asterisk/framehook.h" | ||||
| #include "asterisk/bridging.h" | ||||
| #include "asterisk/dial.h" | ||||
| #include "asterisk/stasis_channels.h" | ||||
| #include "asterisk/bridging.h" | ||||
|  | ||||
| /*** DOCUMENTATION | ||||
| 	<application name="Dial" language="en_US"> | ||||
| @@ -1014,9 +1015,15 @@ static void do_forward(struct chanlist *o, struct cause_args *num, | ||||
| 			num->nochan++; | ||||
| 		} else { | ||||
| 			ast_channel_lock_both(c, in); | ||||
| 			ast_channel_publish_dial(c, in, stuff, NULL); | ||||
| 			ast_channel_publish_dial(in, c, stuff, NULL); | ||||
| 			ast_channel_unlock(in); | ||||
| 			ast_channel_unlock(c); | ||||
|  | ||||
| 			ast_channel_lock_both(original, in); | ||||
| 			ast_channel_publish_dial(in, original, NULL, "CANCEL"); | ||||
| 			ast_channel_unlock(in); | ||||
| 			ast_channel_unlock(original); | ||||
|  | ||||
| 			/* Hangup the original channel now, in case we needed it */ | ||||
| 			ast_hangup(original); | ||||
| 		} | ||||
| @@ -1035,22 +1042,6 @@ struct privacy_args { | ||||
| 	char status[256]; | ||||
| }; | ||||
|  | ||||
| static const char *hangup_cause_to_dial_status(int hangup_cause) | ||||
| { | ||||
| 	switch(hangup_cause) { | ||||
| 	case AST_CAUSE_BUSY: | ||||
| 		return "BUSY"; | ||||
| 	case AST_CAUSE_CONGESTION: | ||||
| 		return "CONGESTION"; | ||||
| 	case AST_CAUSE_NO_ROUTE_DESTINATION: | ||||
| 	case AST_CAUSE_UNREGISTERED: | ||||
| 		return "CHANUNAVAIL"; | ||||
| 	case AST_CAUSE_NO_ANSWER: | ||||
| 	default: | ||||
| 		return "NOANSWER"; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| static void publish_dial_end_event(struct ast_channel *in, struct dial_head *out_chans, struct ast_channel *exception, const char *status) | ||||
| { | ||||
| 	struct chanlist *outgoing; | ||||
| @@ -1266,7 +1257,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, | ||||
| #ifdef HAVE_EPOLL | ||||
| 				ast_poll_channel_del(in, c); | ||||
| #endif | ||||
| 				ast_channel_publish_dial(in, c, NULL, hangup_cause_to_dial_status(ast_channel_hangupcause(c))); | ||||
| 				ast_channel_publish_dial(in, c, NULL, ast_hangup_cause_to_dial_status(ast_channel_hangupcause(c))); | ||||
| 				ast_hangup(c); | ||||
| 				c = o->chan = NULL; | ||||
| 				ast_clear_flag64(o, DIAL_STILLGOING); | ||||
| @@ -1334,7 +1325,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, | ||||
| 				case AST_CONTROL_BUSY: | ||||
| 					ast_verb(3, "%s is busy\n", ast_channel_name(c)); | ||||
| 					ast_channel_hangupcause_set(in, ast_channel_hangupcause(c)); | ||||
| 					ast_channel_publish_dial(in, c, NULL, hangup_cause_to_dial_status(ast_channel_hangupcause(c))); | ||||
| 					ast_channel_publish_dial(in, c, NULL, ast_hangup_cause_to_dial_status(ast_channel_hangupcause(c))); | ||||
| 					ast_hangup(c); | ||||
| 					c = o->chan = NULL; | ||||
| 					ast_clear_flag64(o, DIAL_STILLGOING); | ||||
| @@ -1343,7 +1334,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, | ||||
| 				case AST_CONTROL_CONGESTION: | ||||
| 					ast_verb(3, "%s is circuit-busy\n", ast_channel_name(c)); | ||||
| 					ast_channel_hangupcause_set(in, ast_channel_hangupcause(c)); | ||||
| 					ast_channel_publish_dial(in, c, NULL, hangup_cause_to_dial_status(ast_channel_hangupcause(c))); | ||||
| 					ast_channel_publish_dial(in, c, NULL, ast_hangup_cause_to_dial_status(ast_channel_hangupcause(c))); | ||||
| 					ast_hangup(c); | ||||
| 					c = o->chan = NULL; | ||||
| 					ast_clear_flag64(o, DIAL_STILLGOING); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user