From 52ca6fb94a63c32886bd5f862fe6c2e0e572d02b Mon Sep 17 00:00:00 2001
From: pchero <pchero21@gmail.com>
Date: Tue, 8 Dec 2015 20:04:12 +0100
Subject: [PATCH] AMI: Fixed OriginateResponse message

When the asterisk sending OriginateResponse message,
it doesn't set the "Uniqueid".
And it didn't support correct response message for
Application originate.

ASTERISK-25624 #close

Change-Id: I26f54f677ccfb0b7cfd4967a844a1657fd69b74d
---
 main/manager.c | 55 +++++++++++++++++++++++++++++++++++---------------
 1 file changed, 39 insertions(+), 16 deletions(-)

diff --git a/main/manager.c b/main/manager.c
index d6aadf4eca..544f4fdcd8 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -659,6 +659,8 @@ ASTERISK_REGISTER_FILE()
 				<parameter name="Channel"/>
 				<parameter name="Context"/>
 				<parameter name="Exten"/>
+				<parameter name="Application"/>
+				<parameter name="Data"/>
 				<parameter name="Reason"/>
 				<parameter name="Uniqueid"/>
 				<parameter name="CallerIDNum"/>
@@ -4993,22 +4995,43 @@ static void *fast_originate(void *data)
 	}
 	/* Tell the manager what happened with the channel */
 	chans[0] = chan;
-	ast_manager_event_multichan(EVENT_FLAG_CALL, "OriginateResponse", chan ? 1 : 0, chans,
-		"%s"
-		"Response: %s\r\n"
-		"Channel: %s\r\n"
-		"Context: %s\r\n"
-		"Exten: %s\r\n"
-		"Reason: %d\r\n"
-		"Uniqueid: %s\r\n"
-		"CallerIDNum: %s\r\n"
-		"CallerIDName: %s\r\n",
-		in->idtext, res ? "Failure" : "Success",
-		chan ? ast_channel_name(chan) : requested_channel, in->context, in->exten, reason,
-		chan ? ast_channel_uniqueid(chan) : "<null>",
-		S_OR(in->cid_num, "<unknown>"),
-		S_OR(in->cid_name, "<unknown>")
-		);
+	if (!ast_strlen_zero(in->app)) {
+		ast_manager_event_multichan(EVENT_FLAG_CALL, "OriginateResponse", chan ? 1 : 0, chans,
+			"%s"
+			"Response: %s\r\n"
+			"Channel: %s\r\n"
+			"Application: %s\r\n"
+			"Data: %s\r\n"
+			"Reason: %d\r\n"
+			"Uniqueid: %s\r\n"
+			"CallerIDNum: %s\r\n"
+			"CallerIDName: %s\r\n",
+			in->idtext, res ? "Failure" : "Success",
+			chan ? ast_channel_name(chan) : requested_channel,
+			in->app, in->appdata, reason,
+			chan ? ast_channel_uniqueid(chan) : S_OR(in->channelid, "<unknown>"),
+			S_OR(in->cid_num, "<unknown>"),
+			S_OR(in->cid_name, "<unknown>")
+			);
+	} else {
+		ast_manager_event_multichan(EVENT_FLAG_CALL, "OriginateResponse", chan ? 1 : 0, chans,
+			"%s"
+			"Response: %s\r\n"
+			"Channel: %s\r\n"
+			"Context: %s\r\n"
+			"Exten: %s\r\n"
+			"Reason: %d\r\n"
+			"Uniqueid: %s\r\n"
+			"CallerIDNum: %s\r\n"
+			"CallerIDName: %s\r\n",
+			in->idtext, res ? "Failure" : "Success",
+			chan ? ast_channel_name(chan) : requested_channel,
+			in->context, in->exten, reason,
+			chan ? ast_channel_uniqueid(chan) : S_OR(in->channelid, "<unknown>"),
+			S_OR(in->cid_num, "<unknown>"),
+			S_OR(in->cid_name, "<unknown>")
+			);
+	}
 
 	/* Locked and ref'd by ast_pbx_outgoing_exten or ast_pbx_outgoing_app */
 	if (chan) {
-- 
GitLab