Module: sip-router Branch: master Commit: d64c1c71e8c688b4e0e2f3c92702f143972ab806 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=d64c1c71...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@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;