Module: kamailio Branch: master Commit: f5d7340773b9fb0f69644a6a1187ce5ef8cd55b8 URL: https://github.com/kamailio/kamailio/commit/f5d7340773b9fb0f69644a6a1187ce5e...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: 2021-09-24T12:17:19+02:00
textopsx: exported msg_set_buffer(data) function
- it was available to KEMI
---
Modified: src/modules/textopsx/doc/functions.xml Modified: src/modules/textopsx/textopsx.c
---
Diff: https://github.com/kamailio/kamailio/commit/f5d7340773b9fb0f69644a6a1187ce5e... Patch: https://github.com/kamailio/kamailio/commit/f5d7340773b9fb0f69644a6a1187ce5e...
---
diff --git a/src/modules/textopsx/doc/functions.xml b/src/modules/textopsx/doc/functions.xml index b5a6cac103..3de3a6c8e6 100644 --- a/src/modules/textopsx/doc/functions.xml +++ b/src/modules/textopsx/doc/functions.xml @@ -46,6 +46,34 @@ if(msg_apply_changes()) } } ... +</programlisting> + </example> + </section> + + <section id="textopsx.f.msg_set_buffer"> + <title> + <function moreinfo="none">msg_set_buffer(data)</function> + </title> + <para> + Set the content of the SIP message buffer, replacing the exiting data. + The parameter can contain variables, its value must be a valid SIP + request or reply, a matter of what the old message is. + </para> + <para> + This function can be used from REQUEST_ROUTE or core REPLY_ROUTE. + </para> + <para> + Note: It must be used before the transaction is created in + request_route and not inside the onreply_route[name] executed by tm + module. Also, do not use after resuming a suspended request or reply, + at that moment the transaction is already created. + </para> + <example> + <title><function>msg_set_buffer()</function> usage</title> + <programlisting format="linespecific"> +... +msg_set_buffer("INVITE sip:..."); +... </programlisting> </example> </section> diff --git a/src/modules/textopsx/textopsx.c b/src/modules/textopsx/textopsx.c index a9a60f9ed8..5ddeffa2c7 100644 --- a/src/modules/textopsx/textopsx.c +++ b/src/modules/textopsx/textopsx.c @@ -46,6 +46,7 @@ MODULE_VERSION
static int msg_apply_changes_f(sip_msg_t *msg, char *str1, char *str2); +static int msg_set_buffer_f(sip_msg_t *msg, char *p1data, char *p2);
static int change_reply_status_f(sip_msg_t *, char *, char *); static int change_reply_status_fixup(void **param, int param_no); @@ -121,6 +122,9 @@ static pv_export_t mod_pvs[] = { static cmd_export_t cmds[] = { {"msg_apply_changes", (cmd_function)msg_apply_changes_f, 0, 0, 0, REQUEST_ROUTE | ONREPLY_ROUTE}, + {"msg_set_buffer", (cmd_function)msg_set_buffer_f, 1, + fixup_spve_null, fixup_free_spve_null, + REQUEST_ROUTE | ONREPLY_ROUTE}, {"change_reply_status", change_reply_status_f, 2, change_reply_status_fixup, 0, ONREPLY_ROUTE}, {"change_reply_status_code", change_reply_status_code_f, 1, @@ -242,6 +246,21 @@ static int ki_msg_set_buffer(sip_msg_t *msg, str *obuf) return ki_msg_update_buffer(msg, obuf); }
+/** + * + */ +static int msg_set_buffer_f(sip_msg_t *msg, char *p1data, char *p2) +{ + str data = STR_NULL; + + if(fixup_get_svalue(msg, (gparam_t*)p1data, &data) < 0) { + LM_ERR("could not get string param value\n"); + return -1; + } + + return ki_msg_set_buffer(msg, &data); +} + /** * */