summaryrefslogtreecommitdiff
path: root/net/asterisk10/files/patch-apps::app_dial.c
diff options
context:
space:
mode:
authorMaxim Sobolev <sobomax@FreeBSD.org>2008-05-16 09:24:29 +0000
committerMaxim Sobolev <sobomax@FreeBSD.org>2008-05-16 09:24:29 +0000
commit285e2c278ab94c27d91796679099a77878524cdf (patch)
treefdb5db734e5d21b486bc025816887cd269754368 /net/asterisk10/files/patch-apps::app_dial.c
parentKradview is a GPLed viewer of images obtained for some different (diff)
o Update to 1.4.19.2;
o move all additional functionality into separate patches and make it opt in. It has been concern of asterisks devs that the FreeBSD pacakage adds functionalty not present in the original version, whch could be confusing.
Notes
Notes: svn path=/head/; revision=213118
Diffstat (limited to 'net/asterisk10/files/patch-apps::app_dial.c')
-rw-r--r--net/asterisk10/files/patch-apps::app_dial.c88
1 files changed, 0 insertions, 88 deletions
diff --git a/net/asterisk10/files/patch-apps::app_dial.c b/net/asterisk10/files/patch-apps::app_dial.c
deleted file mode 100644
index 6abe48a17d9f..000000000000
--- a/net/asterisk10/files/patch-apps::app_dial.c
+++ /dev/null
@@ -1,88 +0,0 @@
---- apps/app_dial.c.orig Wed Feb 6 18:45:30 2008
-+++ apps/app_dial.c Wed Feb 6 18:51:59 2008
-@@ -297,6 +297,8 @@ AST_APP_OPTIONS(dial_exec_options, {
- OPT_CALLER_HANGUP | OPT_CALLEE_TRANSFER | OPT_CALLER_TRANSFER | \
- OPT_CALLEE_MONITOR | OPT_CALLER_MONITOR | OPT_CALLEE_PARK | OPT_CALLER_PARK))
-
-+static int detect_disconnect(struct ast_channel *chan, char code);
-+
- /* We define a custom "local user" structure because we
- use it not only for keeping track of what is in use but
- also for keeping track of who we're dialing. */
-@@ -402,6 +404,7 @@ static struct ast_channel *wait_for_answ
- struct ast_channel *peer = NULL;
- /* single is set if only one destination is enabled */
- int single = outgoing && !outgoing->next && !ast_test_flag(outgoing, OPT_MUSICBACK | OPT_RINGBACK);
-+
-
- if (single) {
- /* Turn off hold music, etc */
-@@ -716,9 +719,9 @@ static struct ast_channel *wait_for_answ
- }
-
- if (ast_test_flag(peerflags, OPT_CALLER_HANGUP) &&
-- (f->subclass == '*')) { /* hmm it it not guaranteed to be '*' anymore. */
-+ detect_disconnect(in, f->subclass)) { /* hmm it it not guaranteed to be '*' anymore. */
- if (option_verbose > 2)
-- ast_verbose(VERBOSE_PREFIX_3 "User hit %c to disconnect call.\n", f->subclass);
-+ ast_verbose(VERBOSE_PREFIX_3 "User requested call disconnect.\n");
- *to=0;
- ast_cdr_noanswer(in->cdr);
- strcpy(status, "CANCEL");
-@@ -776,6 +779,56 @@ static struct ast_channel *wait_for_answ
-
- return peer;
- }
-+
-+static char featurecode[FEATURE_MAX_LEN + 1] = "";
-+
-+static int detect_disconnect(struct ast_channel *chan, char code)
-+{
-+ struct feature_interpret_result result;
-+ int x;
-+ struct ast_flags features;
-+ int res = FEATURE_RETURN_PASSDIGITS;
-+ struct ast_call_feature *feature;
-+ char *cptr;
-+ int len;
-+
-+ len = strlen(featurecode);
-+ if (len >= FEATURE_MAX_LEN) {
-+ featurecode[0] = '\0';
-+ }
-+ cptr = &featurecode[strlen(featurecode)];
-+ cptr[0] = code;
-+ cptr[1] = '\0';
-+
-+ memset(&features, 0, sizeof(struct ast_flags));
-+ ast_set_flag(&features, AST_FEATURE_DISCONNECT);
-+
-+ ast_features_lock();
-+
-+ res = ast_feature_detect(chan, &features, featurecode, &result);
-+
-+ if (res != FEATURE_RETURN_STOREDIGITS)
-+ featurecode[0] = '\0';
-+
-+ if (result.builtin_feature && result.builtin_feature->feature_mask & AST_FEATURE_DISCONNECT) {
-+ ast_features_unlock();
-+ return 1;
-+ }
-+
-+ for (x = 0; x < result.num_dyn_features; ++x) {
-+ feature = result.dynamic_features[x];
-+ if (feature->feature_mask & AST_FEATURE_DISCONNECT) {
-+ ast_features_unlock();
-+ return 1;
-+ }
-+ }
-+
-+ ast_features_unlock();
-+
-+ return 0;
-+}
-+
-+
-
- static void replace_macro_delimiter(char *s)
- {