Hello,<div><br></div><div>I&#39;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 class="Apple-tab-span" style="white-space:pre">                                </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 class="Apple-tab-span" style="white-space:pre">        </span>//if (port==0) port=SIP_PORT;</span></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (resolver&amp;DO_DNS){</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>DBG(&quot;check_via_address: doing dns lookup\n&quot;);</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>/* try all names ips */</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>he=sip_resolvehost(name, &amp;port,<font color="#009900"> <b>(char *) &amp;proto</b></font>); /* don&#39;t use naptr */</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>if (he &amp;&amp; ip-&gt;af==he-&gt;h_addrtype){</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>for(i=0;he &amp;&amp; he-&gt;h_addr_list[i];i++){</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>if ( memcmp(&amp;he-&gt;h_addr_list[i], ip-&gt;u.addr, ip-&gt;len)==0)</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span>return 0;</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </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 class="Apple-tab-span" style="white-space:pre">        </span>int rcvd;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>rcvd=msg-&gt;via1-&gt;received</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>|| check_via_address(&amp;msg-&gt;rcv.src_ip, &amp;msg-&gt;via1-&gt;host,</div><div><span class="Apple-tab-span" style="white-space:pre">                                                        </span>msg-&gt;via1-&gt;port,<b> <font color="#006600">msg-&gt;via1-&gt;proto</font></b>, received_dns);</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </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>