Hi,

So recap'ing the scenario here:

When you get the initial incoming INVITE, you do not send out any branch. All the outbound branches are created via the t_inject, right ? So INVITE come in, nothing, then the REGISTER triggeres a new branch, and this new branch gets replied with 486. And you want to stop the waiting at this point, right ?

Best regards,

Bogdan-Andrei Iancu

OpenSIPS Founder and Developer
  https://www.opensips-solutions.com
OpenSIPS Summit 27-30 Sept 2022, Athens
  https://www.opensips.org/events/Summit-2022Athens/

On 8/12/22 3:12 PM, Ярослав Нападайло via Users wrote:
Hi everybody!

I'm writing script with Push Notification mechanism using TM module and t_wait_for_new_branches() function and EBR.
Here example in docs
https://opensips.org/docs/modules/3.2.x/event_routing.html#idp5576704 <https://opensips.org/docs/modules/3.2.x/event_routing.html#idp5576704>

My  is:

route {
      ...
      t_newtran();
      ....
      create_dialog();
      ...
      t_on_reply("HANDLE_REPLY");
      t_wait_for_new_branches();
      ....
      notify_on_event("E_UL_CONTACT_INSERT", $avp(filter), "fork_call", $var(ttl));
}

onreply_route[HANDLE_REPLY] {
  xlog("L_DBG", "received reply $rs $rr");
  switch($rs) {
    case "486":
      xlog("L_DBG", "wait no more branches DLG_DID=$DLG_did");
      t_wait_no_more_branches();
      t_cancel_branch("a");
      break;
    default:
  }
}

route[fork_call] {
  xlog("L_DBG", "[$ci] user $avp(aor) registered a new contact $avp(uri), injecting");
  t_inject_branches("event");
}

First, I create dialog. Then, call t_wait_for_new_branches() and set notify_on_event() handler. Then I'm waiting for new REGISTERs. When new contacts register to usrloc, I'm injecting received contacts as new branches to current transaction.
I do all things as described in docs.
Now I want to control negative replies from ongoing branches. By default, OS ignores negative replies and continue waiting for new branches. For example, I want to ignore 480, but handle 486.
I try handle 486, calling t_wait_no_more_branches().
I expect that OS will stop waiting for new branches and t_inject_branches  will not add anymore. Also I expect that OS stop PHONY branch, which is created first when calling t_wait_for_new_branches(), and sends final response (486 in my case) to caller.
But in real next things happen:
1. t_wait_no_more_branches() doesn't affect adding new branches. If 1st callee reject call, then 2nd callee register new contact, t_inject_branches() adds new branch all the same 2. If no other branches added, caller hears ringing until FR_INV_TIMEOUT expires. And only when FR_INV_TIMEOUT expires, OS sends final response to caller.

WIDW??

How to stop transaction immeditially when at least one ongoing branch reply 486 code and to wait no more for any branches?
Thx for answers

--
Regards,
Yaroslav Napadilo

_______________________________________________
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