浏览代码

topoh: don't encode/decode content for local generated messages

- requests generated by kamailio don't have headers that should be
  hidden
- replies to them don't have anything hidden
- update as part of report from FS#390
Daniel-Constantin Mierla 11 年之前
父节点
当前提交
41f12e01b2
共有 1 个文件被更改,包括 20 次插入0 次删除
  1. 20 0
      modules/topoh/topoh_mod.c

+ 20 - 0
modules/topoh/topoh_mod.c

@@ -222,6 +222,13 @@ int th_prepare_msg(sip_msg_t *msg)
 		return 2;
 	}
 
+	/* force 2nd via parsing here - it helps checking it later */
+	if (parse_headers(msg, HDR_VIA2_F, 0)==-1
+		|| (msg->via2==0) || (msg->via2->error!=PARSE_OK))
+	{
+		LM_DBG("no second via in this message \n");
+	}
+
 	if(parse_from_header(msg)<0)
 	{
 		LM_ERR("cannot parse FROM header\n");
@@ -308,6 +315,13 @@ int th_msg_received(void *data)
 		}
 	} else {
 		/* reply */
+		if(msg.via2==0)
+		{
+			/* one Via in received reply -- it is for local generated request
+			 * - nothing to unhide */
+			goto done;
+		}
+
 		th_unmask_via(&msg, &th_cookie_value);
 		th_flip_record_route(&msg, 0);
 		if(th_cookie_value.s[0]=='u')
@@ -371,6 +385,12 @@ int th_msg_sent(void *data)
 		th_del_cookie(&msg);
 	if(msg.first_line.type==SIP_REQUEST)
 	{
+		if(msg.via2==0)
+		{
+			/* one Via in request sent out -- it is local generated
+			 * - nothing to hide */
+			goto done;
+		}
 		direction = (th_cookie_value.s[0]=='u')?1:0; /* upstream/downstram */
 		dialog = (get_to(&msg)->tag_value.len>0)?1:0;
 		local = (th_cookie_value.s[0]!='d'&&th_cookie_value.s[0]!='u')?1:0;