From a420b323cb87fa51f0f2e028449f20979a7e68d0 Mon Sep 17 00:00:00 2001 From: Andreas Granig Date: Tue, 21 Feb 2012 17:48:46 +0000 Subject: [PATCH] Double-check parsed via header. --- modules_k/rtpproxy/rtpproxy_funcs.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/modules_k/rtpproxy/rtpproxy_funcs.c b/modules_k/rtpproxy/rtpproxy_funcs.c index 4ecd94d9c..d04571252 100644 --- a/modules_k/rtpproxy/rtpproxy_funcs.c +++ b/modules_k/rtpproxy/rtpproxy_funcs.c @@ -346,12 +346,19 @@ get_callid(struct sip_msg* _m, str* _cid) } static int -get_via_branch(hdr_field_t *hdr, str* _branch) +get_via_branch(struct sip_msg* msg, hdr_field_t *hdr, str* _branch, int vianum) { struct via_body *via; struct via_param *p; via = (struct via_body*)hdr->parsed; + if(!via) { + if(parse_via_header(msg, vianum, &via) < 0) + return -1; + } + if(!via) + return -1; + for(p = via->param_lst; p; p = p->next) { if(p->name.len == strlen("branch") @@ -371,7 +378,7 @@ get_via1_branch(struct sip_msg* _m, str* _branch) hdr_field_t *hdr; hdr = _m->h_via1; - return get_via_branch(hdr, _branch); + return get_via_branch(_m, hdr, _branch, 1); } int @@ -380,7 +387,7 @@ get_via2_branch(struct sip_msg* _m, str* _branch) hdr_field_t *hdr; hdr = _m->h_via2; - return get_via_branch(hdr, _branch); + return get_via_branch(_m, hdr, _branch, 2); }