Module: sip-router
Branch: pd/msrp
Commit: 774373d3b5eeb067cdaa645f6a0d65238fa62247
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=774373d…
Author: Peter Dunkley <peter.dunkley(a)crocodile-rcs.com>
Committer: Peter Dunkley <peter.dunkley(a)crocodile-rcs.com>
Date: Wed Feb 13 11:00:47 2013 +0000
modules/msrp: Made some PVs available in new msrp:transaction-timeout event_route
- Also added missing break to switch/case
---
modules/msrp/msrp_vars.c | 39 ++++++++++++++++++++++++++-------------
1 files changed, 26 insertions(+), 13 deletions(-)
diff --git a/modules/msrp/msrp_vars.c b/modules/msrp/msrp_vars.c
index fdc277a..43d2fa2 100644
--- a/modules/msrp/msrp_vars.c
+++ b/modules/msrp/msrp_vars.c
@@ -65,6 +65,7 @@ int pv_parse_msrp_name(pv_spec_t *sp, str *in)
else if(strncmp(in->s, "conid", 5)==0)
sp->pvp.pvn.u.isname.name.n = 21;
else goto error;
+ break;
case 6:
if(strncmp(in->s, "method", 6)==0)
sp->pvp.pvn.u.isname.name.n = 6;
@@ -162,11 +163,15 @@ int pv_get_msrp(sip_msg_t *msg, pv_param_t *param, pv_value_t
*res)
s.len = mf->hbody.len;
return pv_get_strval(msg, param, res, &s);
case 5:
- hdr = msrp_get_hdr_by_id(mf, MSRP_HDR_MESSAGE_ID);
- if(hdr==NULL)
- return pv_get_null(msg, param, res);
- s.s = hdr->body.s;
- s.len = hdr->body.len;
+ if (unlikely(mf->req_cache)) {
+ s = mf->req_cache->message_id;
+ } else {
+ hdr = msrp_get_hdr_by_id(mf, MSRP_HDR_MESSAGE_ID);
+ if(hdr==NULL)
+ return pv_get_null(msg, param, res);
+ s.s = hdr->body.s;
+ s.len = hdr->body.len;
+ }
trim(&s);
return pv_get_strval(msg, param, res, &s);
case 6:
@@ -177,13 +182,17 @@ int pv_get_msrp(sip_msg_t *msg, pv_param_t *param, pv_value_t
*res)
case 7:
return pv_get_uintval(msg, param, res, mf->buf.len);
case 8:
- if(msrp_parse_hdr_to_path(mf)<0)
- return pv_get_null(msg, param, res);
- hdr = msrp_get_hdr_by_id(mf, MSRP_HDR_TO_PATH);
- if(hdr==NULL)
- return pv_get_null(msg, param, res);
- sar = (str_array_t*)hdr->parsed.data;
- s = sar->list[0];
+ if (unlikely(mf->req_cache)) {
+ s = mf->req_cache->local_uri;
+ } else {
+ if(msrp_parse_hdr_to_path(mf)<0)
+ return pv_get_null(msg, param, res);
+ hdr = msrp_get_hdr_by_id(mf, MSRP_HDR_TO_PATH);
+ if(hdr==NULL)
+ return pv_get_null(msg, param, res);
+ sar = (str_array_t*)hdr->parsed.data;
+ s = sar->list[0];
+ }
trim(&s);
if(msrp_parse_uri(s.s, s.len, &uri)<0 || uri.session.len<=0)
return pv_get_null(msg, param, res);
@@ -197,7 +206,11 @@ int pv_get_msrp(sip_msg_t *msg, pv_param_t *param, pv_value_t *res)
case 10:
return pv_get_uintval(msg, param, res, mf->mbody.len);
case 11:
- s = mf->fline.transaction;
+ if (unlikely(mf->req_cache)) {
+ s = mf->req_cache->transaction_id;
+ } else {
+ s = mf->fline.transaction;
+ }
trim(&s);
return pv_get_strval(msg, param, res, &s);
case 12: