summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2005-06-02 17:12:04 +0000
committerMark Spencer <markster@digium.com>2005-06-02 17:12:04 +0000
commitdf349078da972b0ce0aa778d2c6a7b449a14f6e7 (patch)
treecbd76ad9c0c12e3b18f841640ab6a0e47bb9f197
parent9950df1b4938afe6130842f26f9e1aa0ff93ae9e (diff)
Fix dial to not seg when closing ')' is missing (bug #4410)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5812 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rwxr-xr-xapps/app_dial.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/apps/app_dial.c b/apps/app_dial.c
index 021405858..12794ef76 100755
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -820,19 +820,19 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
dblgoto = ast_strdupa(mac + 2);
while (*mac && (*mac != ')'))
*(mac++) = 'X';
- if (*mac)
+ if (*mac) {
*mac = 'X';
- else {
+ mac = strchr(dblgoto, ')');
+ if (mac)
+ *mac = '\0';
+ else {
+ ast_log(LOG_WARNING, "Goto flag set without trailing ')'\n");
+ dblgoto = NULL;
+ }
+ } else {
ast_log(LOG_WARNING, "Could not find exten to which we should jump.\n");
dblgoto = NULL;
}
- mac = strchr(dblgoto, ')');
- if (mac)
- *mac = '\0';
- else {
- ast_log(LOG_WARNING, "Goto flag set without trailing ')'\n");
- dblgoto = NULL;
- }
}
/* Get the macroname from the dial option string */
@@ -841,19 +841,19 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
macroname = ast_strdupa(mac + 2);
while (*mac && (*mac != ')'))
*(mac++) = 'X';
- if (*mac)
+ if (*mac) {
*mac = 'X';
- else {
+ mac = strchr(macroname, ')');
+ if (mac)
+ *mac = '\0';
+ else {
+ ast_log(LOG_WARNING, "Macro flag set without trailing ')'\n");
+ hasmacro = 0;
+ }
+ } else {
ast_log(LOG_WARNING, "Could not find macro to which we should jump.\n");
hasmacro = 0;
}
- mac = strchr(macroname, ')');
- if (mac)
- *mac = '\0';
- else {
- ast_log(LOG_WARNING, "Macro flag set without trailing ')'\n");
- hasmacro = 0;
- }
}
/* Get music on hold class */
if ((mac = strstr(transfer, "m("))) {
@@ -898,8 +898,8 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
} else if (strchr(transfer, 'C')) {
resetcdr = 1;
} else if (strchr(transfer, 'n')) {
- nojump = 1;
- }
+ nojump = 1;
+ }
}
if (resetcdr && chan->cdr)
ast_cdr_reset(chan->cdr, 0);