diff --git a/src/modules/tm/README b/src/modules/tm/README index 39ead1bf6bb..98e3b9d6fd8 100644 --- a/src/modules/tm/README +++ b/src/modules/tm/README @@ -206,88 +206,89 @@ Daniel-Constantin Mierla 1.22. Set cancel_b_method parameter 1.23. Set reparse_on_dns_failover parameter 1.24. Set on_sl_reply parameter - 1.25. Set contacts_avp parameter - 1.26. Set contact_flows_avp parameter - 1.27. Set fr_timer_avp parameter - 1.28. Set fr_inv_timer_avp parameter - 1.29. Set unmatched_cancel parameter - 1.30. Set ruri_matching parameter - 1.31. Set via1_matching parameter - 1.32. Set callid_matching parameter - 1.33. Set callid_cseq_matching parameter - 1.34. Set pass_provisional_replies parameter - 1.35. Set default_code parameter - 1.36. Set default_reason parameter - 1.37. Set disable_6xx_block parameter - 1.38. Set local_ack_mode parameter - 1.39. Set failure_reply_mode parameter - 1.40. Set faked_reply_prio parameter - 1.41. Set local_cancel_reason parameter - 1.42. Set e2e_cancel_reason parameter - 1.43. Set remap_503_500 parameter - 1.44. Set failure_exec_mode parameter - 1.45. Set dns_reuse_rcv_socket parameter - 1.46. Set xavp_contact parameter - 1.47. Set event_callback parameter - 1.48. Set event_callback_lres_sent parameter - 1.49. Set relay_100 parameter - 1.50. rich_redirect example - 1.51. Set exec_time_check parameter - 1.52. Set reply_relay_mode parameter - 1.53. enable_uac_fr example - 1.54. Set the “failover_reply_codes” parameter - 1.55. t_relay usage - 1.56. t_relay_to_udp usage - 1.57. t_on_failure usage - 1.58. t_on_branch_failure usage - 1.59. t_on_reply usage - 1.60. t_on_branch usage - 1.61. t_newtran usage - 1.62. t_reply usage - 1.63. t_send_reply usage - 1.64. t_lookup_request usage - 1.65. t_retransmit_reply usage - 1.66. t_release usage - 1.67. t_forward_nonack usage - 1.68. t_set_fr usage - 1.69. t_reset_fr usage - 1.70. t_set_max_lifetime usage - 1.71. t_reset_max_lifetime usage - 1.72. t_set_retr usage - 1.73. t_reset_retr usage - 1.74. t_set_auto_inv_100 usage - 1.75. t_branch_timeout usage - 1.76. t_branch_replied usage - 1.77. t_any_timeout usage - 1.78. t_any_replied usage - 1.79. t_grep_status usage - 1.80. t_is_canceled usage - 1.81. t_is_expired usage - 1.82. t_relay_cancel usage - 1.83. t_lookup_cancel usage - 1.84. t_drop_replies() usage - 1.85. t_save_lumps() usage - 1.86. t_load_contacts usage - 1.87. t_next_contacts usage - 1.88. t_next_contact_flow usage - 1.89. t_check_status usage - 1.90. t_check_trans usage - 1.91. t_set_disable_6xx usage - 1.92. t_set_disable_failover usage - 1.93. t_set_disable_internal_reply usage - 1.94. t_replicate usage - 1.95. t_relay_to usage - 1.96. t_set_no_e2e_cancel_reason usage - 1.97. t_replicate usage - 1.98. t_use_uac_headers usage - 1.99. t_is_retr_async_reply usage - 1.100. t_uac_send usage - 1.101. t_get_status_code usage - 1.102. t_clean usage - 1.103. t_exists usage - 1.104. event_route[tm:branch-failure:id] usage - 1.105. event_route[tm:local-request] usage - 1.106. event_route[tm:local-response] usage + 1.25. Set on_sl_reply parameter (KEMI javascript) + 1.26. Set contacts_avp parameter + 1.27. Set contact_flows_avp parameter + 1.28. Set fr_timer_avp parameter + 1.29. Set fr_inv_timer_avp parameter + 1.30. Set unmatched_cancel parameter + 1.31. Set ruri_matching parameter + 1.32. Set via1_matching parameter + 1.33. Set callid_matching parameter + 1.34. Set callid_cseq_matching parameter + 1.35. Set pass_provisional_replies parameter + 1.36. Set default_code parameter + 1.37. Set default_reason parameter + 1.38. Set disable_6xx_block parameter + 1.39. Set local_ack_mode parameter + 1.40. Set failure_reply_mode parameter + 1.41. Set faked_reply_prio parameter + 1.42. Set local_cancel_reason parameter + 1.43. Set e2e_cancel_reason parameter + 1.44. Set remap_503_500 parameter + 1.45. Set failure_exec_mode parameter + 1.46. Set dns_reuse_rcv_socket parameter + 1.47. Set xavp_contact parameter + 1.48. Set event_callback parameter + 1.49. Set event_callback_lres_sent parameter + 1.50. Set relay_100 parameter + 1.51. rich_redirect example + 1.52. Set exec_time_check parameter + 1.53. Set reply_relay_mode parameter + 1.54. enable_uac_fr example + 1.55. Set the “failover_reply_codes” parameter + 1.56. t_relay usage + 1.57. t_relay_to_udp usage + 1.58. t_on_failure usage + 1.59. t_on_branch_failure usage + 1.60. t_on_reply usage + 1.61. t_on_branch usage + 1.62. t_newtran usage + 1.63. t_reply usage + 1.64. t_send_reply usage + 1.65. t_lookup_request usage + 1.66. t_retransmit_reply usage + 1.67. t_release usage + 1.68. t_forward_nonack usage + 1.69. t_set_fr usage + 1.70. t_reset_fr usage + 1.71. t_set_max_lifetime usage + 1.72. t_reset_max_lifetime usage + 1.73. t_set_retr usage + 1.74. t_reset_retr usage + 1.75. t_set_auto_inv_100 usage + 1.76. t_branch_timeout usage + 1.77. t_branch_replied usage + 1.78. t_any_timeout usage + 1.79. t_any_replied usage + 1.80. t_grep_status usage + 1.81. t_is_canceled usage + 1.82. t_is_expired usage + 1.83. t_relay_cancel usage + 1.84. t_lookup_cancel usage + 1.85. t_drop_replies() usage + 1.86. t_save_lumps() usage + 1.87. t_load_contacts usage + 1.88. t_next_contacts usage + 1.89. t_next_contact_flow usage + 1.90. t_check_status usage + 1.91. t_check_trans usage + 1.92. t_set_disable_6xx usage + 1.93. t_set_disable_failover usage + 1.94. t_set_disable_internal_reply usage + 1.95. t_replicate usage + 1.96. t_relay_to usage + 1.97. t_set_no_e2e_cancel_reason usage + 1.98. t_replicate usage + 1.99. t_use_uac_headers usage + 1.100. t_is_retr_async_reply usage + 1.101. t_uac_send usage + 1.102. t_get_status_code usage + 1.103. t_clean usage + 1.104. t_exists usage + 1.105. event_route[tm:branch-failure:id] usage + 1.106. event_route[tm:local-request] usage + 1.107. event_route[tm:local-response] usage Chapter 1. Admin Guide @@ -1197,7 +1198,8 @@ modparam("tm", "reparse_on_dns_failover", 0) drop is executed (or it returns 0). If KEMI is used, the parameter has to be the KEMI function name, which - receives a string parameter with the event name. + receives a string parameter with the event name, respectively + "on_sl_reply". Example 1.24. Set on_sl_reply parameter ... @@ -1209,6 +1211,17 @@ onreply_route["stateless_replies"] { return 0; } + Example 1.25. Set on_sl_reply parameter (KEMI javascript) +... +modparam("tm", "on_sl_reply", "ksr_slreply") +... +-- event callback function implemented in javascript +function ksr_slreply(evname) { + # the evname is set to "on_sl_reply" + # do not allow stateless replies to be forwarded + KSR.x.drop(); +} + 3.25. contacts_avp (string) This is the name of an XAVP that the t_load_contacts() function uses to @@ -1218,7 +1231,7 @@ onreply_route["stateless_replies"] { Default value is "NULL" (t_load_contacts()/t_next_contacts() functions are disabled). - Example 1.25. Set contacts_avp parameter + Example 1.26. Set contacts_avp parameter ... modparam("tm", "contacts_avp", "tm_contacts") ... @@ -1233,7 +1246,7 @@ modparam("tm", "contacts_avp", "tm_contacts") Default value is "NULL". This parameter MUST be set if variable contacts_avp is set. - Example 1.26. Set contact_flows_avp parameter + Example 1.27. Set contact_flows_avp parameter ... modparam("tm", "contact_flows_avp", "tm_contact_flows") ... @@ -1263,7 +1276,7 @@ Note the parameter must be the name of an AVP in pseudo-variable format: $avp(name). In SER compatibility mode it must be just AVP name. - Example 1.27. Set fr_timer_avp parameter + Example 1.28. Set fr_timer_avp parameter ... # Kamailio mode modparam("tm", "fr_timer_avp", "$avp(i:708)") @@ -1297,7 +1310,7 @@ Note the parameter must be the name of an AVP in pseudo-variable format: $avp(name). In SER compatibility mode it must by just AVP name. - Example 1.28. Set fr_inv_timer_avp parameter + Example 1.29. Set fr_inv_timer_avp parameter ... # Kamailio mode modparam("tm", "fr_inv_timer_avp", "$avp(my_fr_inv_timer)") @@ -1320,7 +1333,7 @@ modparam("tm", "fr_inv_timer_avp", "my_fr_inv_timer") Default value is 0. - Example 1.29. Set unmatched_cancel parameter + Example 1.30. Set unmatched_cancel parameter ... modparam("tm", "unmatched_cancel", 2) ... @@ -1339,7 +1352,7 @@ modparam("tm", "unmatched_cancel", 2) Can be set at runtime, e.g.: $ kamcmd cfg.set_now_int tm ruri_matching 0 - Example 1.30. Set ruri_matching parameter + Example 1.31. Set ruri_matching parameter ... modparam("tm", "ruri_matching", 1) ... @@ -1358,7 +1371,7 @@ modparam("tm", "ruri_matching", 1) Can be set at runtime, e.g.: $ kamcmd cfg.set_now_int tm via1_matching 0 - Example 1.31. Set via1_matching parameter + Example 1.32. Set via1_matching parameter ... modparam("tm", "via1_matching", 1) ... @@ -1379,7 +1392,7 @@ modparam("tm", "via1_matching", 1) Can be set at runtime, e.g.: $ kamcmd cfg.set_now_int tm callid_matching 0 - Example 1.32. Set callid_matching parameter + Example 1.33. Set callid_matching parameter ... modparam("tm", "callid_matching", 1) ... @@ -1392,7 +1405,7 @@ modparam("tm", "callid_matching", 1) Default value is 0. - Example 1.33. Set callid_cseq_matching parameter + Example 1.34. Set callid_cseq_matching parameter ... modparam("tm", "callid_cseq_matching", 0) ... @@ -1409,7 +1422,7 @@ kamcmd cfg.set_now_int tm callid_cseq_matching 1 Can be set at runtime, e.g.: $ kamcmd cfg.set_now_int tm pass_provisional_replies 1 - Example 1.34. Set pass_provisional_replies parameter + Example 1.35. Set pass_provisional_replies parameter ... modparam("tm", "pass_provisional_replies", 1) ... @@ -1424,7 +1437,7 @@ modparam("tm", "pass_provisional_replies", 1) Can be set at runtime, e.g.: $ kamcmd cfg.set_now_int tm default_code 505 - Example 1.35. Set default_code parameter + Example 1.36. Set default_code parameter ... modparam("tm", "default_code", 501) ... @@ -1439,7 +1452,7 @@ modparam("tm", "default_code", 501) Can be set at runtime, e.g.: $ kamcmd cfg.set_now_string tm default_reason "Unknown error" - Example 1.36. Set default_reason parameter + Example 1.37. Set default_reason parameter ... modparam("tm", "default_reason", "Unknown reason") ... @@ -1463,7 +1476,7 @@ modparam("tm", "default_reason", "Unknown reason") See also: t_set_disable_6xx(). - Example 1.37. Set disable_6xx_block parameter + Example 1.38. Set disable_6xx_block parameter ... modparam("tm", "disable_6xx_block", 1) ... @@ -1493,7 +1506,7 @@ Note Can be set at runtime, e.g.: $ kamcmd cfg.set_now_int tm local_ack_mode 0 - Example 1.38. Set local_ack_mode parameter + Example 1.39. Set local_ack_mode parameter ... modparam("tm", "local_ack_mode", 1) ... @@ -1530,7 +1543,7 @@ modparam("tm", "local_ack_mode", 1) The default value is 3. - Example 1.39. Set failure_reply_mode parameter + Example 1.40. Set failure_reply_mode parameter ... modparam("tm", "failure_reply_mode", 0) ... @@ -1553,7 +1566,7 @@ modparam("tm", "failure_reply_mode", 0) To let received replies win from a locally generated 408, set this value to 2000. - Example 1.40. Set faked_reply_prio parameter + Example 1.41. Set faked_reply_prio parameter ... modparam("tm", "faked_reply_prio", 2000) ... @@ -1571,7 +1584,7 @@ modparam("tm", "faked_reply_prio", 2000) See also: e2e_cancel_reason. - Example 1.41. Set local_cancel_reason parameter + Example 1.42. Set local_cancel_reason parameter ... modparam("tm", "local_cancel_reason", 0) ... @@ -1589,7 +1602,7 @@ modparam("tm", "local_cancel_reason", 0) See also: t_set_no_e2e_cancel_reason() and local_cancel_reason. - Example 1.42. Set e2e_cancel_reason parameter + Example 1.43. Set e2e_cancel_reason parameter ... modparam("tm", "e2e_cancel_reason", 0) ... @@ -1604,7 +1617,7 @@ modparam("tm", "e2e_cancel_reason", 0) Default value is 1 (enabled). - Example 1.43. Set remap_503_500 parameter + Example 1.44. Set remap_503_500 parameter ... modparam("tm", "remap_503_500", 0) ... @@ -1617,7 +1630,7 @@ modparam("tm", "remap_503_500", 0) Default value is 0 (disabled). - Example 1.44. Set failure_exec_mode parameter + Example 1.45. Set failure_exec_mode parameter ... modparam("tm", "failure_exec_mode", 1) ... @@ -1638,7 +1651,7 @@ modparam("tm", "failure_exec_mode", 1) Default value is 0 (disabled). - Example 1.45. Set dns_reuse_rcv_socket parameter + Example 1.46. Set dns_reuse_rcv_socket parameter ... modparam("tm", "dns_reuse_rcv_socket", 1) ... @@ -1650,7 +1663,7 @@ modparam("tm", "dns_reuse_rcv_socket", 1) Default value is “NULL”. - Example 1.46. Set xavp_contact parameter + Example 1.47. Set xavp_contact parameter ... modparam("tm|usrloc", "xavp_contact", "ulattrs") ... @@ -1664,7 +1677,7 @@ modparam("tm|usrloc", "xavp_contact", "ulattrs") Default value is 'empty' (no function is executed for events). - Example 1.47. Set event_callback parameter + Example 1.48. Set event_callback parameter ... modparam("tm", "event_callback", "ksr_tm_event") ... @@ -1684,7 +1697,7 @@ end Default value is 'empty' (no function is executed for events). - Example 1.48. Set event_callback_lres_sent parameter + Example 1.49. Set event_callback_lres_sent parameter ... modparam("tm", "event_callback_lres_sent", "ksr_tm_event_response_sent") ... @@ -1707,7 +1720,7 @@ end Default value is 0 (disabled). - Example 1.49. Set relay_100 parameter + Example 1.50. Set relay_100 parameter ... modparam("tm", "relay_100", 1) ... @@ -1722,7 +1735,7 @@ modparam("tm", "relay_100", 1) Values may be combined (added). - Example 1.50. rich_redirect example + Example 1.51. rich_redirect example ... modparam("tm", "rich_redirect", 3) .... @@ -1737,7 +1750,7 @@ modparam("tm", "rich_redirect", 3) Default value is 5000 (5 seconds). - Example 1.51. Set exec_time_check parameter + Example 1.52. Set exec_time_check parameter ... modparam("tm", "exec_time_check", 0) ... @@ -1756,7 +1769,7 @@ modparam("tm", "exec_time_check", 0) Default value is 1. - Example 1.52. Set reply_relay_mode parameter + Example 1.53. Set reply_relay_mode parameter ... modparam("tm", "reply_relay_mode", 0) ... @@ -1766,7 +1779,7 @@ modparam("tm", "reply_relay_mode", 0) Enable failure route trigger, for uac. This will copy the tm uac into uas. Thus, failure route can be triggered even for uac messages. - Example 1.53. enable_uac_fr example + Example 1.54. enable_uac_fr example ... modparam("tm", "enable_uac_fr", 1) .... @@ -1784,7 +1797,7 @@ modparam("tm", "enable_uac_fr", 1) Default value is “” - Example 1.54. Set the “failover_reply_codes” parameter + Example 1.55. Set the “failover_reply_codes” parameter ... modparam("tm", "failover_reply_codes", "code=403;code=488;class=5") ... @@ -1867,7 +1880,7 @@ modparam("tm", "failover_reply_codes", "code=403;code=488;class=5") Returns a negative value on failure -- you may still want to send a negative reply upstream statelessly not to leave upstream UAC in lurch. - Example 1.55. t_relay usage + Example 1.56. t_relay usage ... if (!t_relay()) { @@ -1894,7 +1907,7 @@ if (!t_relay()) derived from the message uri (using sip specific DNS lookups), but with the protocol corresponding to the function name. - Example 1.56. t_relay_to_udp usage + Example 1.57. t_relay_to_udp usage ... if (src_ip==10.0.0.0/8) t_relay_to_udp("1.2.3.4", "5060"); # sent to 1.2.3.4:5060 over udp @@ -1934,7 +1947,7 @@ else Meaning of the parameters is as follows: * failure_route - Failure route block to be called. - Example 1.57. t_on_failure usage + Example 1.58. t_on_failure usage ... route { t_on_failure("1"); @@ -1970,7 +1983,7 @@ failure_route[1] { * branch_failure_route - Name of the branch_failure route block to be called (it is prefixed internally with 'tm:branch-failure:'). - Example 1.58. t_on_branch_failure usage + Example 1.59. t_on_branch_failure usage ... route { t_on_branch_failure("myroute"); @@ -1993,7 +2006,7 @@ event_route[tm:branch-failure:myroute] { Meaning of the parameters is as follows: * onreply_route - Onreply route block to be called. - Example 1.59. t_on_reply usage + Example 1.60. t_on_reply usage ... loadmodule "/usr/local/lib/ser/modules/nathelper.so" ... @@ -2025,7 +2038,7 @@ es'); Meaning of the parameters is as follows: * branch_route - branch route block to be called. - Example 1.60. t_on_branch usage + Example 1.61. t_on_branch usage ... route { t_on_branch("1"); @@ -2050,7 +2063,7 @@ branch_route[1] { structure. Use the tmx module function t_flush_flags() to synchronize the modified message flags to the already created transaction. - Example 1.61. t_newtran usage + Example 1.62. t_newtran usage ... if (t_newtran()) { xlog("the transaction has been created\n"); @@ -2082,7 +2095,7 @@ if (t_newtran()) { * code - Reply code number. * reason_phrase - Reason string. - Example 1.62. t_reply usage + Example 1.63. t_reply usage ... t_reply("404", "Not found"); ... @@ -2100,7 +2113,7 @@ t_reply("404", "Not found"); * code - Reply code number. * reason - Reason string. - Example 1.63. t_send_reply usage + Example 1.64. t_send_reply usage ... t_send_reply("404", "Not found"); ... @@ -2113,7 +2126,7 @@ t_send_reply("404", "Not found"); none was found. However this is safely (atomically) done using t_newtran. - Example 1.64. t_lookup_request usage + Example 1.65. t_lookup_request usage ... if (t_lookup_request()) { ... @@ -2124,7 +2137,7 @@ if (t_lookup_request()) { Retransmits a reply sent previously by UAS transaction. - Example 1.65. t_retransmit_reply usage + Example 1.66. t_retransmit_reply usage ... t_retransmit_reply(); ... @@ -2134,7 +2147,7 @@ t_retransmit_reply(); Remove transaction from memory (it will be first put on a wait timer to absorb delayed messages). - Example 1.66. t_release usage + Example 1.67. t_release usage ... t_release(); ... @@ -2148,7 +2161,7 @@ t_release(); * ip - IP address where the message should be sent. * port - Port number. - Example 1.67. t_forward_nonack usage + Example 1.68. t_forward_nonack usage ... t_forward_nonack("1.2.3.4", "5060"); ... @@ -2187,7 +2200,7 @@ t_forward_nonack("1.2.3.4", "5060"); See also: fr_timer, fr_inv_timer, t_reset_fr(). - Example 1.68. t_set_fr usage + Example 1.69. t_set_fr usage ... route { t_set_fr(10000); # set only fr invite timeout to 10s @@ -2214,7 +2227,7 @@ branch_route[1] { See also: fr_timer, fr_inv_timer, t_set_fr. - Example 1.69. t_reset_fr usage + Example 1.70. t_reset_fr usage ... route { ... @@ -2240,7 +2253,7 @@ route { See also: max_inv_lifetime, max_noninv_lifetime, t_reset_max_lifetime. - Example 1.70. t_set_max_lifetime usage + Example 1.71. t_set_max_lifetime usage ... route { if (src_ip=1.2.3.4) @@ -2262,7 +2275,7 @@ route { See also: max_inv_lifetime, max_noninv_lifetime, t_set_max_lifetime. - Example 1.71. t_reset_max_lifetime usage + Example 1.72. t_reset_max_lifetime usage ... route { ... @@ -2297,7 +2310,7 @@ route { See also: retr_timer1, retr_timer2, t_reset_retr(). - Example 1.72. t_set_retr usage + Example 1.73. t_set_retr usage ... route { t_set_retr(250, 0); # set only T1 to 250 ms @@ -2324,7 +2337,7 @@ branch_route[1] { See also: retr_timer1, retr_timer2, t_set_retr. - Example 1.73. t_reset_retr usage + Example 1.74. t_reset_retr usage ... route { ... @@ -2340,7 +2353,7 @@ route { See also: auto_inv_100. - Example 1.74. t_set_auto_inv_100 usage + Example 1.75. t_set_auto_inv_100 usage ... route { ... @@ -2355,7 +2368,7 @@ route { timeout. It can be used from FAILURE_ROUTE and BRANCH_FAILURE_ROUTE event route. - Example 1.75. t_branch_timeout usage + Example 1.76. t_branch_timeout usage ... failure_route[0]{ if (t_branch_timeout()){ @@ -2371,7 +2384,7 @@ failure_route[0]{ taken into account). It can be used from failure_route and branch-failure event route. - Example 1.76. t_branch_replied usage + Example 1.77. t_branch_replied usage ... failure_route[0]{ if (t_branch_timeout()){ @@ -2388,7 +2401,7 @@ failure_route[0]{ Returns true if at least one of the current transactions branches did timeout. - Example 1.77. t_any_timeout usage + Example 1.78. t_any_timeout usage ... failure_route[0]{ if (!t_branch_timeout()){ @@ -2405,7 +2418,7 @@ failure_route[0]{ receive some reply in the past. If called from a failure or onreply route, the "current" reply is not taken into account. - Example 1.78. t_any_replied usage + Example 1.79. t_any_replied usage ... onreply_route[0]{ if (!t_any_replied()){ @@ -2419,7 +2432,7 @@ onreply_route[0]{ Returns true if "code" is the final reply received (or locally generated) in at least one of the current transactions branches. - Example 1.79. t_grep_status usage + Example 1.80. t_grep_status usage ... onreply_route[0]{ if (t_grep_status("486")){ @@ -2432,7 +2445,7 @@ onreply_route[0]{ Returns true if the current transaction was canceled. - Example 1.80. t_is_canceled usage + Example 1.81. t_is_canceled usage ... failure_route[0]{ if (t_is_canceled()){ @@ -2446,7 +2459,7 @@ failure_route[0]{ Returns true if the current transaction has already been expired, i.e. the max_inv_lifetime/max_noninv_lifetime interval has already elapsed. - Example 1.81. t_is_expired usage + Example 1.82. t_is_expired usage ... failure_route[0]{ if (t_is_expired()){ @@ -2467,7 +2480,7 @@ failure_route[0]{ CANCELs were successfully sent to the pending branches, true if the INVITE was not found, and false in case of any error. - Example 1.82. t_relay_cancel usage + Example 1.83. t_relay_cancel usage if (method == CANCEL) { if (!t_relay_cancel()) { # implicit drop if relaying was successful, # nothing to do @@ -2494,7 +2507,7 @@ if (method == CANCEL) { overwritten with the flags of the INVITE. isflagset() can be used to check the flags of the previously forwarded INVITE in this case. - Example 1.83. t_lookup_cancel usage + Example 1.84. t_lookup_cancel usage if (method == CANCEL) { if (t_lookup_cancel()) { log("INVITE transaction exists"); @@ -2524,7 +2537,7 @@ if (method == CANCEL) { Dropping replies works only if a new branch is added to the transaction, or it is explicitly replied in the script! - Example 1.84. t_drop_replies() usage + Example 1.85. t_drop_replies() usage ... failure_route[0]{ if (t_check_status("5[0-9][0-9]")){ @@ -2555,7 +2568,7 @@ failure_route[0]{ The transaction must be created by t_newtran() before calling t_save_lumps(). - Example 1.85. t_save_lumps() usage + Example 1.86. t_save_lumps() usage route { ... t_newtran(); @@ -2629,7 +2642,7 @@ failure_route[1] { This function can be used from REQUEST_ROUTE and FAILURE_ROUTE. - Example 1.86. t_load_contacts usage + Example 1.87. t_load_contacts usage ... if (!t_load_contacts()) { sl_send_reply("500", "Server Internal Error - Cannot load contacts"); @@ -2670,7 +2683,7 @@ if (!t_load_contacts()) { contact_flows_avp are not anymore set. Based on that test, you can then use t_set_fr() function to set timers according to your needs. - Example 1.87. t_next_contacts usage + Example 1.88. t_next_contacts usage ... # First call after t_load_contacts() when transaction does not exist yet # and contacts should be available @@ -2708,7 +2721,7 @@ if (!t_next_contacts()) { syslog). This function can be used from a BRANCH_FAILURE_ROUTE event route. - Example 1.88. t_next_contact_flow usage + Example 1.89. t_next_contact_flow usage ... event_route[tm:branch-failure:outbound] { @@ -2731,7 +2744,7 @@ event_route[tm:branch-failure:outbound] This function can be used from ANY_ROUTE . - Example 1.89. t_check_status usage + Example 1.90. t_check_status usage ... if (t_check_status("(487)|(408)")) { log("487 or 408 negative reply\n"); @@ -2785,7 +2798,7 @@ Note See also: t_lookup_request(), t_lookup_cancel(). - Example 1.90. t_check_trans usage + Example 1.91. t_check_trans usage if ( method == "CANCEL" && !t_check_trans()) sl_reply("403", "cancel out of the blue forbidden"); # note: in this example t_check_trans() can be replaced by t_lookup_cancel() @@ -2800,7 +2813,7 @@ if ( method == "CANCEL" && !t_check_trans()) See also: disable_6xx_block. - Example 1.91. t_set_disable_6xx usage + Example 1.92. t_set_disable_6xx usage ... route { ... @@ -2815,7 +2828,7 @@ route { See also: use_dns_failover. - Example 1.92. t_set_disable_failover usage + Example 1.93. t_set_disable_failover usage ... route { ... @@ -2828,7 +2841,7 @@ route { Turn off/on sending internally a SIP reply in case of relay errors. - Example 1.93. t_set_disable_internal_reply usage + Example 1.94. t_set_disable_internal_reply usage ... t_set_disable_internal_reply(1); # turn off sending internal reply on error if(!t_relay()) { @@ -2861,7 +2874,7 @@ if(!t_relay()) { * hostport - address in "host:port" format. It can be given via an AVP. - Example 1.94. t_replicate usage + Example 1.95. t_replicate usage ... # sent to 1.2.3.4:5060 over tcp t_replicate("sip:1.2.3.4:5060;transport=tcp"); @@ -2895,7 +2908,7 @@ t_replicate_to_udp("1.2.3.4", "5060"); + 0x02 - do not generate reply on internal error. + 0x04 - disable dns failover. - Example 1.95. t_relay_to usage + Example 1.96. t_relay_to usage ... # sent to 1.2.3.4:5060 over tcp t_relay_to("tcp:1.2.3.4:5060"); @@ -2921,7 +2934,7 @@ t_relay_to("0x01"); See also: e2e_cancel_reason. - Example 1.96. t_set_no_e2e_cancel_reason usage + Example 1.97. t_set_no_e2e_cancel_reason usage ... route { ... @@ -2944,7 +2957,7 @@ opying * onreply_route - the function returns true if an onreply route is set to be executed. - Example 1.97. t_replicate usage + Example 1.98. t_replicate usage ... if(!t_is_set("failure_route")) LM_DBG("no failure route will be executed for current transaction\n"); @@ -2958,7 +2971,7 @@ if(!t_is_set("failure_route")) It returns true. - Example 1.98. t_use_uac_headers usage + Example 1.99. t_use_uac_headers usage ... t_use_uac_headers(); ... @@ -2977,7 +2990,7 @@ t_use_uac_headers(); returns true if the transaction is currently reply suspended or false if not. - Example 1.99. t_is_retr_async_reply usage + Example 1.100. t_is_retr_async_reply usage ... if (t_is_retr_async_reply()) { xlog("L_DBG", "Dropping retransmitted reply which is still currently sus @@ -3002,7 +3015,7 @@ pended\n"); Content-Type header must exist. * body - SIP message body (can be empty). - Example 1.100. t_uac_send usage + Example 1.101. t_uac_send usage ... t_uac_send("OPTIONS", "sip:alice@kamailio.org", "", "", "From: bob@kamailio.org;tag=2w3e\r\nTo: bob@kamailio.org", ""); @@ -3013,7 +3026,7 @@ t_uac_send("OPTIONS", "sip:alice@kamailio.org", "", "", Return the status code for transaction - the most relevant SIP reply status code, or -1 in case of error or no status code was set. - Example 1.101. t_get_status_code usage + Example 1.102. t_get_status_code usage ... $var(ts) = t_get_status_code(); if($var(ts) == 500) { ... } @@ -3024,7 +3037,7 @@ if($var(ts) == 500) { ... } Cleans active but very old transactions. Returns true (1). Can be called from any route. - Example 1.102. t_clean usage + Example 1.103. t_clean usage ... t_clean(); ... @@ -3034,7 +3047,7 @@ t_clean(); Return true of the transaction for current message exists, without setting the global references. - Example 1.103. t_exists usage + Example 1.104. t_exists usage ... reply_route { if (!t_exists()) { @@ -3164,7 +3177,7 @@ reply_route { enabled with the t_on_branch_failure function. This event_route uses the BRANCH_FAILURE_ROUTE route type. - Example 1.104. event_route[tm:branch-failure:id] usage + Example 1.105. event_route[tm:branch-failure:id] usage ... request_route { ... @@ -3190,7 +3203,7 @@ event_route[tm:branch-failure:myroute] { The request can still be updated, i.e., changes are possible to R-URI ($ru), destination URI ($du) or the send socket ($fs). - Example 1.105. event_route[tm:local-request] usage + Example 1.106. event_route[tm:local-request] usage ... event_route [tm:local-request] { xlog("L_INFO", "Routing locally generated $rm to $ru\n"); @@ -3203,7 +3216,7 @@ event_route [tm:local-request] { Executed after the tm module sent a local generated, transaction stateful response. - Example 1.106. event_route[tm:local-response] usage + Example 1.107. event_route[tm:local-response] usage ... event_route[tm:local-response] { xlog("tm:local-response replied locally\n");