|
@@ -53,7 +53,8 @@ static int pv_get_retcode(struct sip_msg* msg, pv_param_t* p, pv_value_t* res)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-/** register built-in core pvars.
|
|
|
|
|
|
+/**
|
|
|
|
+ * register built-in core pvars.
|
|
* should be called before parsing the config script.
|
|
* should be called before parsing the config script.
|
|
* @return 0 on success
|
|
* @return 0 on success
|
|
*/
|
|
*/
|
|
@@ -62,4 +63,32 @@ int pv_register_core_vars(void)
|
|
return register_pvars_mod("core", core_pvs);
|
|
return register_pvars_mod("core", core_pvs);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ *
|
|
|
|
+ */
|
|
|
|
+int pv_eval_str(sip_msg_t *msg, str *dst, str *src)
|
|
|
|
+{
|
|
|
|
+ pv_elem_t *xmodel=NULL;
|
|
|
|
+ str sval = STR_NULL;
|
|
|
|
+
|
|
|
|
+ if(pv_parse_format(src, &xmodel)<0) {
|
|
|
|
+ LM_ERR("error in parsing src parameter\n");
|
|
|
|
+ return -1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(pv_printf_s(msg, xmodel, &sval)!=0) {
|
|
|
|
+ LM_ERR("cannot eval parsed parameter\n");
|
|
|
|
+ pv_elem_free_all(xmodel);
|
|
|
|
+ goto error;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dst->s = sval.s;
|
|
|
|
+ dst->len = sval.len;
|
|
|
|
+ pv_elem_free_all(xmodel);
|
|
|
|
+
|
|
|
|
+ return 1;
|
|
|
|
+error:
|
|
|
|
+ return -1;
|
|
|
|
+}
|
|
|
|
+
|
|
/* vi: set ts=4 sw=4 tw=79:ai:cindent: */
|
|
/* vi: set ts=4 sw=4 tw=79:ai:cindent: */
|