瀏覽代碼

tm: some restructuring to docbook for better ToC

Daniel-Constantin Mierla 14 年之前
父節點
當前提交
f3e297a941
共有 2 個文件被更改,包括 243 次插入169 次删除
  1. 143 119
      modules/tm/README
  2. 100 50
      modules/tm/doc/functions.xml

+ 143 - 119
modules/tm/README

@@ -8,9 +8,9 @@ Juha Heinanen
 
 
    <[email protected]>
    <[email protected]>
 
 
-   Copyright © 2003 FhG FOKUS
+   Copyright © 2003 FhG FOKUS
 
 
-   Copyright © 2008 Juha Heinanen
+   Copyright © 2008 Juha Heinanen
      __________________________________________________________________
      __________________________________________________________________
 
 
    1.1. Overview
    1.1. Overview
@@ -61,52 +61,51 @@ Juha Heinanen
 
 
    1.5. Functions
    1.5. Functions
 
 
-        1.5.1. t_relay_to_udp(ip, port), t_relay_to_udp(),
-                t_relay_to_tcp(ip, port) t_relay_to_tcp()
-                t_relay_to_tls(ip, port) t_relay_to_tls()
-                t_relay_to_sctp(ip, port) t_relay_to_sctp()
-
-        1.5.2. t_relay() t_relay(host, port)
-        1.5.3. t_on_failure(failure_route)
-        1.5.4. t_on_reply(onreply_route)
-        1.5.5. t_on_branch(branch_route)
-        1.5.6. append_branch()
-        1.5.7. t_newtran()
-        1.5.8. t_reply(code, reason_phrase)
-        1.5.9. t_lookup_request()
-        1.5.10. t_retransmit_reply()
-        1.5.11. t_release()
-        1.5.12. t_forward_nonack() t_forward_nonack(ip, port)
-                t_forward_nonack_udp(ip, port) t_forward_nonack_tcp(ip,
-                port) t_forward_nonack_tls(ip, port)
-                t_forward_nonack_sctp(ip, port)
-
-        1.5.13. t_set_fr(fr_inv_timeout [, fr_timeout])
-        1.5.14. t_reset_fr()
-        1.5.15. t_set_max_lifetime(inv_lifetime, noninv_lifetime)
-        1.5.16. t_reset_max_lifetime()
-        1.5.17. t_set_retr(retr_t1_interval, retr_t2_interval)
-        1.5.18. t_reset_retr()
-        1.5.19. t_set_auto_inv_100(0|1)
-        1.5.20. t_branch_timeout()
-        1.5.21. t_branch_replied()
-        1.5.22. t_any_timeout()
-        1.5.23. t_any_replied()
-        1.5.24. t_grep_status("code")
-        1.5.25. t_is_canceled()
-        1.5.26. t_is_expired()
-        1.5.27. t_relay_cancel()
-        1.5.28. t_lookup_cancel(), t_lookup_cancel(1)
-        1.5.29. t_drop_replies([mode])
-        1.5.30. t_save_lumps()
-        1.5.31. t_load_contacts()
-        1.5.32. t_next_contacts()
-        1.5.33. t_check_trans()
-        1.5.34. t_set_disable_6xx(0|1)
-        1.5.35. t_set_disable_failover(0|1)
-        1.5.36. t_replicate(params)
-        1.5.37. t_relay_to(proxy, flags)
-        1.5.38. t_set_no_e2e_cancel_reason(0|1)
+        1.5.1. t_relay([host, port])
+        1.5.2. t_relay_to_udp([ip, port])
+        1.5.3. t_relay_to_tcp([ip, port])
+        1.5.4. t_relay_to_tls([ip, port])
+        1.5.5. t_relay_to_sctp([ip, port])
+        1.5.6. t_on_failure(failure_route)
+        1.5.7. t_on_reply(onreply_route)
+        1.5.8. t_on_branch(branch_route)
+        1.5.9. append_branch()
+        1.5.10. t_newtran()
+        1.5.11. t_reply(code, reason_phrase)
+        1.5.12. t_lookup_request()
+        1.5.13. t_retransmit_reply()
+        1.5.14. t_release()
+        1.5.15. t_forward_nonack([ip, port])
+        1.5.16. t_forward_nonack_udp(ip, port)
+        1.5.17. t_forward_nonack_tcp(ip, port)
+        1.5.18. t_forward_nonack_tls(ip, port)
+        1.5.19. t_forward_nonack_sctp(ip, port)
+        1.5.20. t_set_fr(fr_inv_timeout [, fr_timeout])
+        1.5.21. t_reset_fr()
+        1.5.22. t_set_max_lifetime(inv_lifetime, noninv_lifetime)
+        1.5.23. t_reset_max_lifetime()
+        1.5.24. t_set_retr(retr_t1_interval, retr_t2_interval)
+        1.5.25. t_reset_retr()
+        1.5.26. t_set_auto_inv_100(0|1)
+        1.5.27. t_branch_timeout()
+        1.5.28. t_branch_replied()
+        1.5.29. t_any_timeout()
+        1.5.30. t_any_replied()
+        1.5.31. t_grep_status("code")
+        1.5.32. t_is_canceled()
+        1.5.33. t_is_expired()
+        1.5.34. t_relay_cancel()
+        1.5.35. t_lookup_cancel([1])
+        1.5.36. t_drop_replies([mode])
+        1.5.37. t_save_lumps()
+        1.5.38. t_load_contacts()
+        1.5.39. t_next_contacts()
+        1.5.40. t_check_trans()
+        1.5.41. t_set_disable_6xx(0|1)
+        1.5.42. t_set_disable_failover(0|1)
+        1.5.43. t_replicate(params)
+        1.5.44. t_relay_to(proxy, flags)
+        1.5.45. t_set_no_e2e_cancel_reason(0|1)
 
 
    1.6. TM Module API
    1.6. TM Module API
 
 
@@ -176,7 +175,7 @@ Juha Heinanen
 Note
 Note
 
 
    Several Kamailio (OpenSER) TM module functionalities are now
    Several Kamailio (OpenSER) TM module functionalities are now
-   implemented in the TMX module: “modules_k/tmx�. Check it to see if what
+   implemented in the TMX module: "modules_k/tmx". Check it to see if what
    you are looking for is there.
    you are looking for is there.
 
 
 1.2. Serial Forking Based on Q Value
 1.2. Serial Forking Based on Q Value
@@ -1191,9 +1190,35 @@ modparam("tm", "e2e_cancel_reason", 0)
 
 
 1.5. Functions
 1.5. Functions
 
 
-1.5.1.  t_relay_to_udp(ip, port), t_relay_to_udp(), t_relay_to_tcp(ip, port)
-t_relay_to_tcp() t_relay_to_tls(ip, port) t_relay_to_tls()
-t_relay_to_sctp(ip, port) t_relay_to_sctp()
+1.5.1. t_relay([host, port])
+
+   Relay a message statefully either to the destination indicated in the
+   current URI (if called without any parameters) or to the specified host
+   and port. In the later case (host and port specified) the protocol used
+   is the same protocol on which the message was received.
+
+   t_relay() is the statefull version for forward() while t_relay(host,
+   port) is similar to forward(host, port).
+
+   In the forward to uri case (t_relay()), if the original URI was
+   rewritten (by UsrLoc, RR, strip/prefix, etc.) the new URI will be
+   taken). The destination (including the protocol) is determined from the
+   uri, using SIP specific DNS resolving if needed (NAPTR, SRV a.s.o
+   depending also on the dns options).
+
+   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 41. t_relay usage
+...
+if (!t_relay())
+{
+    sl_reply_error();
+    break;
+};
+...
+
+1.5.2. t_relay_to_udp([ip, port])
 
 
    Relay a message statefully using a fixed protocol either to the
    Relay a message statefully using a fixed protocol either to the
    specified fixed destination or to a destination derived from the
    specified fixed destination or to a destination derived from the
@@ -1211,7 +1236,7 @@ t_relay_to_sctp(ip, port) t_relay_to_sctp()
    derived from the message uri (using sip sepcific DNS lookups), but with
    derived from the message uri (using sip sepcific DNS lookups), but with
    the protocol corresponding to the function name.
    the protocol corresponding to the function name.
 
 
-   Example 41. t_relay_to_udp usage
+   Example 42. t_relay_to_udp usage
 ...
 ...
 if (src_ip==10.0.0.0/8)
 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
         t_relay_to_udp("1.2.3.4", "5060"); # sent to 1.2.3.4:5060 over udp
@@ -1219,35 +1244,19 @@ else
         t_relay_to_tcp(); # relay to msg. uri, but over tcp
         t_relay_to_tcp(); # relay to msg. uri, but over tcp
 ...
 ...
 
 
-1.5.2.  t_relay() t_relay(host, port)
+1.5.3. t_relay_to_tcp([ip, port])
 
 
-   Relay a message statefully either to the destination indicated in the
-   current URI (if called without any parameters) or to the specified host
-   and port. In the later case (host and port specified) the protocol used
-   is the same protocol on which the message was received.
+   See function t_relay_to_udp([ip, port]).
 
 
-   t_relay() is the statefull version for forward(uri:host, uri:port)
-   while t_relay(host, port) is similar to forward(host, port).
+1.5.4. t_relay_to_tls([ip, port])
 
 
-   In the forward to uri case (t_relay()), if the original URI was
-   rewritten (by UsrLoc, RR, strip/prefix, etc.) the new URI will be
-   taken). The destination (including the protocol) is determined from the
-   uri, using SIP specific DNS resolving if needed (NAPTR, SRV a.s.o
-   depending also on the dns options).
+   See function t_relay_to_udp([ip, port]).
 
 
-   Returns a negative value on failure--you may still want to send a
-   negative reply upstream statelessly not to leave upstream UAC in lurch.
+1.5.5. t_relay_to_sctp([ip, port])
 
 
-   Example 42. t_relay usage
-...
-if (!t_relay())
-{
-    sl_reply_error();
-    break;
-};
-...
+   See function t_relay_to_udp([ip, port]).
 
 
-1.5.3.  t_on_failure(failure_route)
+1.5.6. t_on_failure(failure_route)
 
 
    Sets failure routing block, to which control is passed after a
    Sets failure routing block, to which control is passed after a
    transaction completed with a negative result but before sending a final
    transaction completed with a negative result but before sending a final
@@ -1284,7 +1293,7 @@ failure_route[1] {
    See test/onr.cfg for a more complex example of combination of serial
    See test/onr.cfg for a more complex example of combination of serial
    with parallel forking.
    with parallel forking.
 
 
-1.5.4.  t_on_reply(onreply_route)
+1.5.7. t_on_reply(onreply_route)
 
 
    Sets the reply routing block, to which control is passed when a reply
    Sets the reply routing block, to which control is passed when a reply
    for the current transaction is received. Note that the set of commands
    for the current transaction is received. Note that the set of commands
@@ -1314,7 +1323,7 @@ es');
         }
         }
 }
 }
 
 
-1.5.5.  t_on_branch(branch_route)
+1.5.8. t_on_branch(branch_route)
 
 
    Sets the branch routing block, to which control is passed after forking
    Sets the branch routing block, to which control is passed after forking
    (when a new branch is created). For now branch routes are intended only
    (when a new branch is created). For now branch routes are intended only
@@ -1338,7 +1347,7 @@ branch_route[1] {
         }
         }
 }
 }
 
 
-1.5.6.  append_branch()
+1.5.9. append_branch()
 
 
    Similarly to t_fork_to, it extends destination set by a new entry. The
    Similarly to t_fork_to, it extends destination set by a new entry. The
    difference is that current URI is taken as new entry.
    difference is that current URI is taken as new entry.
@@ -1352,7 +1361,7 @@ t_fork();
 t_relay();
 t_relay();
 ...
 ...
 
 
-1.5.7.  t_newtran()
+1.5.10. t_newtran()
 
 
    Creates a new transaction, returns a negative value on error. This is
    Creates a new transaction, returns a negative value on error. This is
    the only way a script can add a new transaction in an atomic way.
    the only way a script can add a new transaction in an atomic way.
@@ -1368,7 +1377,7 @@ if (t_newtran()) {
 
 
    See test/uas.cfg for more examples.
    See test/uas.cfg for more examples.
 
 
-1.5.8.  t_reply(code, reason_phrase)
+1.5.11. t_reply(code, reason_phrase)
 
 
    Sends a stateful reply after a transaction has been established. See
    Sends a stateful reply after a transaction has been established. See
    t_newtran for usage.
    t_newtran for usage.
@@ -1382,7 +1391,7 @@ if (t_newtran()) {
 t_reply("404", "Not found");
 t_reply("404", "Not found");
 ...
 ...
 
 
-1.5.9.  t_lookup_request()
+1.5.12. t_lookup_request()
 
 
    Checks if a transaction exists. Returns a positive value if so,
    Checks if a transaction exists. Returns a positive value if so,
    negative otherwise. Most likely you will not want to use it, as a
    negative otherwise. Most likely you will not want to use it, as a
@@ -1397,7 +1406,7 @@ if (t_lookup_request()) {
 };
 };
 ...
 ...
 
 
-1.5.10.  t_retransmit_reply()
+1.5.13. t_retransmit_reply()
 
 
    Retransmits a reply sent previously by UAS transaction.
    Retransmits a reply sent previously by UAS transaction.
 
 
@@ -1406,7 +1415,7 @@ if (t_lookup_request()) {
 t_retransmit_reply();
 t_retransmit_reply();
 ...
 ...
 
 
-1.5.11.  t_release()
+1.5.14. t_release()
 
 
    Remove transaction from memory (it will be first put on a wait timer to
    Remove transaction from memory (it will be first put on a wait timer to
    absorb delayed messages).
    absorb delayed messages).
@@ -1416,11 +1425,10 @@ t_retransmit_reply();
 t_release();
 t_release();
 ...
 ...
 
 
-1.5.12.  t_forward_nonack() t_forward_nonack(ip, port)
-t_forward_nonack_udp(ip, port) t_forward_nonack_tcp(ip, port)
-t_forward_nonack_tls(ip, port) t_forward_nonack_sctp(ip, port)
+1.5.15. t_forward_nonack([ip, port])
 
 
-   mainly for internal usage--forward a non-ACK request statefully.
+   Mainly for internal usage -- forward a non-ACK request statefully.
+   Variants of this functions can enforce a specific transport protocol.
 
 
    Meaning of the parameters is as follows:
    Meaning of the parameters is as follows:
      * ip - IP address where the message should be sent.
      * ip - IP address where the message should be sent.
@@ -1431,7 +1439,23 @@ t_forward_nonack_tls(ip, port) t_forward_nonack_sctp(ip, port)
 t_forward_nonack("1.2.3.4", "5060");
 t_forward_nonack("1.2.3.4", "5060");
 ...
 ...
 
 
-1.5.13.  t_set_fr(fr_inv_timeout [, fr_timeout])
+1.5.16. t_forward_nonack_udp(ip, port)
+
+   See function t_forward_nonack([ip, port]).
+
+1.5.17. t_forward_nonack_tcp(ip, port)
+
+   See function t_forward_nonack([ip, port]).
+
+1.5.18. t_forward_nonack_tls(ip, port)
+
+   See function t_forward_nonack([ip, port]).
+
+1.5.19. t_forward_nonack_sctp(ip, port)
+
+   See function t_forward_nonack([ip, port]).
+
+1.5.20. t_set_fr(fr_inv_timeout [, fr_timeout])
 
 
    Sets the fr_inv_timeout and optionally fr_timeout for the current
    Sets the fr_inv_timeout and optionally fr_timeout for the current
    transaction or for transactions created during the same script
    transaction or for transactions created during the same script
@@ -1465,7 +1489,7 @@ branch_route[1] {
         }
         }
 }
 }
 
 
-1.5.14.  t_reset_fr()
+1.5.21. t_reset_fr()
 
 
    Resets the fr_inv_timer and fr_timer for the current transaction to the
    Resets the fr_inv_timer and fr_timer for the current transaction to the
    default values (set using the tm module parameters fr_inv_timer and
    default values (set using the tm module parameters fr_inv_timer and
@@ -1484,7 +1508,7 @@ route {
 ...
 ...
 }
 }
 
 
-1.5.15.  t_set_max_lifetime(inv_lifetime, noninv_lifetime)
+1.5.22. t_set_max_lifetime(inv_lifetime, noninv_lifetime)
 
 
    Sets the maximum lifetime for the current INVITE or non-INVITE
    Sets the maximum lifetime for the current INVITE or non-INVITE
    transaction, or for transactions created during the same script
    transaction, or for transactions created during the same script
@@ -1513,7 +1537,7 @@ route {
                                           # INVITE and to 15s if not
                                           # INVITE and to 15s if not
 }
 }
 
 
-1.5.16.  t_reset_max_lifetime()
+1.5.23. t_reset_max_lifetime()
 
 
    Resets the the maximum lifetime for the current INVITE or non-INVITE
    Resets the the maximum lifetime for the current INVITE or non-INVITE
    transaction to the default value (set using the tm module parameter
    transaction to the default value (set using the tm module parameter
@@ -1532,7 +1556,7 @@ route {
 ...
 ...
 }
 }
 
 
-1.5.17.  t_set_retr(retr_t1_interval, retr_t2_interval)
+1.5.24. t_set_retr(retr_t1_interval, retr_t2_interval)
 
 
    Sets the retr_t1_interval and retr_t2_interval for the current
    Sets the retr_t1_interval and retr_t2_interval for the current
    transaction or for transactions created during the same script
    transaction or for transactions created during the same script
@@ -1578,7 +1602,7 @@ branch_route[1] {
         }
         }
 }
 }
 
 
-1.5.18.  t_reset_retr()
+1.5.25. t_reset_retr()
 
 
    Resets the retr_timer1 and retr_timer2 for the current transaction to
    Resets the retr_timer1 and retr_timer2 for the current transaction to
    the default values (set using the tm module parameters retr_timer1 and
    the default values (set using the tm module parameters retr_timer1 and
@@ -1597,7 +1621,7 @@ route {
 ...
 ...
 }
 }
 
 
-1.5.19.  t_set_auto_inv_100(0|1)
+1.5.26. t_set_auto_inv_100(0|1)
 
 
    Switch automatically sending 100 replies to INVITEs on/off on a per
    Switch automatically sending 100 replies to INVITEs on/off on a per
    transaction basis. It overrides the auto_inv_100 value for the current
    transaction basis. It overrides the auto_inv_100 value for the current
@@ -1614,7 +1638,7 @@ route {
 ...
 ...
 }
 }
 
 
-1.5.20.  t_branch_timeout()
+1.5.27. t_branch_timeout()
 
 
    Returns true if the failure route is executed for a branch that did
    Returns true if the failure route is executed for a branch that did
    timeout. It can be used only from the failure_route.
    timeout. It can be used only from the failure_route.
@@ -1628,7 +1652,7 @@ failure_route[0]{
         }
         }
 }
 }
 
 
-1.5.21.  t_branch_replied()
+1.5.28. t_branch_replied()
 
 
    Returns true if the failure route is executed for a branch that did
    Returns true if the failure route is executed for a branch that did
    receive at least one reply in the past (the "current" reply is not
    receive at least one reply in the past (the "current" reply is not
@@ -1646,7 +1670,7 @@ failure_route[0]{
         }
         }
 }
 }
 
 
-1.5.22.  t_any_timeout()
+1.5.29. t_any_timeout()
 
 
    Returns true if at least one of the current transactions branches did
    Returns true if at least one of the current transactions branches did
    timeout.
    timeout.
@@ -1662,7 +1686,7 @@ failure_route[0]{
         }
         }
 }
 }
 
 
-1.5.23.  t_any_replied()
+1.5.30. t_any_replied()
 
 
    Returns true if at least one of the current transactions branches did
    Returns true if at least one of the current transactions branches did
    receive some reply in the past. If called from a failure or onreply
    receive some reply in the past. If called from a failure or onreply
@@ -1677,7 +1701,7 @@ onreply_route[0]{
         }
         }
 }
 }
 
 
-1.5.24.  t_grep_status("code")
+1.5.31. t_grep_status("code")
 
 
    Returns true if "code" is the final reply received (or locally
    Returns true if "code" is the final reply received (or locally
    generated) in at least one of the current transactions branches.
    generated) in at least one of the current transactions branches.
@@ -1691,7 +1715,7 @@ onreply_route[0]{
         }
         }
 }
 }
 
 
-1.5.25.  t_is_canceled()
+1.5.32. t_is_canceled()
 
 
    Returns true if the current transaction was canceled.
    Returns true if the current transaction was canceled.
 
 
@@ -1704,7 +1728,7 @@ failure_route[0]{
         }
         }
 }
 }
 
 
-1.5.26.  t_is_expired()
+1.5.33. t_is_expired()
 
 
    Returns true if the current transaction has already been expired, i.e.
    Returns true if the current transaction has already been expired, i.e.
    the max_inv_lifetime/max_noninv_lifetime interval has already elapsed.
    the max_inv_lifetime/max_noninv_lifetime interval has already elapsed.
@@ -1718,7 +1742,7 @@ failure_route[0]{
         }
         }
 }
 }
 
 
-1.5.27.  t_relay_cancel()
+1.5.34. t_relay_cancel()
 
 
    Forwards the CANCEL if the corresponding INVITE transaction exists. The
    Forwards the CANCEL if the corresponding INVITE transaction exists. The
    function is supposed to be used at the very beginning of the script,
    function is supposed to be used at the very beginning of the script,
@@ -1743,7 +1767,7 @@ if (method == CANCEL) {
         # do the same as for INVITEs
         # do the same as for INVITEs
 }
 }
 
 
-1.5.28.  t_lookup_cancel(), t_lookup_cancel(1)
+1.5.35. t_lookup_cancel([1])
 
 
    Returns true if the corresponding INVITE transaction exists for a
    Returns true if the corresponding INVITE transaction exists for a
    CANCEL request. The function can be called at the beginning of the
    CANCEL request. The function can be called at the beginning of the
@@ -1775,7 +1799,7 @@ if (method == CANCEL) {
         # do the same as for INVITEs
         # do the same as for INVITEs
 }
 }
 
 
-1.5.29.  t_drop_replies([mode])
+1.5.36. t_drop_replies([mode])
 
 
    Drops all the previously received replies in failure_route block to
    Drops all the previously received replies in failure_route block to
    make sure that none of them is picked up again.
    make sure that none of them is picked up again.
@@ -1803,7 +1827,7 @@ failure_route[0]{
         }
         }
 }
 }
 
 
-1.5.30.  t_save_lumps()
+1.5.37. t_save_lumps()
 
 
    Forces the modifications of the processed SIP message to be saved in
    Forces the modifications of the processed SIP message to be saved in
    shared memory before t_relay() is called. The new branches which are
    shared memory before t_relay() is called. The new branches which are
@@ -1843,7 +1867,7 @@ failure_route[1] {
         t_relay();
         t_relay();
 }
 }
 
 
-1.5.31.  t_load_contacts()
+1.5.38. t_load_contacts()
 
 
    This is the first of the two functions that can be used to implement
    This is the first of the two functions that can be used to implement
    serial/parallel forking based on the q value of individual branches in
    serial/parallel forking based on the q value of individual branches in
@@ -1896,7 +1920,7 @@ if (!t_load_contacts()) {
 };
 };
 ...
 ...
 
 
-1.5.32.  t_next_contacts()
+1.5.39. t_next_contacts()
 
 
    The function t_next_contacts is the second of the two functions that
    The function t_next_contacts is the second of the two functions that
    can be used to implement serial/parallel forking based on the q value
    can be used to implement serial/parallel forking based on the q value
@@ -1948,7 +1972,7 @@ if (!t_next_contacts()) {
 };
 };
 ...
 ...
 
 
-1.5.33.  t_check_trans()
+1.5.40. t_check_trans()
 
 
    t_check_trans() can be used to quickly check if a message belongs or is
    t_check_trans() can be used to quickly check if a message belongs or is
    related to a transaction. It behaves differently for different types of
    related to a transaction. It behaves differently for different types of
@@ -1998,7 +2022,7 @@ if ( method == "CANCEL" && !t_check_trans())
         sl_reply("403", "cancel out of the blue forbidden");
         sl_reply("403", "cancel out of the blue forbidden");
 # note: in this example t_check_trans() can be replaced by t_lookup_cancel()
 # note: in this example t_check_trans() can be replaced by t_lookup_cancel()
 
 
-1.5.34.  t_set_disable_6xx(0|1)
+1.5.41. t_set_disable_6xx(0|1)
 
 
    Turn off/on 6xx replies special rfc conformant handling on a per
    Turn off/on 6xx replies special rfc conformant handling on a per
    transaction basis. If turned off (t_set_disable_6xx("1")) 6XXs will be
    transaction basis. If turned off (t_set_disable_6xx("1")) 6XXs will be
@@ -2017,7 +2041,7 @@ route {
 ...
 ...
 }
 }
 
 
-1.5.35.  t_set_disable_failover(0|1)
+1.5.42. t_set_disable_failover(0|1)
 
 
    Turn off/on dns failover on a per transaction basis.
    Turn off/on dns failover on a per transaction basis.
 
 
@@ -2032,7 +2056,7 @@ route {
 ...
 ...
 }
 }
 
 
-1.5.36.  t_replicate(params)
+1.5.43. t_replicate(params)
 
 
    Replicate the SIP request to a specific address.
    Replicate the SIP request to a specific address.
 
 
@@ -2067,7 +2091,7 @@ t_replicate("sip:$var(h);transport=tls");
 t_replicate_to_udp("1.2.3.4", "5060");
 t_replicate_to_udp("1.2.3.4", "5060");
 ...
 ...
 
 
-1.5.37.  t_relay_to(proxy, flags)
+1.5.44. t_relay_to(proxy, flags)
 
 
    Forward the SIP request to a specific address, controlling internal
    Forward the SIP request to a specific address, controlling internal
    behavior via flags.
    behavior via flags.
@@ -2101,7 +2125,7 @@ t_relay_to("tls:1.2.3.4");
 t_relay_to("0x01");
 t_relay_to("0x01");
 ...
 ...
 
 
-1.5.38.  t_set_no_e2e_cancel_reason(0|1)
+1.5.45. t_set_no_e2e_cancel_reason(0|1)
 
 
    Enables/disables reason header (RFC 3326) copying from the triggering
    Enables/disables reason header (RFC 3326) copying from the triggering
    received CANCEL to the generated hop-by-hop CANCEL. 0 enables and 1
    received CANCEL to the generated hop-by-hop CANCEL. 0 enables and 1
@@ -2188,7 +2212,7 @@ end of body
 
 
 1.6.2. Functions
 1.6.2. Functions
 
 
-1.6.2.1.  register_tmcb(cb_type, cb_func)
+1.6.2.1. register_tmcb(cb_type, cb_func)
 
 
    For programmatic use only--register a function to be called back on an
    For programmatic use only--register a function to be called back on an
    event. See t_hooks.h for more details.
    event. See t_hooks.h for more details.
@@ -2197,7 +2221,7 @@ end of body
      * cb_type - Callback type.
      * cb_type - Callback type.
      * cb_func - Callback function.
      * cb_func - Callback function.
 
 
-1.6.2.2.  load_tm(*import_structure)
+1.6.2.2. load_tm(*import_structure)
 
 
    For programmatic use only--import exported TM functions. See the acc
    For programmatic use only--import exported TM functions. See the acc
    module for an example of use.
    module for an example of use.
@@ -2205,7 +2229,7 @@ end of body
    Meaning of the parameters is as follows:
    Meaning of the parameters is as follows:
      * import_structure - Pointer to the import structure.
      * import_structure - Pointer to the import structure.
 
 
-1.6.2.3.  int t_suspend(struct sip_msg *msg, unsigned int *hash_index,
+1.6.2.3. int t_suspend(struct sip_msg *msg, unsigned int *hash_index,
 unsigned int *label)
 unsigned int *label)
 
 
    For programmatic use only. This function together with t_continue() can
    For programmatic use only. This function together with t_continue() can
@@ -2243,7 +2267,7 @@ unsigned int *label)
    t_suspend() should return 0 to make sure that the script processing
    t_suspend() should return 0 to make sure that the script processing
    does not continue.
    does not continue.
 
 
-1.6.2.4.  int t_continue(unsigned int hash_index, unsigned int label, struct
+1.6.2.4. int t_continue(unsigned int hash_index, unsigned int label, struct
 action *route)
 action *route)
 
 
    For programmatic use only. This function is the pair of t_suspend(),
    For programmatic use only. This function is the pair of t_suspend(),
@@ -2259,7 +2283,7 @@ action *route)
 
 
    Return value: 0 - success, <0 - error.
    Return value: 0 - success, <0 - error.
 
 
-1.6.2.5.  int t_cancel_suspend(unsigned int hash_index, unsigned int label)
+1.6.2.5. int t_cancel_suspend(unsigned int hash_index, unsigned int label)
 
 
    For programmatic use only. This function is for revoking t_suspend()
    For programmatic use only. This function is for revoking t_suspend()
    from the same process as it was executed before. t_cancel_suspend() can
    from the same process as it was executed before. t_cancel_suspend() can

+ 100 - 50
modules/tm/doc/functions.xml

@@ -8,16 +8,50 @@
 
 
     <title>Functions</title>
     <title>Functions</title>
 
 
+    <section id="t_relay">
+	<title>
+	    <function>t_relay([host, port])</function>
+	</title>
+	<para>
+	    Relay a message statefully either to the destination indicated in the
+		current URI (if called without any parameters) or to the specified 
+		host and port. In the later case (host and port specified) the protocol
+		used is the same protocol on which the message was received.
+	</para>
+	<para>
+		<function>t_relay()</function> is the statefull version for 
+		<function>forward()</function>
+		while <function>t_relay(host, port)</function> is similar to 
+		<function>forward(host, port)</function>.
+	</para>
+	<para>
+		In the forward to uri case (<function>t_relay()</function>), if the
+	    original URI was rewritten (by UsrLoc, RR, strip/prefix, etc.) the new
+		URI will be taken). The destination (including the protocol) is 
+		determined from the uri, using SIP specific DNS resolving if needed
+		(NAPTR, SRV a.s.o depending also on the dns options).
+	</para>
+	<para>
+		Returns a negative value on failure -- you may still want to send a
+	    negative reply upstream statelessly not to leave upstream UAC in lurch.
+	</para>
+	<example>
+	    <title><function>t_relay</function> usage</title>
+	    <programlisting>
+...
+if (!t_relay()) 
+{ 
+    sl_reply_error(); 
+    break; 
+};
+...
+	    </programlisting>
+	</example>
+    </section>
+
     <section id="t_relay_to_udp">
     <section id="t_relay_to_udp">
 	<title>
 	<title>
-	    <function>t_relay_to_udp(ip, port)</function>,
-	    <function>t_relay_to_udp()</function>,
-	    <function>t_relay_to_tcp(ip, port)</function>
-	    <function>t_relay_to_tcp()</function>
-	    <function>t_relay_to_tls(ip, port)</function>
-	    <function>t_relay_to_tls()</function>
-	    <function>t_relay_to_sctp(ip, port)</function>
-	    <function>t_relay_to_sctp()</function>
+	    <function>t_relay_to_udp([ip, port])</function>
 	</title>
 	</title>
 	<para>
 	<para>
 	    Relay a message statefully using a fixed protocol either to the 
 	    Relay a message statefully using a fixed protocol either to the 
@@ -56,48 +90,33 @@ else
 	</example>
 	</example>
     </section>
     </section>
 
 
-    <section id="t_relay">
+    <section id="t_relay_to_tcp">
 	<title>
 	<title>
-	    <function>t_relay()</function>
-	    <function>t_relay(host, port)</function>
+	    <function>t_relay_to_tcp([ip, port])</function>
 	</title>
 	</title>
 	<para>
 	<para>
-	    Relay a message statefully either to the destination indicated in the
-		current URI (if called without any parameters) or to the specified 
-		host and port. In the later case (host and port specified) the protocol
-		 used is the same protocol on which the message was received.
+		See function <function>t_relay_to_udp([ip, port])</function>.
 	</para>
 	</para>
+    </section>
+
+    <section id="t_relay_to_tls">
+	<title>
+	    <function>t_relay_to_tls([ip, port])</function>
+	</title>
 	<para>
 	<para>
-		<function>t_relay()</function> is the statefull version for 
-		<function>forward(uri:host, uri:port)</function>
-		while <function>t_relay(host, port)</function> is similar to 
-		<function>forward(host, port)</function>.
-	</para>
-	<para>
-		In the forward to uri case (<function>t_relay()</function>), if the
-	    original URI was rewritten (by UsrLoc, RR, strip/prefix, etc.) the new
-		URI will be taken). The destination (including the protocol) is 
-		determined from the uri, using SIP specific DNS resolving if needed
-		(NAPTR, SRV a.s.o depending also on the dns options).
+		See function <function>t_relay_to_udp([ip, port])</function>.
 	</para>
 	</para>
+    </section>
+
+    <section id="t_relay_to_sctp">
+	<title>
+	    <function>t_relay_to_sctp([ip, port])</function>
+	</title>
 	<para>
 	<para>
-		Returns a negative value on failure--you may still want to send a
-	    negative reply upstream statelessly not to leave upstream UAC in lurch.
+		See function <function>t_relay_to_udp([ip, port])</function>.
 	</para>
 	</para>
-	<example>
-	    <title><function>t_relay</function> usage</title>
-	    <programlisting>
-...
-if (!t_relay()) 
-{ 
-    sl_reply_error(); 
-    break; 
-};
-...
-	    </programlisting>
-	</example>
     </section>
     </section>
-    
+
     <section id="t_on_failure">
     <section id="t_on_failure">
 	<title>
 	<title>
 	    <function>t_on_failure(failure_route)</function>
 	    <function>t_on_failure(failure_route)</function>
@@ -367,15 +386,11 @@ t_release();
 
 
     <section id="t_forward_nonack">
     <section id="t_forward_nonack">
 	<title>
 	<title>
-	    <function>t_forward_nonack()</function>
-	    <function>t_forward_nonack(ip, port)</function>
-	    <function>t_forward_nonack_udp(ip, port)</function>
-	    <function>t_forward_nonack_tcp(ip, port)</function>
-	    <function>t_forward_nonack_tls(ip, port)</function>
-	    <function>t_forward_nonack_sctp(ip, port)</function>
+	    <function>t_forward_nonack([ip, port])</function>
 	</title>
 	</title>
 	<para>
 	<para>
-	    mainly for internal usage--forward a non-ACK request statefully.
+		Mainly for internal usage -- forward a non-ACK request statefully.
+		Variants of this functions can enforce a specific transport protocol.
 	</para>
 	</para>
 	<para>Meaning of the parameters is as follows:</para>
 	<para>Meaning of the parameters is as follows:</para>
 	<itemizedlist>
 	<itemizedlist>
@@ -398,6 +413,42 @@ t_forward_nonack("1.2.3.4", "5060");
 	</example>
 	</example>
     </section>
     </section>
 
 
+   <section id="t_forward_nonack_udp">
+	<title>
+	    <function>t_forward_nonack_udp(ip, port)</function>
+	</title>
+	<para>
+	    See function <function>t_forward_nonack([ip, port])</function>.
+	</para>
+    </section>
+
+   <section id="t_forward_nonack_tcp">
+	<title>
+	    <function>t_forward_nonack_tcp(ip, port)</function>
+	</title>
+	<para>
+	    See function <function>t_forward_nonack([ip, port])</function>.
+	</para>
+    </section>
+
+   <section id="t_forward_nonack_tls">
+	<title>
+	    <function>t_forward_nonack_tls(ip, port)</function>
+	</title>
+	<para>
+	    See function <function>t_forward_nonack([ip, port])</function>.
+	</para>
+    </section>
+
+   <section id="t_forward_nonack_sctp">
+	<title>
+	    <function>t_forward_nonack_sctp(ip, port)</function>
+	</title>
+	<para>
+	    See function <function>t_forward_nonack([ip, port])</function>.
+	</para>
+    </section>
+
 	<section id="t_set_fr">
 	<section id="t_set_fr">
 	<title>
 	<title>
 	    <function>t_set_fr(fr_inv_timeout [, fr_timeout])</function>
 	    <function>t_set_fr(fr_inv_timeout [, fr_timeout])</function>
@@ -896,8 +947,7 @@ if (method == CANCEL) {
 
 
     <section id="t_lookup_cancel">
     <section id="t_lookup_cancel">
 	<title>
 	<title>
-	    <function>t_lookup_cancel()</function>,
-	    <function>t_lookup_cancel(1)</function>
+	    <function>t_lookup_cancel([1])</function>
 	</title>
 	</title>
 	<para>
 	<para>
 		Returns true if the corresponding INVITE transaction exists
 		Returns true if the corresponding INVITE transaction exists