THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.
The following task is now closed:
FS#237 - Kamailio does not handle HTTP Via: headers in requests and responses
User who did this - Daniel-Constantin Mierla (miconda)
Reason for closing: Implemented
Additional comments about closing: Pushed the code to deal with HTTP Via, replacing it with Hia or Sia in order to be ignored.
More information can be found at the following URL:
https://sip-router.org/tracker/index.php?do=details&task_id=237
You are receiving this message because you have requested it from the Flyspray bugtracking system. If you did not expect this message or don't want to receive mails in future, you can change your notification settings at the URL shown above.
Module: kamailio
Branch: master
Commit: dfb34a6516e358023543f2a30664d30ed723e934
URL: https://github.com/kamailio/kamailio/commit/dfb34a6516e358023543f2a30664d30…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2015-01-06T23:41:59+01:00
core: use Sia header name instead of Via for HTTP responses sent out
---
Modified: msg_translator.c
---
Diff: https://github.com/kamailio/kamailio/commit/dfb34a6516e358023543f2a30664d30…
Patch: https://github.com/kamailio/kamailio/commit/dfb34a6516e358023543f2a30664d30…
---
diff --git a/msg_translator.c b/msg_translator.c
index 5e6bb24..5afb739 100644
--- a/msg_translator.c
+++ b/msg_translator.c
@@ -2281,6 +2281,8 @@ char * build_res_buf_from_sip_req( unsigned int code, str *text ,str *new_tag,
char *after_body;
str to_tag;
char *totags;
+ int httpreq;
+ char *pvia;
body = 0;
buf=0;
@@ -2302,6 +2304,8 @@ char * build_res_buf_from_sip_req( unsigned int code, str *text ,str *new_tag,
/*computes the length of the new response buffer*/
len = 0;
+ httpreq = IS_HTTP(msg);
+
/* check if received needs to be added */
if (received_test(msg)) {
if ((received_buf=received_builder(msg,&received_len))==0) {
@@ -2410,6 +2414,8 @@ char * build_res_buf_from_sip_req( unsigned int code, str *text ,str *new_tag,
switch (hdr->type)
{
case HDR_VIA_T:
+ /* if is HTTP, backup start of Via header in response */
+ if(unlikely(httpreq)) pvia = p;
if (hdr==msg->h_via1){
if (rport_buf){
if (msg->via1->rport){ /* delete the old one */
@@ -2443,6 +2449,10 @@ char * build_res_buf_from_sip_req( unsigned int code, str *text ,str *new_tag,
(hdr->body.s+hdr->body.len)-hdr->name.s, msg);
}
append_str( p, CRLF,CRLF_LEN);
+ /* if is HTTP, replace Via with Sia
+ * - HTTP Via format is different than SIP Via
+ */
+ if(unlikely(httpreq)) *pvia = 'S';
break;
case HDR_RECORDROUTE_T:
/* RR only for 1xx and 2xx replies */