[Asterisk-code-review] message.c: Support To header override with AMI's MessageSend (asterisk[16])
Sean Bright
asteriskteam at digium.com
Tue Sep 21 12:12:57 CDT 2021
Sean Bright has uploaded this change for review. ( https://gerrit.asterisk.org/c/asterisk/+/16496 )
Change subject: message.c: Support To header override with AMI's MessageSend
......................................................................
message.c: Support To header override with AMI's MessageSend
ASTERISK-29663 #close
Change-Id: I8513168d3e189a9fed88aaab6f5547ccb50d332c
---
M main/message.c
1 file changed, 33 insertions(+), 6 deletions(-)
git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/96/16496/1
diff --git a/main/message.c b/main/message.c
index 75450e9..8ca3987 100644
--- a/main/message.c
+++ b/main/message.c
@@ -190,8 +190,22 @@
</synopsis>
<syntax>
<xi:include xpointer="xpointer(/docs/manager[@name='Login']/syntax/parameter[@name='ActionID'])" />
- <parameter name="To" required="true">
- <para>The URI the message is to be sent to.</para>
+ <parameter name="Destination" required="false">
+ <para>A To URI for the message. If Destination is provided, the To
+ parameter can also be supplied and may alter the message based on
+ the specified message technology.</para>
+ <para>For backwards compatibility, if Destination is not provided,
+ the To parameter must be provided and will be used as the message
+ destination.</para>
+ <xi:include xpointer="xpointer(/docs/info[@name='MessageDestinationInfo'])" />
+ </parameter>
+ <parameter name="To" required="false">
+ <para>A To URI for the message if needed for the
+ message technology being used to send this message. This can be a
+ SIP(S) URI, such as <literal>Alice <sip:alice at atlanta.com></literal>,
+ or a string in the format <literal>alice at atlanta.com</literal>.</para>
+ <para>This parameter is required if the Destination parameter is not
+ provided.</para>
<xi:include xpointer="xpointer(/docs/info[@name='MessageToInfo'])" />
</parameter>
<parameter name="From">
@@ -1305,10 +1319,12 @@
static int action_messagesend(struct mansession *s, const struct message *m)
{
- const char *to = ast_strdupa(astman_get_header(m, "To"));
+ const char *destination = astman_get_header(m, "Destination");
+ const char *to = astman_get_header(m, "To");
const char *from = astman_get_header(m, "From");
const char *body = astman_get_header(m, "Body");
const char *base64body = astman_get_header(m, "Base64Body");
+ const char *to_override = NULL;
char base64decoded[1301] = { 0, };
char *tech_name = NULL;
struct ast_variable *vars = NULL;
@@ -1317,9 +1333,16 @@
struct ast_msg *msg;
int res = -1;
- if (ast_strlen_zero(to)) {
- astman_send_error(s, m, "No 'To' address specified.");
- return 0;
+ if (!ast_strlen_zero(destination)) {
+ if (!ast_strlen_zero(to)) {
+ to_override = to;
+ }
+ to = destination;
+ } else {
+ if (ast_strlen_zero(to)) {
+ astman_send_error(s, m, "No 'To' address specified.");
+ return 0;
+ }
}
if (!ast_strlen_zero(base64body)) {
@@ -1351,6 +1374,10 @@
ast_msg_set_body(msg, "%s", body);
+ if (to_override) {
+ ast_string_field_set(msg, to, to_override);
+ }
+
res = msg_tech->msg_send(msg, S_OR(to, ""), S_OR(from, ""));
ast_rwlock_unlock(&msg_techs_lock);
--
To view, visit https://gerrit.asterisk.org/c/asterisk/+/16496
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: 16
Gerrit-Change-Id: I8513168d3e189a9fed88aaab6f5547ccb50d332c
Gerrit-Change-Number: 16496
Gerrit-PatchSet: 1
Gerrit-Owner: Sean Bright <sean at seanbright.com>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20210921/33344a9f/attachment-0001.html>
More information about the asterisk-code-review
mailing list