Table of Contents
t_cancel_branches(which)
t_cancel_callid(callid, cseq, flag [, rcode])
t_reply_callid(callid, cseq, code, reason)
t_flush_flags()
t_flush_xflags()
t_is_failure_route()
t_is_branch_route()
t_is_reply_route()
t_is_request_route()
t_suspend()
t_continue(tindex, tlabel, rtname)
t_drop([rcode])
t_reuse_branch()
t_precheck_trans()
List of Examples
precheck_trans
(int)t_cancel_branches
usaget_cancel_callid
usaget_reply_callid
usaget_flush_flags
usaget_flush_xflags
usaget_is_failure_route
usaget_is_branch_route
usaget_is_reply_route
usaget_is_request_route
usaget_suspend
usaget_continue
usaget_drop
usaget_reuse_branch
usaget_precheck_trans
usageTable of Contents
t_cancel_branches(which)
t_cancel_callid(callid, cseq, flag [, rcode])
t_reply_callid(callid, cseq, code, reason)
t_flush_flags()
t_flush_xflags()
t_is_failure_route()
t_is_branch_route()
t_is_reply_route()
t_is_request_route()
t_suspend()
t_continue(tindex, tlabel, rtname)
t_drop([rcode])
t_reuse_branch()
t_precheck_trans()
This module collects extensions from Kamailio TM module.
Kamailio TM (Transaction Management) module documentation is available at: https://www.kamailio.org/docs/modules/stable/modules/tm.html
The following modules must be loaded before this module:
tm - transaction management.
Enable/disable transaction pre-check via t_precheck_trans() function. If set to 0, the internal structures are not created at startup and the function will return false always.
Default value is 1 (enabled).
Cancel branches of an active SIP transaction. The function can be called for a SIP reply that will identify the current branch.
Parameter can be:.
all - cancel all branches.
others - cancel all branches but the current one.
this - cancel current branch.
This function can be used in ONREPLY_ROUTE.
Example 1.2. t_cancel_branches
usage
... if (t_cancel_branches("all")) { xlog("cancelled all branches\n"); } ...
Cancel first INVITE transaction identified by callid and cseq. It sets the flag if the value is greater than zero
Parameters:.
callid - call-id value.
cseq - cseq number.
flag - index of the flag to set.
rcode - code to be added as cause attribute in Reason header for generated CANCEL request. This parameter is optional.
This function can be used in ANY_ROUTE.
Example 1.3. t_cancel_callid
usage
... if (t_cancel_callid("123qaz", "5", "22")) { xlog("transaction cancelled\n"); } ... if (t_cancel_callid("123qaz", "5", "22", "200")) { xlog("transaction cancelled with [Reason: cause=200]\n"); } ...
Send reply to first transaction identified by callid and cseq.
Parameters:.
callid - call-id value.
cseq - cseq number.
code - reply code.
reason - reply reason.
This function can be used in ANY_ROUTE.
Example 1.4. t_reply_callid
usage
... if (t_reply_callid("123qaz", "5", "458", "Replied remotely")) { xlog("transaction replied\n"); } ...
Flush the flags from current SIP message into the already created transaction. It makes sense only in routing block if the transaction was created via t_newtran() and the flags have been altered since.
It is not needed to execute this function when using t_relay() (or similar tm relay functions, flags are synchronized automatically in that case).
This function can be used from ANY_ROUTE .
Flush the extended flags from current SIP message into the already created transaction. It makes sense only in routing block if the transaction was created via t_newtran() and the extended flags have been altered since.
It is not needed to execute this function when using t_relay() (or similar tm relay functions, xflags are synchronized automatically in that case).
This function can be used from ANY_ROUTE .
Returns true if the top-executed route block is failure_route.
This function can be used from ANY_ROUTE .
Example 1.7. t_is_failure_route
usage
... failure_route[xyz] { route(abc); } route[abc] { if(t_is_failure_route()) { ... } } ...
Returns true if the top-executed route block is branch_route.
This function can be used from ANY_ROUTE .
Example 1.8. t_is_branch_route
usage
... branch_route[xyz] { route(abc); } route[abc] { if(t_is_branch_route()) { ... } } ...
Returns true if the top-executed route block is reply_route.
This function can be used from ANY_ROUTE .
Example 1.9. t_is_reply_route
usage
... reply_route[xyz] { route(abc); } route[abc] { if(t_is_reply_route()) { ... } } ...
Returns true if the top-executed route block is request_route.
This function can be used from ANY_ROUTE .
Example 1.10. t_is_request_route
usage
... request_route[xyz] { route(abc); } route[abc] { if(t_is_request_route()) { ... } } ...
Suspend the execution of SIP request in a transaction. If transaction was not created yet, it is created by this function. Returns true in case of success and internal transaction index and label are available via $T(id_index) and $T(id_label).
This function can be used from ANY_ROUTE .
Example 1.11. t_suspend
usage
... if(t_suspend()) { xlog("processing suspended in transaction [$T(id_index):$T(id_label)]\n"); exit; } ...
Continue the execution of the transaction identified by tindex and tlabel with the actions defined in route[rtname].
Parameters:.
tindex - internal index of transaction. Can be an integer or a pseudo-variable.
tlabel - internal label of transaction. Can be an integer or a pseudo-variable.
rtname - the name of the route block to execute. Can be a static string value or a dynamic string with pseudo-variables.
Important note: the route[rtname] is executed in the context of a failure (same behaviour for functions as they were used in a failure_route block).
This function can be used in ANY_ROUTE.
Example 1.12. t_continue
usage
... t_continue('123', '456', 'MYROUTE'); ... route[MYROUTE] { xlog("executed by t continue\n"); ... } ...
Drops the transaction with response code (500 default).
Parameters:.
rcode - response code to set in uas status.
This function can be used in ANY_ROUTE.
Example 1.13. t_drop
usage
... route[MYREQ] { ... if (!t_newtran()) { xlog("L_ERROR", "$ci|log|failed to create transaction\n"); drop; } t_on_failure("TR_ERROR"); t_on_reply("TR_OK"); t_relay(); } failure_route[TR_ERROR] { xlog("L_INFO", "$ci|log|failed $T_reply_code $T_reply_reason\n"); t_drop(); } onreply_route[TR_OK] { xlog("L_INFO", "$ci|log|checking transaction result\n"); if(status=~"60[0-9]") { t_drop(); } ... } ...
Creates new "main" branch by making copy of branch-failure branch. Currently the following branch attributes are copied from branch-failure branch: request-uri, ruid, path, instance, and branch flags.
This function can be used from tm:branch-failure event_route.
Example 1.14. t_reuse_branch
usage
... event_route [tm:branch-failure:contact] { t_reuse_branch(); setbflag(10); t_relay(); exit; } ...
Check if current processed message is handled by other process. This function is useful to catch retransmissions before transaction is created. The function returns true if the request is handled by another process.
Note that ACK and CANCEL requests are not tracked by this function, the return code being false for them.
This function can be used from REQUEST_ROUTE .
Example 1.15. t_precheck_trans
usage
... # handle retransmissions if(t_precheck_trans()) { t_check_trans(); exit; } t_check_trans(); ...
$T_branch_idx
$T_reply_code
$T_reply_reason
$T_reply_last
$T_req(pv)
$T_rpl(pv)
$T_reply_ruid
$T_branch(name)
$T_inv(pv)
$T(name)
Exported pseudo-variables are documented at https://www.kamailio.org/wikidocs/.
Exported statistics are listed in the next sections. These statistics cannot be reset (see counters module for alternative).