[OpenSIPS-Users] R: R: [OpenSIPS-Devel] next_branch function, NAT and PATH (RFC 3327)
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Fri May 22 11:59:57 CEST 2009
Hi Mauro,
Just to clarify for the list - the problem seams to be a bug (or an
miss) in the serialize branches engine - it does not store the received
and path information.
I already open a bug report about this -
https://sourceforge.net/tracker/?func=detail&aid=2795294&group_id=232389&atid=1086410
Thanks and regards,
Bogdan
Mauro Davi' wrote:
> Sorry, there is a mistake...
>
> If all contacts have the same q-value....
>
> -----Messaggio originale-----
> Da: users-bounces at lists.opensips.org [mailto:users-bounces at lists.opensips.org] Per conto di Mauro Davi'
> Inviato: lunedì 18 maggio 2009 10:25
> A: Bogdan-Andrei Iancu
> Cc: users at lists.opensips.org
> Oggetto: [OpenSIPS-Users] R: [OpenSIPS-Devel] next_branch function,NAT and PATH (RFC 3327)
>
> Hi Bogdan,
>
> below the piece of code that handle a serial forking call to more than
> one contact.
> The idea is to search on a DB a list of contact to add associated with a
> sip uri.
> For example when I call sip:serial at domain.com I add 3 contacts:
>
> User1 at domain.com
> User2 at domain.com
> User3 at domain.com
>
> I call the append_branch() function followed by a lookup function (to
> resolve the real IP address.
>
> If all the contacts have the same IP address, all goes fine, otherwise
> the call after the first one goes wrong because the outbound proxy isn't
> set.
> I'm using the opensips version 1.5.1.
>
> Loadmodule "registrar.so"
>
> modparam("registrar", "use_path", 1)
> modparam("registrar", "path_mode", 0)
> modparam("registrar", "path_use_received", 1)
>
> avp_db_query("SELECT count(*) FROM hunt_group
> WHERE username = '$oU' and domain='$od'","$avp(s:hg_row_count)");
> if($avp(s:hg_row_count)!=0)
> {
> avp_db_query("SELECT id,domain FROM
> hunt_group WHERE username = '$oU' and
> domain='$od'","$avp(s:hg_id);$avp(s:hg_domain)");
> xlog("L_INFO","Id <$avp(s:hg_id)>,
> domain<$avp(s:hg_domain)>\n");
> route(11);
> avp_db_query("SELECT count(*) FROM
> hunt_group_detail WHERE hg_id = $avp(s:hg_id)","$avp(s:hgd_row_count)");
> if($avp(s:hgd_row_count)!=0)
> {
> avp_db_query("SELECT
> s.username,h.q_value FROM subscriber s,hunt_group_detail h WHERE
> s.id=h.uuid AND hg_id = $avp(s:hg_id) ORDER BY h.q_value
> ASC","$avp(s:hgd_username);$avp(s:qvalue)");
> $var(i)=0;
> $var(append_branch)=0;
> xlog("L_INFO","CHECK Number of
> hunt group users <$avp(s:hgd_row_count)>\n");
> while ($var(i) <
> $avp(s:hgd_row_count)) {
> $var(sip_address) =
> "sip:" + $(avp(s:hgd_username)[$var(i)]) + "@" + $avp(s:hg_domain);
> $avp(s:q_value) = "0." +
> $(avp(s:qvalue)[$var(i)]);
> xlog("L_INFO","Try to
> add <$var(sip_address)> URI with qvalue <$avp(s:q_value)>\n");
> if
> (registered("location","$var(sip_address)")) {
> if
> ($var(append_branch)!=0) {
>
> append_branch();
> }
>
> $var(append_branch) = 1;
> $ru =
> $var(sip_address);
>
> xlog("L_INFO","Adding <$var(sip_address)> URI with qvalue
> <$avp(s:q_value)>\n");
>
> lookup("location");
> }
> $var(i) = $var(i) + 1;
> }
> xlog("L_INFO","CHECK
> serialize_branches\n");
> serialize_branches(1);
> setflag(10);
> }
> t_on_failure(3);
> t_relay();
> exit;
> }
>
>
> failure_route[3]
> {
> if (t_was_cancelled()) {
> exit();
> }
> if (isflagset(10)) {
> if
> (t_check_status("4[0-9][0-9]|5[0-9][0-9]|6[0-9][0-9]")) {
> if (next_branches()) {
> t_on_failure(3);
> t_relay();
> } else {
> xlog("L_INFO", "Service Unavailable -
> M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
> route(11);
> $avp(s:status_code)="503";
> acc_db_request("Service Unavailable",
> "acc");
> }
> }
> }
> }
>
> Regards,
> MD
>
> -----Messaggio originale-----
> Da: Bogdan-Andrei Iancu [mailto:bogdan at voice-system.ro]
> Inviato: sabato 16 maggio 2009 09:15
> A: Mauro Davi'
> Cc: users at lists.opensips.org
> Oggetto: Re: [OpenSIPS-Devel] next_branch function, NAT and PATH (RFC
> 3327)
>
> Hi Mauro,
>
> The serialize_branches() and next_branch() should push the path and
> received field in the next serial branches - could you post the relevant
>
> part of the script where you do use these 2 functions (also what version
>
> on opensips are you using) ?
>
> Regards,
> Bogdan
>
> Mauro Davi' wrote:
>
>> Hi All,
>>
>> I'm using a SIP Server connected to a SIP Proxy (load balancer)
>>
>> When a client behind NAT is connected to the SIP flatform all works
>> fine, except one issue:
>>
>> If I call an AOR via parallel fork all goes fine...
>>
>> But if I use a serial forking, when I call the next_branch function to
>>
>
>
>> handle a serial forking the INVITE from the server isn't sent to the
>> SIP Proxy (the outbound proxy defined in the PATH HF of the REGISTER).
>>
>> It seems that also the received parameter isn't used... The INVITE go
>> direct to the private IP of the client behind NAT...
>>
>> It is a mistake in my opensips configuration or it is a real BUG...
>>
>> Could anyone give me a suggestion?
>>
>> Thanks in advance
>>
>> MD
>>
>>
>>
> ------------------------------------------------------------------------
>
>> _______________________________________________
>> Devel mailing list
>> Devel at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/devel
>>
>>
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
More information about the Users
mailing list