Module: sip-router
Branch: master
Commit: 20c436df0c81b38777052b4ba6fb425577f5c707
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=20c436d…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: Wed Sep 26 00:18:49 2012 +0200
registrar(k): some contact attributes were not in $ulc(...)
- ruid, reg-id and instance were not returned by $ulc(...)
---
modules_k/registrar/regpv.c | 33 ++++++++++++++++++++++++++++++++-
1 files changed, 32 insertions(+), 1 deletions(-)
diff --git a/modules_k/registrar/regpv.c b/modules_k/registrar/regpv.c
index bc45f3c..91cfaa2 100644
--- a/modules_k/registrar/regpv.c
+++ b/modules_k/registrar/regpv.c
@@ -258,6 +258,16 @@ int pv_get_ulc(struct sip_msg *msg, pv_param_t *param,
case 17: /* count */
return pv_get_sintval(msg, param, res, rpp->nrc);
break;
+ case 18: /* ruid */
+ return pv_get_strval(msg, param, res, &c->ruid);
+ break;
+ case 19: /* reg-id */
+ return pv_get_uintval(msg, param, res, c->reg_id);
+ break;
+ case 20: /* instance */
+ if(c->instance.len>0)
+ return pv_get_strval(msg, param, res, &c->instance);
+ break;
}
return pv_get_null(msg, param, res);
@@ -341,6 +351,8 @@ int pv_parse_ulc_name(pv_spec_p sp, str *in)
rp->attr = 4;
else if(strncmp(pa.s, "cseq", 4)==0)
rp->attr = 9;
+ else if(strncmp(pa.s, "ruid", 4)==0)
+ rp->attr = 18;
else goto error;
break;
case 5:
@@ -348,6 +360,8 @@ int pv_parse_ulc_name(pv_spec_p sp, str *in)
rp->attr = 10;
else if(strncmp(pa.s, "count", 5)==0)
rp->attr = 17;
+ else if(strncmp(pa.s, "regid", 5)==0)
+ rp->attr = 19;
else goto error;
break;
case 6:
@@ -375,6 +389,8 @@ int pv_parse_ulc_name(pv_spec_p sp, str *in)
rp->attr = 5;
else if(strncmp(pa.s, "modified", 8)==0)
rp->attr = 15;
+ else if(strncmp(pa.s, "instance", 8)==0)
+ rp->attr = 20;
else goto error;
break;
case 10:
@@ -461,7 +477,8 @@ int pv_fetch_contacts(struct sip_msg* msg, char* table, char* uri,
while(ptr)
{
olen = (ptr->c.len + ptr->received.len + ptr->path.len
- + ptr->callid.len + ptr->user_agent.len)*sizeof(char) + ilen;
+ + ptr->callid.len + ptr->user_agent.len + ptr->ruid.len
+ + ptr->instance.len)*sizeof(char) + ilen;
c0 = (ucontact_t*)pkg_malloc(olen);
if(c0==NULL)
{
@@ -506,6 +523,20 @@ int pv_fetch_contacts(struct sip_msg* msg, char* table, char* uri,
c0->user_agent.len = ptr->user_agent.len;
p += c0->user_agent.len;
}
+ if(ptr->ruid.s!=NULL)
+ {
+ c0->ruid.s = p;
+ memcpy(c0->ruid.s, ptr->ruid.s, ptr->ruid.len);
+ c0->ruid.len = ptr->ruid.len;
+ p += c0->ruid.len;
+ }
+ if(ptr->instance.s!=NULL)
+ {
+ c0->instance.s = p;
+ memcpy(c0->instance.s, ptr->instance.s, ptr->instance.len);
+ c0->instance.len = ptr->instance.len;
+ p += c0->instance.len;
+ }
if(ptr0==NULL)
{