Hello,

I am using the dialog module to time out excessively long calls:

   modparam("dialog", "default_timeout", 21600) # 6 hours
   modparam("dialog", "dlg_flag", 2)
   ...
   route {
      ...
      ...
      setflag(2);
      $dlg_ctx(timeout_bye) = 2;
      ...
      ...
      if(!t_relay())
         sl_reply_error();
   }

I have two unrelated questions:

1) Why does $dlg_ctx(timeout_bye) work here? My understanding is that $dlg_ctx(...) is a PV namespace container that exposes some aspect of the allocated dialog tracking structure. The dialog structure is created via a TM->dialog callback triggered by t_relay(); why is it possible to access it prior to that point?

2) The spoofed BYEs that are generated by the proxy with this setting do not show up as sequential requests, nor are catchable in script at all. As a result, BYE events are not written to CDRs with 'acc' and I have no way of knowing when the call actually closed.

What is the most efficient and canonical solution to this problem?

I can think of two:

(a) Define a $dlg_ctx(timeout_route) and have it write a BYE event artificially using acc_db_request().

(b) Loop the BYE request back to the proxy with some sort of differentiating URI parameter or similar that causes it to be dropped instead of forwarded. But this is really nasty.

What is your suggestion?

Thanks,

--
Alex Balashov - Principal
Evariste Systems LLC
1170 Peachtree Street
12th Floor, Suite 1200
Atlanta, GA 30309
Tel: +1-678-954-0670
Fax: +1-404-961-1892
Web: http://www.evaristesys.com/

_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to