[asterisk-commits] file: branch file/originate_dial r387101 - /team/file/originate_dial/main/pbx.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed May 1 08:23:05 CDT 2013
Author: file
Date: Wed May 1 08:23:01 2013
New Revision: 387101
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=387101
Log:
Obey the early_media option.
Modified:
team/file/originate_dial/main/pbx.c
Modified: team/file/originate_dial/main/pbx.c
URL: http://svnview.digium.com/svn/asterisk/team/file/originate_dial/main/pbx.c?view=diff&rev=387101&r1=387100&r2=387101
==============================================================================
--- team/file/originate_dial/main/pbx.c (original)
+++ team/file/originate_dial/main/pbx.c Wed May 1 08:23:01 2013
@@ -10020,6 +10020,25 @@
return NULL;
}
+/*! \brief Internal dialing state callback which causes early media to trigger an answer */
+static void pbx_outgoing_state_callback(struct ast_dial *dial)
+{
+ struct ast_channel *channel;
+
+ if (ast_dial_state(dial) != AST_DIAL_RESULT_PROGRESS) {
+ return;
+ }
+
+ if (!(channel = ast_dial_channel(dial, 0))) {
+ return;
+ }
+
+ ast_verb(4, "Treating progress as answer on '%s' due to early media option\n",
+ ast_channel_name(channel));
+
+ ast_queue_control(channel, AST_CONTROL_ANSWER);
+}
+
static int pbx_outgoing_attempt(const char *type, struct ast_format_cap *cap, const char *addr, int timeout, const char *context,
const char *exten, int priority, const char *app, const char *appdata, int *reason, int synchronous, const char *cid_num,
const char *cid_name, struct ast_variable *vars, const char *account, struct ast_channel **channel, int early_media)
@@ -10077,6 +10096,10 @@
connected.id.name.presentation = AST_PRES_ALLOWED_USER_NUMBER_NOT_SCREENED;
ast_channel_set_connected_line(dialed, &connected, NULL);
+ }
+
+ if (early_media) {
+ ast_dial_set_state_callback(outgoing->dial, &pbx_outgoing_state_callback);
}
ast_mutex_init(&outgoing->lock);
More information about the asterisk-commits
mailing list