Module: sip-router
Branch: master
Commit: d64c1c71e8c688b4e0e2f3c92702f143972ab806
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=d64c1c7…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: Wed Jun 3 12:11:27 2009 +0300
core: added shortcut to fixed value in fparam_t
- required for PVAR fixups in K modules
---
mod_fix.c | 2 +-
sr_module.c | 3 +++
sr_module.h | 7 ++++---
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/mod_fix.c b/mod_fix.c
index ccd3744..a228e16 100644
--- a/mod_fix.c
+++ b/mod_fix.c
@@ -100,7 +100,7 @@ int fixup_regexpNL_none(void** param, int param_no); /* textops */
int ret; \
if ((ret=fixup_fp_##suffix (param, param_no))!=0) \
return ret; \
- *param=&((fparam_t*)*param)->v; \
+ *param=((fparam_t*)*param)->fixed; \
return 0; \
} \
int fixup_free_##suffix (void** param, int param_no) \
diff --git a/sr_module.c b/sr_module.c
index 81ef9b3..5220427 100644
--- a/sr_module.c
+++ b/sr_module.c
@@ -1142,6 +1142,7 @@ int fix_param(int type, void** param)
p->v.pvs=0;
goto error;
}
+ p->fixed = p->v.pvs;
break;
case FPARAM_PVE:
name.s = (char*)*param;
@@ -1154,6 +1155,8 @@ int fix_param(int type, void** param)
}
p->type = type;
+ if(p->fixed==NULL)
+ p->fixed = &p->v;
*param = (void*)p;
return 0;
diff --git a/sr_module.h b/sr_module.h
index bdf64de..0b1d74b 100644
--- a/sr_module.h
+++ b/sr_module.h
@@ -252,9 +252,9 @@ enum {
* Function parameter
*/
typedef struct fparam {
- char* orig; /* The original value */
- int type; /* Type of parameter */
- union {
+ char* orig; /* The original value */
+ int type; /* Type of parameter */
+ union {
char* asciiz; /* Zero terminated ASCII string */
struct _str str; /* pointer/len string */
int i; /* Integer value */
@@ -265,6 +265,7 @@ typedef struct fparam {
pv_spec_t* pvs; /* kamailo pseudo-vars */
pv_elem_t* pve; /* kamailo pseudo-vars in a string */
} v;
+ void *fixed;
} fparam_t;