|
@@ -29,6 +29,7 @@
|
|
#include "mem/mem.h"
|
|
#include "mem/mem.h"
|
|
#include "ut.h"
|
|
#include "ut.h"
|
|
#include "re.h"
|
|
#include "re.h"
|
|
|
|
+#include "pvar.h"
|
|
#include "dprint.h"
|
|
#include "dprint.h"
|
|
|
|
|
|
#include "ppcfg.h"
|
|
#include "ppcfg.h"
|
|
@@ -91,6 +92,8 @@ int pp_substdef_add(char *data, int mode)
|
|
char *p;
|
|
char *p;
|
|
str defname;
|
|
str defname;
|
|
str defvalue;
|
|
str defvalue;
|
|
|
|
+ str newval;
|
|
|
|
+ sip_msg_t *fmsg;
|
|
|
|
|
|
if(pp_subst_add(data)<0) {
|
|
if(pp_subst_add(data)<0) {
|
|
LM_ERR("subst rule cannot be added\n");
|
|
LM_ERR("subst rule cannot be added\n");
|
|
@@ -147,6 +150,12 @@ found_repl:
|
|
defvalue.s--;
|
|
defvalue.s--;
|
|
defvalue.len += 2;
|
|
defvalue.len += 2;
|
|
}
|
|
}
|
|
|
|
+ if(memchr(defvalue.s, '$', defvalue.len) != NULL) {
|
|
|
|
+ fmsg = faked_msg_get_next();
|
|
|
|
+ if(pv_eval_str(fmsg, &newval, &defvalue)>=0) {
|
|
|
|
+ defvalue = newval;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
if(pp_define_set(defvalue.len, defvalue.s)<0) {
|
|
if(pp_define_set(defvalue.len, defvalue.s)<0) {
|
|
LM_ERR("cannot set define value\n");
|
|
LM_ERR("cannot set define value\n");
|
|
goto error;
|
|
goto error;
|