[SR-Users] Transaction good practices with t_relay t_newtran and t_release

Dirk Teurlings - SIGNET B.V. dteurlings at signet.nl
Thu Apr 30 09:38:10 CEST 2015


Hi,

In our config we don't use presence, but I do have a question about 
transactions.

We're using dialogs as well as transactions in the routing. To keep 
things simplyfied, let's assume we have the following stripped out route 
setup:


request_route {

	if (is_method("CANCEL")) {
                 if (t_check_trans()) {
                         t_relay();
                 }
                 exit;
         }

	# As stated in documentation, this call could stop further
	# routing from here on out
         t_check_trans();

	if (is_method("INVITE")) {
		if (ds_is_from_list()) {
                         setflag(DLG_FLAG);
                 }
                 setflag(FLT_ACC);
         }

	if (lookup("loction") == -1 ) {

		if(load_gws(1)) {
			t_newtran();

			t_on_failure("TFAIL");
		}
	}
}

route[TFAIL] {
	xlog("L_ERR", "Failed setting up transaction");
}



What I'd like to know is when or even if we need to be releasing the 
transaction at some point. From what I understand in the presence 
example I should be releasing a transaction when I use t_newtran, but I 
haven't found any evidence of needing it when working with t_relay or 
t_check_trans.

For example, could it be needed to do a t_release() on a 
dialog_terminated or dialog_end event?

In the above example, would it just be enough to add t_release() to the 
failure route TFAIL?

Further details about how and/or when the transactions are cleaned up 
internally would be greatly appreciated!

-- 
Kind regards,
Dirk Teurlings




More information about the sr-users mailing list