<div>HI Daniel.</div><div><br></div>Please find the diff based on kamailio version 3.3.1<div><br></div><div><div>PGA:/mnt/o/kamailio-3.3.1 # diff -u msg_translator.c.orig msg_translator.c</div><div>--- msg_translator.c.orig 2012-09-28 09:41:23.391344100 -0300</div>
<div>+++ msg_translator.c 2012-09-28 05:52:36.056491600 -0300</div><div>@@ -190,7 +190,7 @@</div><div> * resolver = DO_DNS | DO_REV_DNS; if 0 no dns check is made</div><div> * return 0 if equal */</div><div> static int check_via_address(struct ip_addr* ip, str *name,</div>
<div>- unsigned short port, int resolver)</div><div>+ unsigned short port, short proto, int resolver)</div><div> {</div><div> struct hostent* he;</div><div>
int i;</div><div>@@ -229,11 +229,11 @@</div><div> return -1;</div><div> }</div><div><br></div><div>- if (port==0) port=SIP_PORT;</div><div>+ //if (port==0) port=SIP_PORT;</div><div>
if (resolver&DO_DNS){</div><div> DBG("check_via_address: doing dns lookup\n");</div><div> /* try all names ips */</div><div>- he=sip_resolvehost(name, &port, 0); /* don't use naptr */</div>
<div>+ he=sip_resolvehost(name, &port, (char *)&proto); /* don't use naptr */</div><div> if (he && ip->af==he->h_addrtype){</div><div> for(i=0;he && he->h_addr_list[i];i++){</div>
<div> if ( memcmp(&he->h_addr_list[i], ip->u.addr, ip->len)==0)</div><div>@@ -263,7 +263,7 @@</div><div><br></div><div> rcvd=msg->via1->received</div><div> || check_via_address(&msg->rcv.src_ip, &msg->via1->host,</div>
<div>- msg->via1->port, received_dns);</div><div>+ msg->via1->port,msg->via1->proto, received_dns);</div>
<div> return rcvd;</div><div> }</div><div><br></div><br><div class="gmail_quote">On Thu, Sep 27, 2012 at 11:22 AM, Daniel-Constantin Mierla <span dir="ltr"><<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
Can you provide the patch taken with 'diff -u' or 'git diff' -- it
is easier to understand what parts you refer to and were updated.<br>
<br>
Cheers,<br>
Daniel<div><div class="h5"><br>
<br>
<div>On 9/27/12 12:31 AM, Jijo wrote:<br>
</div>
</div></div><blockquote type="cite"><div><div class="h5">Hello,
<div><br>
</div>
<div>I'm observing that Via Header domain name of type SRV is
resolving as DNS A. </div>
<div><br>
</div>
<div>I looked at the code and it does support only A. It is
basically setting to default SIP port
check_via_address which is causing DNS A query.</div>
<div><br>
</div>
<div>Is there any specific reason to do so?</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>I changed the code to support SRV as below and working fine.</div>
<div><br>
</div>
<div>
<div>static int check_via_address(struct ip_addr* ip, str *name,</div>
<div><span style="white-space:pre-wrap"> </span>unsigned
short port, <b><font color="#006600">short proto</font></b>,
int resolver)</div>
<div>{</div>
</div>
<div>:<br>
:<br>
<div><span style="background-color:rgb(255,102,102)"><span style="white-space:pre-wrap"> </span>//if
(port==0) port=SIP_PORT;</span></div>
<div><span style="white-space:pre-wrap"> </span>if
(resolver&DO_DNS){</div>
<div><span style="white-space:pre-wrap"> </span>DBG("check_via_address:
doing dns lookup\n");</div>
<div><span style="white-space:pre-wrap"> </span>/*
try all names ips */</div>
<div><span style="white-space:pre-wrap"> </span>he=sip_resolvehost(name,
&port,<font color="#009900"> <b>(char *) &proto</b></font>);
/* don't use naptr */</div>
<div><span style="white-space:pre-wrap"> </span>if
(he && ip->af==he->h_addrtype){</div>
<div><span style="white-space:pre-wrap"> </span>for(i=0;he
&& he->h_addr_list[i];i++){</div>
<div><span style="white-space:pre-wrap"> </span>if
( memcmp(&he->h_addr_list[i], ip->u.addr,
ip->len)==0)</div>
<div><span style="white-space:pre-wrap"> </span>return
0;</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
<div><span style="white-space:pre-wrap"> </span>}</div>
</div>
<div>:</div>
<div>:</div>
<div>:</div>
<div>}</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div>/* check if IP address in Via != source IP address of
signaling */</div>
<div>int received_test( struct sip_msg *msg )</div>
<div>{</div>
<div><span style="white-space:pre-wrap"> </span>int
rcvd;</div>
<div><br>
</div>
<div><span style="white-space:pre-wrap"> </span>rcvd=msg->via1->received</div>
<div><span style="white-space:pre-wrap"> </span>||
check_via_address(&msg->rcv.src_ip,
&msg->via1->host,</div>
<div><span style="white-space:pre-wrap"> </span>msg->via1->port,<b> <font color="#006600">msg->via1->proto</font></b>, received_dns);</div>
<div><span style="white-space:pre-wrap"> </span>return
rcvd;</div>
<div>}</div>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>Thanks</div>
<div>Jijo</div>
<div><br>
</div>
<br>
<fieldset></fieldset>
<br>
</div></div><pre>_______________________________________________
sr-dev mailing list
<a href="mailto:sr-dev@lists.sip-router.org" target="_blank">sr-dev@lists.sip-router.org</a>
<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><span class="HOEnZb"><font color="#888888">
</font></span></pre><span class="HOEnZb"><font color="#888888">
</font></span></blockquote><span class="HOEnZb"><font color="#888888">
<br>
<pre cols="72">--
Daniel-Constantin Mierla - <a href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
<a href="http://twitter.com/#!/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a>
Kamailio Advanced Training, Berlin, Nov 5-8, 2012 - <a href="http://asipto.com/u/kat" target="_blank">http://asipto.com/u/kat</a>
Kamailio Advanced Training, Miami, USA, Nov 12-14, 2012 - <a href="http://asipto.com/u/katu" target="_blank">http://asipto.com/u/katu</a></pre>
</font></span></div>
</blockquote></div><br></div>