struct subst_expr *seMedia;char *pattern; asprintf(&pattern, "/m=audio ([0-9]{0,5})/m=audio %s/", _host_port.s);str *subst;// do other stuff
subst = (str *) pkg_malloc(sizeof(str));
subst->s = pattern;
subst->len = strlen(pattern);
seMedia = subst_parser(subst);
int count = 0;
str *tmpBody;
char const *oldBody = (char const *) msg->body;
tmpBody = subst_str(oldBody, msg, seMedia, &count);
if (count > 0) {
Thanks a lot. I am sorry I didn't code with pointers quite a long time so I need to refresh my knowledge a bit :)But unfortunately it was not the main problem.In Kamailio log I am getting something like this:0(17809) ERROR: <core> [re.c:181]: parse_repl(): subst_parser: bad specifier in replace part /$1 5060/gmI think, that problem is on this line https://gist.github.com/ivanbarlog/1b552b57e89bf4670872#file-test-c-L5 where I am trying to use $1 as a placeholder for first matched group.I also tried it without it - just replace `m=audio` (not m=*) but it also didn't worked.I am also not sure if I am correctly re-transmitting updated SIP message. I looked at other modules which perform the same action and I tried to inspire with their code but unfortunately it's not working.Could you please review this code sample https://gist.github.com/ivanbarlog/4040ae5b735386a88ea0 ?Or maybe if you can point me to some resource where I can read more about it. Also it would be great if there was some tutorial for developing modules.Thanks for helpOn Wed, Mar 11, 2015 at 7:20 PM, Daniel-Constantin Mierla <miconda@gmail.com> wrote:Hello,
at least one problem is the next line in your code:
subst->len = sizeof(pattern);
should be:
subst->len = strlen(pattern);
Because patter is declared as 'char*', sizeof returns 4 or 8 (if 32b or 64b architecture).
Try with that change and see how far it goes.
Cheers,
Daniel
On 11/03/15 00:43, Cockhootec Yahrabee wrote:
Hi guys,I am trying to 'search&replace' some patterns in message body but unfortunately with no result (but bunch of errors).
First of all I am trying to perform regex substitution as one that can be seen at https://regex101.com/r/vF1kZ7/1
Since I have regular expression I am trying to convert it so it will work with `sub_str` function from re.h
Here is my attempt: https://gist.github.com/ivanbarlog/1b552b57e89bf4670872#file-test-c-L12
I had quite lot of errors but last error I am getting is that `subst_parser` cannot find separator https://github.com/kamailio/kamailio/blob/master/re.c#L240
Since the `struct subst_expr` is not parsed right the next error is segfault in `subst_str` function.
If someone can explain me how exactly I should use `subst_str` function with my regex I'll be really grateful. Little example code would be also great.
Thanks in advance
_______________________________________________ sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
-- Daniel-Constantin Mierla http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda Kamailio World Conference, May 27-29, 2015 Berlin, Germany - http://www.kamailioworld.com