From da7da69519b959e7395dad586ff50264b63ccd7f Mon Sep 17 00:00:00 2001 From: Razvan Crainea Date: Tue, 14 Jan 2025 11:39:48 +0200 Subject: [PATCH] sip_msg: drop h_via2 header from sip_msg --- modules/tm/sip_msg.c | 1 - parser/msg_parser.c | 19 ++++++------------- parser/msg_parser.h | 1 - 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/modules/tm/sip_msg.c b/modules/tm/sip_msg.c index df9b5598524..8d54ca62725 100644 --- a/modules/tm/sip_msg.c +++ b/modules/tm/sip_msg.c @@ -664,7 +664,6 @@ struct sip_msg* sip_msg_cloner( struct sip_msg *org_msg, int *sip_msg_len, else if ( !new_msg->via2 ) { LINK_SIBLING_HEADER(h_via1, new_hdr); - new_msg->h_via2 = new_hdr; new_msg->via2 = via_body_cloner( new_msg->buf, org_msg->buf, (struct via_body*)hdr->parsed, &p); new_hdr->parsed = (void*)new_msg->via2; diff --git a/parser/msg_parser.c b/parser/msg_parser.c index a68bec763ca..2c0b5ffcb04 100644 --- a/parser/msg_parser.c +++ b/parser/msg_parser.c @@ -589,20 +589,13 @@ int parse_headers_aux(struct sip_msg* msg, hdr_flags_t flags, int next, int sip_ link_sibling_hdr(h_via1,hf); msg->parsed_flag|=HDR_VIA_F; LM_DBG("via found, flags=%llx\n", (unsigned long long)flags); - if (sip_well_known_parse) { - if (msg->via1==0) { - LM_DBG("this is the first via\n"); - msg->h_via1=hf; - msg->via1=hf->parsed; - if (msg->via1->next){ - msg->via2=msg->via1->next; - msg->parsed_flag|=HDR_VIA2_F; - } - }else if (msg->via2==0){ - msg->h_via2=hf; - msg->via2=hf->parsed; + if (sip_well_known_parse && msg->via1==0) { + LM_DBG("this is the first via\n"); + msg->h_via1=hf; + msg->via1=hf->parsed; + if (msg->via1->next){ + msg->via2=msg->via1->next; msg->parsed_flag|=HDR_VIA2_F; - LM_DBG("parse_headers: this is the second via\n"); } } break; diff --git a/parser/msg_parser.h b/parser/msg_parser.h index 9567594f01c..bdd62162d97 100644 --- a/parser/msg_parser.h +++ b/parser/msg_parser.h @@ -240,7 +240,6 @@ struct sip_msg { * (WARNING: do not deallocate them twice!)*/ struct hdr_field* h_via1; - struct hdr_field* h_via2; struct hdr_field* callid; struct hdr_field* to; struct hdr_field* cseq;