Hello Seth,

Earlier this year, there were some important fixes related to set_advertised_address() which solved some memory corruption issues and fixed the IP used when creating multiple branches [1]. Unfortunately, they did not get backported to 1.9, since it was not supported anymore. If upgrading to 1.11 is not a possibility (although we highly recommend you do so), I've backported the patch for 1.9 [2].

[1]: https://github.com/OpenSIPS/opensips/commit/ad92fa6ff6
[2]: https://gist.github.com/liviuchircu/a72478ecd9a40588023d

Best regards,

Liviu Chircu
OpenSIPS Developer
http://www.opensips-solutions.com

On 08/26/2014 01:51 AM, Seth Schultz wrote:
Ra(zvan,

After digging through the source code, I found the line of code causing my issues. In the opensips_1_9 branch in t_msgbuilder.c on line 152 we have

...
*set_hostport(&hp, (is_local(Trans))?0:req);*
via=via_builder(&via_len, Trans->uac[branch].request.dst.send_sock,
&branch_str, 0, Trans->uac[branch].request.dst.proto, &hp );
if (!via){
LM_ERR("no via header got from builder\n");
goto error;
}
*len+= via_len;
...

Would it be incredibly stupid to modify it to always base the via on the reply?

...
*hp.host=&rpl->via1->host;*
*    hp.port=&rpl->via1->port_str;*
    via=via_builder(&via_len, Trans->uac[branch].request.dst.send_sock,
        &branch_str, 0, Trans->uac[branch].request.dst.proto, &hp );
    if (!via){
        LM_ERR("no via header got from builder\n");
        goto error;
    }
    *len+= via_len;
...

After making this modification it does have the correct Via address for all failure ACK replies.

Thanks,
Seth


On Fri, Aug 22, 2014 at 10:26 AM, Seth Schultz <[email protected] <mailto:[email protected]>> wrote:

    Ra(zvan,

    Unfortunately in my setup OpenSIPS is only using a single
    interface 172.16.1.115.  The external IP NATing is handled by the
    firewall, so I can't use force_send_socket, because it would still
    be 172.16.1.115.

    Thanks,
    Seth

    On Fri, Aug 22, 2014 at 5:07 AM, Ra(zvan Crainea
    <[email protected] <mailto:[email protected]>> wrote:

        Hi, Seth!

        So basically you want to change the outgoing interface for the
        second leg of the call, right? Instead of
        record_route_preset() function, have you considered using the
        force_send_socket() function? This forces OpenSIPS to switch
        the interfaces and should change the VIA headers properly
        without any issues. Let me know your answer



        _______________________________________________
        Users mailing list
        [email protected]  <mailto:[email protected]>
        http://lists.opensips.org/cgi-bin/mailman/listinfo/users


        _______________________________________________
        Users mailing list
        [email protected] <mailto:[email protected]>
        http://lists.opensips.org/cgi-bin/mailman/listinfo/users





_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to