From eeefca7f91e8674a6d9f2091d09096402b0ba7ad Mon Sep 17 00:00:00 2001
From: Olle Johansson <oej@edvina.net>
Date: Tue, 4 Oct 2011 09:43:03 +0000
Subject: [PATCH] Generate error message when AMI action originate extension
 doesn't exist

Review: https://reviewboard.asterisk.org/r/1445/

Is this a bug or a new feature? No responses on Asterisk-dev so I'm
committing to trunk only.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@339206 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 CHANGES        |  4 ++++
 main/manager.c | 10 ++++++++++
 2 files changed, 14 insertions(+)

diff --git a/CHANGES b/CHANGES
index bcc4beff11..3f7315ea8a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -40,6 +40,10 @@ CDR postgresql driver changes
 -----------------------------
  * Added command "cdr show pgsql status" to check connection status
 
+AMI (Asterisk Manager Interface) changes
+----------------------------------------
+ * Originate now generates an error response if the extension given
+   is not found in the dialplan
 
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 1.8 to Asterisk 10 -------------------
diff --git a/main/manager.c b/main/manager.c
index 5320b3f524..af03e25e59 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -3997,6 +3997,16 @@ static int action_originate(struct mansession *s, const struct message *m)
 		}
 	}
 
+	/* Check early if the extension exists. If not, we need to bail out here. */
+	if (exten && context && pi) {
+		if (! ast_exists_extension(NULL, context, exten, pi, l)) {
+			/* The extension does not exist. */
+			astman_send_error(s, m, "Extension does not exist.");
+			res = 0;
+			goto fast_orig_cleanup;
+		}
+	}
+
 	/* Allocate requested channel variables */
 	vars = astman_get_variables(m);
 
-- 
GitLab