[Pkg-voip-commits] [kamailio] 02/07: remove already applied upstream patches

Victor Seva Lopez maniac-guest at moszumanska.debian.org
Tue Aug 11 14:52:13 UTC 2015


This is an automated email from the git hooks/post-receive script.

maniac-guest pushed a commit to branch master
in repository kamailio.

commit 95a43047a55742c6afb0a0a8ae9c12726df7cab3
Author: Victor Seva <linuxmaniac at torreviejawireless.org>
Date:   Mon Jul 20 20:34:02 2015 +0200

    remove already applied upstream patches
---
 debian/patches/series                              |   24 -
 ...te-documentation-concerning-xavp_contact-.patch |   50 -
 ...-restore-contact-attributes-when-serial-f.patch | 1216 --------------------
 ...ll-contact-attributes-are-initialised-to-.patch |   26 -
 ...0004-dispatcher-Fix-typo-in-error-message.patch |   26 -
 ...-added-priority_ordering-module-parameter.patch |  755 ------------
 ...les-lcr-added-priority_ordering-module-pa.patch |  756 ------------
 .../0007-uac-updated-notes-about-uac_auth.patch    |   63 -
 ...ntrant-mutex-for-dialogs-hash-table-slots.patch |  178 ---
 .../0009-dialog-removed-unused-variable.patch      |   25 -
 .../upstream/0010-utils-fixed-indentation.patch    |  249 ----
 .../0011-Makefile.defs-fixes-indentation.patch     |   31 -
 ...w-type-field-in-domain_attrs-to-be-a-DB1_.patch |   40 -
 ...t-return-0-if-no-match-for-sdp_get_line_s.patch |   30 -
 ...mailio-user-home-dir-set-to-var-run-kamai.patch |   30 -
 ...api-evapi_close-doesn-t-use-any-parameter.patch |   26 -
 ...r-log-level-set-to-notice-for-importing-u.patch |   28 -
 .../0017-uac-fixed-typos-in-log-message.patch      |   26 -
 ...more-documentation-for-exported-functions.patch |   59 -
 ...on-proper-access-to-items-in-routes-array.patch |  138 ---
 ...-print-the-message-after-relaying-to-evap.patch |   45 -
 ...ty-check-for-branch-index-stored-interanl.patch |   39 -
 ...-documentation-about-json-routing-documen.patch |  131 ---
 .../0023-rtjson-updated-the-readme-content.patch   |   77 --
 .../upstream/0024-uac-refreshed-the-readme.patch   |  325 ------
 25 files changed, 4393 deletions(-)

diff --git a/debian/patches/series b/debian/patches/series
index a517f5e..4c0ffd7 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,27 +1,3 @@
-upstream/0001-usrloc-Update-documentation-concerning-xavp_contact-.patch
-upstream/0002-tm-Load-and-restore-contact-attributes-when-serial-f.patch
-upstream/0003-tm-Ensure-all-contact-attributes-are-initialised-to-.patch
-upstream/0004-dispatcher-Fix-typo-in-error-message.patch
-upstream/0005-modules-lcr-added-priority_ordering-module-parameter.patch
-upstream/0006-Revert-modules-lcr-added-priority_ordering-module-pa.patch
-upstream/0007-uac-updated-notes-about-uac_auth.patch
-upstream/0008-dialog-re-entrant-mutex-for-dialogs-hash-table-slots.patch
-upstream/0009-dialog-removed-unused-variable.patch
-upstream/0010-utils-fixed-indentation.patch
-upstream/0011-Makefile.defs-fixes-indentation.patch
-upstream/0012-domain-allow-type-field-in-domain_attrs-to-be-a-DB1_.patch
-upstream/0013-sdpops-don-t-return-0-if-no-match-for-sdp_get_line_s.patch
-upstream/0014-Makefile-kamailio-user-home-dir-set-to-var-run-kamai.patch
-upstream/0015-evapi-evapi_close-doesn-t-use-any-parameter.patch
-upstream/0016-rtjson-error-log-level-set-to-notice-for-importing-u.patch
-upstream/0017-uac-fixed-typos-in-log-message.patch
-upstream/0018-evapi-more-documentation-for-exported-functions.patch
-upstream/0019-rtjson-proper-access-to-items-in-routes-array.patch
-upstream/0020-evapi-don-t-print-the-message-after-relaying-to-evap.patch
-upstream/0021-rtjson-safety-check-for-branch-index-stored-interanl.patch
-upstream/0022-rtjson-more-documentation-about-json-routing-documen.patch
-upstream/0023-rtjson-updated-the-readme-content.patch
-upstream/0024-uac-refreshed-the-readme.patch
 no_lib64_on_64_bits.patch
 no_INSTALL_file.patch
 fix_export.patch
diff --git a/debian/patches/upstream/0001-usrloc-Update-documentation-concerning-xavp_contact-.patch b/debian/patches/upstream/0001-usrloc-Update-documentation-concerning-xavp_contact-.patch
deleted file mode 100644
index 6b47148..0000000
--- a/debian/patches/upstream/0001-usrloc-Update-documentation-concerning-xavp_contact-.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 1396a656ee9653a94bf1d3470fc2054b54fa40e5 Mon Sep 17 00:00:00 2001
-From: Hugh Waite <hugh.waite at acision.com>
-Date: Wed, 27 May 2015 14:33:06 +0100
-Subject: [PATCH] usrloc: Update documentation concerning xavp_contact
- parameter
-
-- Note that tm xavp_contact parameter must match
-(cherry picked from commit b4488aa7d743b7f14bc0232beaa69f3591aa1b66)
----
- modules/usrloc/README               | 6 ++++--
- modules/usrloc/doc/usrloc_admin.xml | 6 ++++--
- 2 files changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/modules/usrloc/README b/modules/usrloc/README
-index bd5daaa..b0d551a 100644
---- a/modules/usrloc/README
-+++ b/modules/usrloc/README
-@@ -807,8 +807,10 @@ modparam("usrloc", "timer_procs", 4)
- 
- 3.34. xavp_contact (string)
- 
--   The name of XAVP storring the attributes per contact. They are saved in
--   location record and restored at lookup.
-+   The name of XAVP storing the attributes per contact. They are saved in
-+   location record and restored at lookup. The tm module parameter
-+   xavp_contact must also be set to the same value to use the
-+   t_load_contacts and t_next_contacts functions.
- 
-    Default value is "NULL".
- 
-diff --git a/modules/usrloc/doc/usrloc_admin.xml b/modules/usrloc/doc/usrloc_admin.xml
-index ee569a4..eb5c53d 100644
---- a/modules/usrloc/doc/usrloc_admin.xml
-+++ b/modules/usrloc/doc/usrloc_admin.xml
-@@ -895,8 +895,10 @@ modparam("usrloc", "timer_procs", 4)
- 	<section id="usrloc.p.xavp_contact">
- 		<title><varname>xavp_contact</varname> (string)</title>
- 		<para>
--		The name of XAVP storring the attributes per contact. They are saved
--		in location record and restored at lookup.
-+		The name of XAVP storing the attributes per contact. They are saved
-+		in location record and restored at lookup. The tm module parameter
-+		<varname>xavp_contact</varname> must also be set to the same value to use the
-+		<varname>t_load_contacts</varname> and <varname>t_next_contacts</varname> functions.
- 		</para>
- 		<para>
- 		<emphasis>
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0002-tm-Load-and-restore-contact-attributes-when-serial-f.patch b/debian/patches/upstream/0002-tm-Load-and-restore-contact-attributes-when-serial-f.patch
deleted file mode 100644
index 29b618a..0000000
--- a/debian/patches/upstream/0002-tm-Load-and-restore-contact-attributes-when-serial-f.patch
+++ /dev/null
@@ -1,1216 +0,0 @@
-From 8ca68616a289a342f2ccedb42c7889294cebc4af Mon Sep 17 00:00:00 2001
-From: Hugh Waite <hugh.waite at acision.com>
-Date: Wed, 27 May 2015 14:36:56 +0100
-Subject: [PATCH] tm: Load and restore contact attributes when serial forking
-
-- Add xavp_contact parameter for name of xavp holding attributes from usrloc
-- t_load_contacts: Load per branch attributes into contact XAVP
-- t_next_contacts/t_next_contact_flow: Restore branch attributes
-(cherry picked from commit 4033b77bf99b1521df8add14c6abea3c85d225d1)
----
- modules/tm/README         | 310 ++++++++++++++++++++++++----------------------
- modules/tm/doc/params.xml |  21 ++++
- modules/tm/t_serial.c     |  51 +++++++-
- modules/tm/tm.c           |   2 +
- 4 files changed, 233 insertions(+), 151 deletions(-)
-
-diff --git a/modules/tm/README b/modules/tm/README
-index 3b30194..3e1ebec 100644
---- a/modules/tm/README
-+++ b/modules/tm/README
-@@ -67,6 +67,7 @@ Juha Heinanen
-               4.43. remap_503_500 (boolean)
-               4.44. failure_exec_mode (boolean)
-               4.45. dns_reuse_rcv_socket (boolean)
-+              4.46. xavp_contact (string)
- 
-         5. Functions
- 
-@@ -189,51 +190,52 @@ Juha Heinanen
-    1.43. Set remap_503_500 parameter
-    1.44. Set failure_exec_mode parameter
-    1.45. Set dns_reuse_rcv_socket parameter
--   1.46. t_relay usage
--   1.47. t_relay_to_udp usage
--   1.48. t_on_failure usage
--   1.49. t_on_branch_failure usage
--   1.50. t_on_reply usage
--   1.51. t_on_branch usage
--   1.52. t_newtran usage
--   1.53. t_reply usage
--   1.54. t_lookup_request usage
--   1.55. t_retransmit_reply usage
--   1.56. t_release usage
--   1.57. t_forward_nonack usage
--   1.58. t_set_fr usage
--   1.59. t_reset_fr usage
--   1.60. t_set_max_lifetime usage
--   1.61. t_reset_max_lifetime usage
--   1.62. t_set_retr usage
--   1.63. t_reset_retr usage
--   1.64. t_set_auto_inv_100 usage
--   1.65. t_branch_timeout usage
--   1.66. t_branch_replied usage
--   1.67. t_any_timeout usage
--   1.68. t_any_replied usage
--   1.69. t_grep_status usage
--   1.70. t_is_canceled usage
--   1.71. t_is_expired usage
--   1.72. t_relay_cancel usage
--   1.73. t_lookup_cancel usage
--   1.74. t_drop_replies() usage
--   1.75. t_save_lumps() usage
--   1.76. t_load_contacts usage
--   1.77. t_next_contacts usage
--   1.78. t_next_contact_flow usage
--   1.79. t_check_status usage
--   1.80. t_check_trans usage
--   1.81. t_set_disable_6xx usage
--   1.82. t_set_disable_failover usage
--   1.83. t_set_disable_internal_reply usage
--   1.84. t_replicate usage
--   1.85. t_relay_to usage
--   1.86. t_set_no_e2e_cancel_reason usage
--   1.87. t_replicate usage
--   1.88. t_use_uac_headers usage
--   1.89. t_is_retr_async_reply usage
--   1.90. event_route[tm:branch-failure] usage
-+   1.46. Set xavp_contact parameter
-+   1.47. t_relay usage
-+   1.48. t_relay_to_udp usage
-+   1.49. t_on_failure usage
-+   1.50. t_on_branch_failure usage
-+   1.51. t_on_reply usage
-+   1.52. t_on_branch usage
-+   1.53. t_newtran usage
-+   1.54. t_reply usage
-+   1.55. t_lookup_request usage
-+   1.56. t_retransmit_reply usage
-+   1.57. t_release usage
-+   1.58. t_forward_nonack usage
-+   1.59. t_set_fr usage
-+   1.60. t_reset_fr usage
-+   1.61. t_set_max_lifetime usage
-+   1.62. t_reset_max_lifetime usage
-+   1.63. t_set_retr usage
-+   1.64. t_reset_retr usage
-+   1.65. t_set_auto_inv_100 usage
-+   1.66. t_branch_timeout usage
-+   1.67. t_branch_replied usage
-+   1.68. t_any_timeout usage
-+   1.69. t_any_replied usage
-+   1.70. t_grep_status usage
-+   1.71. t_is_canceled usage
-+   1.72. t_is_expired usage
-+   1.73. t_relay_cancel usage
-+   1.74. t_lookup_cancel usage
-+   1.75. t_drop_replies() usage
-+   1.76. t_save_lumps() usage
-+   1.77. t_load_contacts usage
-+   1.78. t_next_contacts usage
-+   1.79. t_next_contact_flow usage
-+   1.80. t_check_status usage
-+   1.81. t_check_trans usage
-+   1.82. t_set_disable_6xx usage
-+   1.83. t_set_disable_failover usage
-+   1.84. t_set_disable_internal_reply usage
-+   1.85. t_replicate usage
-+   1.86. t_relay_to usage
-+   1.87. t_set_no_e2e_cancel_reason usage
-+   1.88. t_replicate usage
-+   1.89. t_use_uac_headers usage
-+   1.90. t_is_retr_async_reply usage
-+   1.91. event_route[tm:branch-failure] usage
- 
- Chapter 1. Admin Guide
- 
-@@ -289,6 +291,7 @@ Chapter 1. Admin Guide
-         4.43. remap_503_500 (boolean)
-         4.44. failure_exec_mode (boolean)
-         4.45. dns_reuse_rcv_socket (boolean)
-+        4.46. xavp_contact (string)
- 
-    5. Functions
- 
-@@ -655,6 +658,7 @@ failure_route["serial"]
-    4.43. remap_503_500 (boolean)
-    4.44. failure_exec_mode (boolean)
-    4.45. dns_reuse_rcv_socket (boolean)
-+   4.46. xavp_contact (string)
- 
- 4.1. fr_timer (integer)
- 
-@@ -1564,6 +1568,18 @@ modparam("tm", "failure_exec_mode", 1)
- modparam("tm", "dns_reuse_rcv_socket", 1)
- ...
- 
-+4.46. xavp_contact (string)
-+
-+   The name of XAVP storing the attributes per contact. This must be the
-+   same as the usrloc parameter xavp_contacts.
-+
-+   Default value is "NULL".
-+
-+   Example 1.46. Set xavp_contact parameter
-+...
-+modparam("tm|usrloc", "xavp_contact", "ulattrs")
-+...
-+
- 5. Functions
- 
-    5.1. t_relay([host, port])
-@@ -1618,7 +1634,7 @@ modparam("tm", "dns_reuse_rcv_socket", 1)
-    5.50. t_use_uac_headers()
-    5.51. t_is_retr_async_reply()
- 
--5.1. t_relay([host, port])
-+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
-@@ -1637,7 +1653,7 @@ modparam("tm", "dns_reuse_rcv_socket", 1)
-    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.46. t_relay usage
-+   Example 1.47. t_relay usage
- ...
- if (!t_relay())
- {
-@@ -1646,7 +1662,7 @@ if (!t_relay())
- };
- ...
- 
--5.2. t_relay_to_udp([ip, port])
-+5.2.  t_relay_to_udp([ip, port])
- 
-    Relay a message statefully using a fixed protocol either to the
-    specified fixed destination or to a destination derived from the
-@@ -1664,7 +1680,7 @@ if (!t_relay())
-    derived from the message uri (using sip sepcific DNS lookups), but with
-    the protocol corresponding to the function name.
- 
--   Example 1.47. t_relay_to_udp usage
-+   Example 1.48. 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
-@@ -1672,19 +1688,19 @@ else
-         t_relay_to_tcp(); # relay to msg. uri, but over tcp
- ...
- 
--5.3. t_relay_to_tcp([ip, port])
-+5.3.  t_relay_to_tcp([ip, port])
- 
-    See function t_relay_to_udp([ip, port]).
- 
--5.4. t_relay_to_tls([ip, port])
-+5.4.  t_relay_to_tls([ip, port])
- 
-    See function t_relay_to_udp([ip, port]).
- 
--5.5. t_relay_to_sctp([ip, port])
-+5.5.  t_relay_to_sctp([ip, port])
- 
-    See function t_relay_to_udp([ip, port]).
- 
--5.6. t_on_failure(failure_route)
-+5.6.  t_on_failure(failure_route)
- 
-    Sets failure routing block, to which control is passed after a
-    transaction completed with a negative result but before sending a final
-@@ -1704,7 +1720,7 @@ else
-    Meaning of the parameters is as follows:
-      * failure_route - Failure route block to be called.
- 
--   Example 1.48. t_on_failure usage
-+   Example 1.49. t_on_failure usage
- ...
- route {
-     t_on_failure("1");
-@@ -1721,7 +1737,7 @@ failure_route[1] {
-    See test/onr.cfg for a more complex example of combination of serial
-    with parallel forking.
- 
--5.7. t_on_branch_failure(branch_failure_route)
-+5.7.  t_on_branch_failure(branch_failure_route)
- 
-    Sets the branch_failure routing block, to which control is passed on
-    each negative response to a transaction. This route is run before
-@@ -1740,7 +1756,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.49. t_on_branch_failure usage
-+   Example 1.50. t_on_branch_failure usage
- ...
- route {
-     t_on_branch_failure("myroute");
-@@ -1754,7 +1770,7 @@ event_route[tm:branch-failure:myroute] {
- }
- ...
- 
--5.8. t_on_reply(onreply_route)
-+5.8.  t_on_reply(onreply_route)
- 
-    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
-@@ -1763,7 +1779,7 @@ event_route[tm:branch-failure:myroute] {
-    Meaning of the parameters is as follows:
-      * onreply_route - Onreply route block to be called.
- 
--   Example 1.50. t_on_reply usage
-+   Example 1.51. t_on_reply usage
- ...
- loadmodule "/usr/local/lib/ser/modules/nathelper.so"
- ...
-@@ -1784,7 +1800,7 @@ es');
-         }
- }
- 
--5.9. t_on_branch(branch_route)
-+5.9.  t_on_branch(branch_route)
- 
-    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
-@@ -1795,7 +1811,7 @@ es');
-    Meaning of the parameters is as follows:
-      * branch_route - branch route block to be called.
- 
--   Example 1.51. t_on_branch usage
-+   Example 1.52. t_on_branch usage
- ...
- route {
-         t_on_branch("1");
-@@ -1808,13 +1824,13 @@ branch_route[1] {
-         }
- }
- 
--5.10. t_newtran()
-+5.10.  t_newtran()
- 
-    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.
-    Typically, it is used to deploy a UAS.
- 
--   Example 1.52. t_newtran usage
-+   Example 1.53. t_newtran usage
- ...
- if (t_newtran()) {
-     log("UAS logic");
-@@ -1824,7 +1840,7 @@ if (t_newtran()) {
- 
-    See test/uas.cfg for more examples.
- 
--5.11. t_reply(code, reason_phrase)
-+5.11.  t_reply(code, reason_phrase)
- 
-    Sends a stateful reply after a transaction has been established. See
-    t_newtran for usage.
-@@ -1844,12 +1860,12 @@ if (t_newtran()) {
-      * code - Reply code number.
-      * reason_phrase - Reason string.
- 
--   Example 1.53. t_reply usage
-+   Example 1.54. t_reply usage
- ...
- t_reply("404", "Not found");
- ...
- 
--5.12. t_lookup_request()
-+5.12.  t_lookup_request()
- 
-    Checks if a transaction exists. Returns a positive value if so,
-    negative otherwise. Most likely you will not want to use it, as a
-@@ -1857,33 +1873,33 @@ t_reply("404", "Not found");
-    none was found. However this is safely (atomically) done using
-    t_newtran.
- 
--   Example 1.54. t_lookup_request usage
-+   Example 1.55. t_lookup_request usage
- ...
- if (t_lookup_request()) {
-     ...
- };
- ...
- 
--5.13. t_retransmit_reply()
-+5.13.  t_retransmit_reply()
- 
-    Retransmits a reply sent previously by UAS transaction.
- 
--   Example 1.55. t_retransmit_reply usage
-+   Example 1.56. t_retransmit_reply usage
- ...
- t_retransmit_reply();
- ...
- 
--5.14. t_release()
-+5.14.  t_release()
- 
-    Remove transaction from memory (it will be first put on a wait timer to
-    absorb delayed messages).
- 
--   Example 1.56. t_release usage
-+   Example 1.57. t_release usage
- ...
- t_release();
- ...
- 
--5.15. t_forward_nonack([ip, port])
-+5.15.  t_forward_nonack([ip, port])
- 
-    Mainly for internal usage -- forward a non-ACK request statefully.
-    Variants of this functions can enforce a specific transport protocol.
-@@ -1892,28 +1908,28 @@ t_release();
-      * ip - IP address where the message should be sent.
-      * port - Port number.
- 
--   Example 1.57. t_forward_nonack usage
-+   Example 1.58. t_forward_nonack usage
- ...
- t_forward_nonack("1.2.3.4", "5060");
- ...
- 
--5.16. t_forward_nonack_udp(ip, port)
-+5.16.  t_forward_nonack_udp(ip, port)
- 
-    See function t_forward_nonack([ip, port]).
- 
--5.17. t_forward_nonack_tcp(ip, port)
-+5.17.  t_forward_nonack_tcp(ip, port)
- 
-    See function t_forward_nonack([ip, port]).
- 
--5.18. t_forward_nonack_tls(ip, port)
-+5.18.  t_forward_nonack_tls(ip, port)
- 
-    See function t_forward_nonack([ip, port]).
- 
--5.19. t_forward_nonack_sctp(ip, port)
-+5.19.  t_forward_nonack_sctp(ip, port)
- 
-    See function t_forward_nonack([ip, port]).
- 
--5.20. t_set_fr(fr_inv_timeout [, fr_timeout])
-+5.20.  t_set_fr(fr_inv_timeout [, fr_timeout])
- 
-    Sets the fr_inv_timeout and optionally fr_timeout for the current
-    transaction or for transactions created during the same script
-@@ -1931,7 +1947,7 @@ t_forward_nonack("1.2.3.4", "5060");
- 
-    See also: fr_timer, fr_inv_timer, t_reset_fr().
- 
--   Example 1.58. t_set_fr usage
-+   Example 1.59. t_set_fr usage
- ...
- route {
-         t_set_fr(10000); # set only fr invite timeout to 10s
-@@ -1947,7 +1963,7 @@ branch_route[1] {
-         }
- }
- 
--5.21. t_reset_fr()
-+5.21.  t_reset_fr()
- 
-    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
-@@ -1958,7 +1974,7 @@ branch_route[1] {
- 
-    See also: fr_timer, fr_inv_timer, t_set_fr.
- 
--   Example 1.59. t_reset_fr usage
-+   Example 1.60. t_reset_fr usage
- ...
- route {
- ...
-@@ -1966,7 +1982,7 @@ route {
- ...
- }
- 
--5.22. t_set_max_lifetime(inv_lifetime, noninv_lifetime)
-+5.22.  t_set_max_lifetime(inv_lifetime, noninv_lifetime)
- 
-    Sets the maximum lifetime for the current INVITE or non-INVITE
-    transaction, or for transactions created during the same script
-@@ -1984,7 +2000,7 @@ route {
- 
-    See also: max_inv_lifetime, max_noninv_lifetime, t_reset_max_lifetime.
- 
--   Example 1.60. t_set_max_lifetime usage
-+   Example 1.61. t_set_max_lifetime usage
- ...
- route {
-     if (src_ip=1.2.3.4)
-@@ -1995,7 +2011,7 @@ route {
-                                           # INVITE and to 15s if not
- }
- 
--5.23. t_reset_max_lifetime()
-+5.23.  t_reset_max_lifetime()
- 
-    Resets the the maximum lifetime for the current INVITE or non-INVITE
-    transaction to the default value (set using the tm module parameter
-@@ -2006,7 +2022,7 @@ route {
- 
-    See also: max_inv_lifetime, max_noninv_lifetime, t_set_max_lifetime.
- 
--   Example 1.61. t_reset_max_lifetime usage
-+   Example 1.62. t_reset_max_lifetime usage
- ...
- route {
- ...
-@@ -2014,7 +2030,7 @@ route {
- ...
- }
- 
--5.24. t_set_retr(retr_t1_interval, retr_t2_interval)
-+5.24.  t_set_retr(retr_t1_interval, retr_t2_interval)
- 
-    Sets the retr_t1_interval and retr_t2_interval for the current
-    transaction or for transactions created during the same script
-@@ -2044,7 +2060,7 @@ route {
- 
-    See also: retr_timer1, retr_timer2, t_reset_retr().
- 
--   Example 1.62. t_set_retr usage
-+   Example 1.63. t_set_retr usage
- ...
- route {
-         t_set_retr(250, 0); # set only T1 to 250 ms
-@@ -2060,7 +2076,7 @@ branch_route[1] {
-         }
- }
- 
--5.25. t_reset_retr()
-+5.25.  t_reset_retr()
- 
-    Resets the retr_timer1 and retr_timer2 for the current transaction to
-    the default values (set using the tm module parameters retr_timer1 and
-@@ -2071,7 +2087,7 @@ branch_route[1] {
- 
-    See also: retr_timer1, retr_timer2, t_set_retr.
- 
--   Example 1.63. t_reset_retr usage
-+   Example 1.64. t_reset_retr usage
- ...
- route {
- ...
-@@ -2079,7 +2095,7 @@ route {
- ...
- }
- 
--5.26. t_set_auto_inv_100(0|1)
-+5.26.  t_set_auto_inv_100(0|1)
- 
-    Switch automatically sending 100 replies to INVITEs on/off on a per
-    transaction basis. It overrides the auto_inv_100 value for the current
-@@ -2087,7 +2103,7 @@ route {
- 
-    See also: auto_inv_100.
- 
--   Example 1.64. t_set_auto_inv_100 usage
-+   Example 1.65. t_set_auto_inv_100 usage
- ...
- route {
- ...
-@@ -2096,13 +2112,13 @@ route {
- ...
- }
- 
--5.27. t_branch_timeout()
-+5.27.  t_branch_timeout()
- 
-    Returns true if the failure route is executed for a branch that did
-    timeout. It can be used from failure_route and branch-failure event
-    route.
- 
--   Example 1.65. t_branch_timeout usage
-+   Example 1.66. t_branch_timeout usage
- ...
- failure_route[0]{
-         if (t_branch_timeout()){
-@@ -2111,14 +2127,14 @@ failure_route[0]{
-         }
- }
- 
--5.28. t_branch_replied()
-+5.28.  t_branch_replied()
- 
-    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
-    taken into account). It can be used from failure_route and
-    branch-failure event route.
- 
--   Example 1.66. t_branch_replied usage
-+   Example 1.67. t_branch_replied usage
- ...
- failure_route[0]{
-         if (t_branch_timeout()){
-@@ -2130,12 +2146,12 @@ failure_route[0]{
-         }
- }
- 
--5.29. t_any_timeout()
-+5.29.  t_any_timeout()
- 
-    Returns true if at least one of the current transactions branches did
-    timeout.
- 
--   Example 1.67. t_any_timeout usage
-+   Example 1.68. t_any_timeout usage
- ...
- failure_route[0]{
-         if (!t_branch_timeout()){
-@@ -2146,13 +2162,13 @@ failure_route[0]{
-         }
- }
- 
--5.30. t_any_replied()
-+5.30.  t_any_replied()
- 
-    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
-    route, the "current" reply is not taken into account.
- 
--   Example 1.68. t_any_replied usage
-+   Example 1.69. t_any_replied usage
- ...
- onreply_route[0]{
-         if (!t_any_replied()){
-@@ -2161,12 +2177,12 @@ onreply_route[0]{
-         }
- }
- 
--5.31. t_grep_status("code")
-+5.31.  t_grep_status("code")
- 
-    Returns true if "code" is the final reply received (or locally
-    generated) in at least one of the current transactions branches.
- 
--   Example 1.69. t_grep_status usage
-+   Example 1.70. t_grep_status usage
- ...
- onreply_route[0]{
-         if (t_grep_status("486")){
-@@ -2175,11 +2191,11 @@ onreply_route[0]{
-         }
- }
- 
--5.32. t_is_canceled()
-+5.32.  t_is_canceled()
- 
-    Returns true if the current transaction was canceled.
- 
--   Example 1.70. t_is_canceled usage
-+   Example 1.71. t_is_canceled usage
- ...
- failure_route[0]{
-         if (t_is_canceled()){
-@@ -2188,12 +2204,12 @@ failure_route[0]{
-         }
- }
- 
--5.33. t_is_expired()
-+5.33.  t_is_expired()
- 
-    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.71. t_is_expired usage
-+   Example 1.72. t_is_expired usage
- ...
- failure_route[0]{
-         if (t_is_expired()){
-@@ -2202,7 +2218,7 @@ failure_route[0]{
-         }
- }
- 
--5.34. t_relay_cancel()
-+5.34.  t_relay_cancel()
- 
-    Forwards the CANCEL if the corresponding INVITE transaction exists. The
-    function is supposed to be used at the very beginning of the script,
-@@ -2214,7 +2230,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.72. t_relay_cancel usage
-+   Example 1.73. t_relay_cancel usage
- if (method == CANCEL) {
-         if (!t_relay_cancel()) {  # implicit drop if relaying was successful,
-                                   # nothing to do
-@@ -2227,7 +2243,7 @@ if (method == CANCEL) {
-         # do the same as for INVITEs
- }
- 
--5.35. t_lookup_cancel([1])
-+5.35.  t_lookup_cancel([1])
- 
-    Returns true if the corresponding INVITE transaction exists for a
-    CANCEL request. The function can be called at the beginning of the
-@@ -2241,7 +2257,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.73. t_lookup_cancel usage
-+   Example 1.74. t_lookup_cancel usage
- if (method == CANCEL) {
-         if (t_lookup_cancel()) {
-                 log("INVITE transaction exists");
-@@ -2259,7 +2275,7 @@ if (method == CANCEL) {
-         # do the same as for INVITEs
- }
- 
--5.36. t_drop_replies([mode])
-+5.36.  t_drop_replies([mode])
- 
-    Drops all the previously received replies in failure_route block to
-    make sure that none of them is picked up again.
-@@ -2271,7 +2287,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.74. t_drop_replies() usage
-+   Example 1.75. t_drop_replies() usage
- ...
- failure_route[0]{
-         if (t_check_status("5[0-9][0-9]")){
-@@ -2287,7 +2303,7 @@ failure_route[0]{
-         }
- }
- 
--5.37. t_save_lumps()
-+5.37.  t_save_lumps()
- 
-    Forces the modifications of the processed SIP message to be saved in
-    shared memory before t_relay() is called. The new branches which are
-@@ -2302,7 +2318,7 @@ failure_route[0]{
-    The transaction must be created by t_newtran() before calling
-    t_save_lumps().
- 
--   Example 1.75. t_save_lumps() usage
-+   Example 1.76. t_save_lumps() usage
- route {
-         ...
-         t_newtran();
-@@ -2327,7 +2343,7 @@ failure_route[1] {
-         t_relay();
- }
- 
--5.38. t_load_contacts()
-+5.38.  t_load_contacts()
- 
-    This is the first of the three functions that can be used to implement
-    serial/parallel forking based on q and +sip.instance values of
-@@ -2361,7 +2377,7 @@ failure_route[1] {
- 
-    This function can be used from REQUEST_ROUTE and FAILURE_ROUTE.
- 
--   Example 1.76. t_load_contacts usage
-+   Example 1.77. t_load_contacts usage
- ...
- if (!t_load_contacts()) {
-         sl_send_reply("500", "Server Internal Error - Cannot load contacts");
-@@ -2369,7 +2385,7 @@ if (!t_load_contacts()) {
- };
- ...
- 
--5.39. t_next_contacts()
-+5.39.  t_next_contacts()
- 
-    Function t_next_contacts() is the second of the three functions that
-    can be used to implement serial/parallel forking based on the q value
-@@ -2402,7 +2418,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.77. t_next_contacts usage
-+   Example 1.78. t_next_contacts usage
- ...
- # First call after t_load_contacts() when transaction does not exist yet
- # and contacts should be available
-@@ -2421,7 +2437,7 @@ if (!t_next_contacts()) {
- };
- ...
- 
--5.40. t_next_contact_flow()
-+5.40.  t_next_contact_flow()
- 
-    Function t_next_contact_flow() is the last of the three functions that
-    can be used to implement serial/parallel forking based on the q value
-@@ -2439,7 +2455,7 @@ if (!t_next_contacts()) {
-    thus there was nothing to do, and returns -1 in case of an error (see
-    syslog). This function can be used from a BRANCH_FAILURE event route.
- 
--   Example 1.78. t_next_contact_flow usage
-+   Example 1.79. t_next_contact_flow usage
- ...
- event_route[tm:branch-failure:outbound]
- {
-@@ -2451,7 +2467,7 @@ event_route[tm:branch-failure:outbound]
-         }
- ...
- 
--5.41. t_check_status(re)
-+5.41.  t_check_status(re)
- 
-    Returns true if the regular expresion "re" match the reply code of the
-    response message as follows:
-@@ -2462,14 +2478,14 @@ event_route[tm:branch-failure:outbound]
- 
-    This function can be used from ANY_ROUTE .
- 
--   Example 1.79. t_check_status usage
-+   Example 1.80. t_check_status usage
- ...
- if (t_check_status("(487)|(408)")) {
-     log("487 or 408 negative reply\n");
- }
- ...
- 
--5.42. t_check_trans()
-+5.42.  t_check_trans()
- 
-    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
-@@ -2516,12 +2532,12 @@ Note
- 
-    See also: t_lookup_request(), t_lookup_cancel().
- 
--   Example 1.80. t_check_trans usage
-+   Example 1.81. 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()
- 
--5.43. t_set_disable_6xx(0|1)
-+5.43.  t_set_disable_6xx(0|1)
- 
-    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
-@@ -2531,7 +2547,7 @@ if ( method == "CANCEL" && !t_check_trans())
- 
-    See also: disable_6xx_block.
- 
--   Example 1.81. t_set_disable_6xx usage
-+   Example 1.82. t_set_disable_6xx usage
- ...
- route {
- ...
-@@ -2540,13 +2556,13 @@ route {
- ...
- }
- 
--5.44. t_set_disable_failover(0|1)
-+5.44.  t_set_disable_failover(0|1)
- 
-    Turn off/on dns failover on a per transaction basis.
- 
-    See also: use_dns_failover.
- 
--   Example 1.82. t_set_disable_failover usage
-+   Example 1.83. t_set_disable_failover usage
- ...
- route {
- ...
-@@ -2555,11 +2571,11 @@ route {
- ...
- }
- 
--5.45. t_set_disable_internal_reply(0|1)
-+5.45.  t_set_disable_internal_reply(0|1)
- 
-    Turn off/on sending internally a SIP reply in case of relay errors.
- 
--   Example 1.83. t_set_disable_internal_reply usage
-+   Example 1.84. t_set_disable_internal_reply usage
- ...
- t_set_disable_internal_reply(1); # turn off sending internal reply on error
- if(!t_relay()) {
-@@ -2567,7 +2583,7 @@ if(!t_relay()) {
- }
- ...
- 
--5.46. t_replicate([params])
-+5.46.  t_replicate([params])
- 
-    Replicate the SIP request to a specific address.
- 
-@@ -2590,7 +2606,7 @@ if(!t_relay()) {
-      * hostport - address in "host:port" format. It can be given via an
-        AVP.
- 
--   Example 1.84. t_replicate usage
-+   Example 1.85. t_replicate usage
- ...
- # sent to 1.2.3.4:5060 over tcp
- t_replicate("sip:1.2.3.4:5060;transport=tcp");
-@@ -2603,7 +2619,7 @@ t_replicate("sip:$var(h);transport=tls");
- t_replicate_to_udp("1.2.3.4", "5060");
- ...
- 
--5.47. t_relay_to(proxy, flags)
-+5.47.  t_relay_to(proxy, flags)
- 
-    Forward the SIP request to a specific address, controlling internal
-    behavior via flags.
-@@ -2624,7 +2640,7 @@ t_replicate_to_udp("1.2.3.4", "5060");
-           + 0x02 - do not generate reply on internal error.
-           + 0x04 - disable dns failover.
- 
--   Example 1.85. t_relay_to usage
-+   Example 1.86. t_relay_to usage
- ...
- # sent to 1.2.3.4:5060 over tcp
- t_relay_to("tcp:1.2.3.4:5060");
-@@ -2636,7 +2652,7 @@ t_relay_to("tls:1.2.3.4");
- t_relay_to("0x01");
- ...
- 
--5.48. t_set_no_e2e_cancel_reason(0|1)
-+5.48.  t_set_no_e2e_cancel_reason(0|1)
- 
-    Enables/disables reason header (RFC 3326) copying from the triggering
-    received CANCEL to the generated hop-by-hop CANCEL. 0 enables and 1
-@@ -2647,7 +2663,7 @@ t_relay_to("0x01");
- 
-    See also: e2e_cancel_reason.
- 
--   Example 1.86. t_set_no_e2e_cancel_reason usage
-+   Example 1.87. t_set_no_e2e_cancel_reason usage
- ...
- route {
- ...
-@@ -2657,7 +2673,7 @@ opying
- ...
- }
- 
--5.49. t_is_set(target)
-+5.49.  t_is_set(target)
- 
-    Return true if the attribute specified by 'target' is set for
-    transaction.
-@@ -2670,13 +2686,13 @@ opying
-      * onreply_route - the function returns true if an onreply route is
-        set to be executed.
- 
--   Example 1.87. t_replicate usage
-+   Example 1.88. t_replicate usage
- ...
- if(!t_is_set("failure_route"))
-     LM_DBG("no failure route will be executed for current transaction\n");
- ...
- 
--5.50. t_use_uac_headers()
-+5.50.  t_use_uac_headers()
- 
-    Set internal flags to tell tm to use UAC side for building headers for
-    local generated requests (ACK, CANCEL) - useful when changing From/To
-@@ -2684,12 +2700,12 @@ if(!t_is_set("failure_route"))
- 
-    It returns true.
- 
--   Example 1.88. t_use_uac_headers usage
-+   Example 1.89. t_use_uac_headers usage
- ...
- t_use_uac_headers();
- ...
- 
--5.51. t_is_retr_async_reply()
-+5.51.  t_is_retr_async_reply()
- 
-    Check to see if the reply is a retransmitted reply on a transaction
-    that is currently suspended asynchronously (suspended during reply
-@@ -2703,7 +2719,7 @@ t_use_uac_headers();
-    returns true if the transaction is currently reply suspended or false
-    if not.
- 
--   Example 1.89. t_is_retr_async_reply usage
-+   Example 1.90. t_is_retr_async_reply usage
- ...
- if (t_is_retr_async_reply()) {
-         xlog("L_DBG", "Dropping retransmitted reply which is still currently sus
-@@ -2792,7 +2808,7 @@ end of body
- 
- 6.2. Functions
- 
--6.2.1. register_tmcb(cb_type, cb_func)
-+6.2.1.  register_tmcb(cb_type, cb_func)
- 
-    For programmatic use only--register a function to be called back on an
-    event. See t_hooks.h for more details.
-@@ -2801,7 +2817,7 @@ end of body
-      * cb_type - Callback type.
-      * cb_func - Callback function.
- 
--6.2.2. load_tm(*import_structure)
-+6.2.2.  load_tm(*import_structure)
- 
-    For programmatic use only--import exported TM functions. See the acc
-    module for an example of use.
-@@ -2809,7 +2825,7 @@ end of body
-    Meaning of the parameters is as follows:
-      * import_structure - Pointer to the import structure.
- 
--6.2.3. int t_suspend(struct sip_msg *msg, unsigned int *hash_index, unsigned
-+6.2.3.  int t_suspend(struct sip_msg *msg, unsigned int *hash_index, unsigned
- int *label)
- 
-    For programmatic use only. This function together with t_continue() can
-@@ -2847,7 +2863,7 @@ int *label)
-    t_suspend() should return 0 to make sure that the script processing
-    does not continue.
- 
--6.2.4. int t_continue(unsigned int hash_index, unsigned int label, struct
-+6.2.4.  int t_continue(unsigned int hash_index, unsigned int label, struct
- action *route)
- 
-    For programmatic use only. This function is the pair of t_suspend(),
-@@ -2863,7 +2879,7 @@ action *route)
- 
-    Return value: 0 - success, <0 - error.
- 
--6.2.5. int t_cancel_suspend(unsigned int hash_index, unsigned int label)
-+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()
-    from the same process as it was executed before. t_cancel_suspend() can
-@@ -2883,7 +2899,7 @@ action *route)
- 
-    7.1. event_route[tm:branch-failure]
- 
--7.1. event_route[tm:branch-failure]
-+7.1.  event_route[tm:branch-failure]
- 
-    Named branch failure routes can be defined to run when when a failure
-    response is received. This allows handling failures on individual
-@@ -2893,7 +2909,7 @@ action *route)
-    enabled with the t_on_branch_failure function. This event_route uses
-    the BRANCH_FAILURE_ROUTE route type.
- 
--   Example 1.90. event_route[tm:branch-failure] usage
-+   Example 1.91. event_route[tm:branch-failure] usage
- ...
- route {
-     t_on_branch_failure("myroute");
-diff --git a/modules/tm/doc/params.xml b/modules/tm/doc/params.xml
-index c0cdf16..2e0099b 100644
---- a/modules/tm/doc/params.xml
-+++ b/modules/tm/doc/params.xml
-@@ -1407,4 +1407,25 @@ modparam("tm", "dns_reuse_rcv_socket", 1)
- 		</example>
- 	</section>
- 
-+	<section id="tm.p.xavp_contact">
-+		<title><varname>xavp_contact</varname> (string)</title>
-+		<para>
-+		The name of XAVP storing the attributes per contact. This must be the same as
-+		the usrloc parameter <varname>xavp_contacts</varname>.
-+		</para>
-+		<para>
-+		<emphasis>
-+			Default value is <quote>NULL</quote>.
-+		</emphasis>
-+		</para>
-+		<example>
-+		<title>Set <varname>xavp_contact</varname> parameter</title>
-+		<programlisting format="linespecific">
-+...
-+modparam("tm|usrloc", "xavp_contact", "ulattrs")
-+...
-+</programlisting>
-+		</example>
-+	</section>
-+
- </section>
-diff --git a/modules/tm/t_serial.c b/modules/tm/t_serial.c
-index b320759..ab83540 100644
---- a/modules/tm/t_serial.c
-+++ b/modules/tm/t_serial.c
-@@ -32,6 +32,7 @@
- #include "../../dset.h"
- #include "../../parser/msg_parser.h"
- #include "../../ut.h"
-+#include "../../xavp.h"
- #include "config.h"
- #include "t_funcs.h"
- #include "t_reply.h"
-@@ -40,6 +41,8 @@
- /* usr_avp flag for sequential forking */
- #define Q_FLAG      (1<<2)
- 
-+extern str ulattrs_xavp_name;
-+
- /* Struture where information regarding contacts is stored */
- struct contact {
- 	str uri;
-@@ -53,6 +56,7 @@ struct contact {
- 	unsigned int flags;
- 	unsigned short q_flag;
- 	struct contact *next;
-+	sr_xavp_t *ulattrs;
- };
- 
- struct instance_list {
-@@ -97,7 +101,7 @@ static str ua_name = {"ua", 2};
- 
- void add_contacts_avp(str *uri, str *dst_uri, str *path, str *sock_str,
- 		unsigned int flags, unsigned int q_flag, str *instance,
--		str *ruid, str *location_ua)
-+		str *ruid, str *location_ua, sr_xavp_t *ulattrs_xavp)
- {
- 	sr_xavp_t *record;
- 	sr_xval_t val;
-@@ -151,6 +155,8 @@ void add_contacts_avp(str *uri, str *dst_uri, str *path, str *sock_str,
- 		xavp_add_value(&ua_name, &val, &record);
- 	}
- 
-+	xavp_add(xavp_clone_level_nodata(ulattrs_xavp), &record);
-+
- 	val.type = SR_XTYPE_XAVP;
- 	val.v.xavp = record;
- 	if(xavp_add_value(&contacts_avp, &val, NULL)==NULL) {
-@@ -215,6 +221,10 @@ int t_load_contacts(struct sip_msg* msg, char* key, char* value)
- 		contacts->instance = msg->instance;
- 		contacts->ruid = msg->ruid;
- 		contacts->location_ua = msg->location_ua;
-+		if (ulattrs_xavp_name.s != NULL)
-+		{
-+			contacts->ulattrs = xavp_get_by_index(&ulattrs_xavp_name, 0, NULL);
-+		}
- 		first_idx = 0;
- 	} else {
- 		/* Insert first branch to first contact */
-@@ -234,6 +244,10 @@ int t_load_contacts(struct sip_msg* msg, char* key, char* value)
- 		contacts->ruid.len = branch->ruid_len;
- 		contacts->location_ua.s = branch->location_ua;
- 		contacts->location_ua.len = branch->location_ua_len;
-+		if (ulattrs_xavp_name.s != NULL)
-+		{
-+			contacts->ulattrs = xavp_get_by_index(&ulattrs_xavp_name, 1, NULL);
-+		}
- 		first_idx = 1;
- 	}
- 
-@@ -264,6 +278,10 @@ int t_load_contacts(struct sip_msg* msg, char* key, char* value)
- 		next->ruid.len = branch->ruid_len;
- 		next->location_ua.s = branch->location_ua;
- 		next->location_ua.len = branch->location_ua_len;
-+		if (ulattrs_xavp_name.s != NULL)
-+		{
-+			next->ulattrs = xavp_get_by_index(&ulattrs_xavp_name, idx + 1, NULL);
-+		}
- 		next->next = (struct contact *)0;
- 
- 		prev = (struct contact *)0;
-@@ -320,13 +338,17 @@ int t_load_contacts(struct sip_msg* msg, char* key, char* value)
- 
- 		add_contacts_avp(&(curr->uri), &(curr->dst_uri), &(curr->path),
- 				&sock_str, curr->flags, curr->q_flag,
--				&(curr->instance), &(curr->ruid), &(curr->location_ua));
-+				&(curr->instance), &(curr->ruid), &(curr->location_ua),
-+				curr->ulattrs);
- 
- 		curr = curr->next;
- 	}
- 
- 	/* Clear all branches */
- 	clear_branches();
-+	if (ulattrs_xavp_name.s != NULL){
-+		xavp_rm_by_name(&ulattrs_xavp_name, 1, NULL);
-+	}
- 
- 	/* Free contact list */
- 	free_contact_list(contacts);
-@@ -336,7 +358,7 @@ int t_load_contacts(struct sip_msg* msg, char* key, char* value)
- 
- void add_contact_flows_avp(str *uri, str *dst_uri, str *path, str *sock_str,
- 		unsigned int flags, str *instance, str *ruid,
--		str *location_ua)
-+		str *location_ua, sr_xavp_t *ulattrs_xavp)
- {
- 	sr_xavp_t *record;
- 	sr_xval_t val;
-@@ -382,6 +404,8 @@ void add_contact_flows_avp(str *uri, str *dst_uri, str *path, str *sock_str,
- 		xavp_add_value(&ua_name, &val, &record);
- 	}
- 
-+	xavp_add(ulattrs_xavp, &record);
-+
- 	val.type = SR_XTYPE_INT;
- 	val.v.i = flags;
- 	xavp_add_value(&flags_name, &val, &record);
-@@ -516,6 +540,12 @@ int t_next_contacts(struct sip_msg* msg, char* key, char* value)
- 		location_ua.len = 0;
- 	}
- 
-+	if (ulattrs_xavp_name.s != NULL)
-+	{
-+		vavp = xavp_extract(&ulattrs_xavp_name, &xavp->val.v.xavp);
-+		xavp_insert(vavp, 0, NULL);
-+	}
-+
- 	/* Rewrite Request-URI */
- 	rewrite_uri(msg, &uri);
- 
-@@ -627,8 +657,9 @@ int t_next_contacts(struct sip_msg* msg, char* key, char* value)
- 				ilp = ilp->next;
- 			}
- 			if (ilp) {
-+				vavp = (ulattrs_xavp_name.s != NULL)?xavp_extract(&ulattrs_xavp_name, &xavp->val.v.xavp):NULL;
- 				add_contact_flows_avp(&uri, &dst_uri, &path, &sock_str,
--						flags, &instance, &ruid, &location_ua);
-+						flags, &instance, &ruid, &location_ua, vavp);
- 				goto check_q_flag;
- 			}
- 			if (!q_flag) {
-@@ -672,6 +703,12 @@ int t_next_contacts(struct sip_msg* msg, char* key, char* value)
- 			return -1;
- 		}
- 
-+		if (ulattrs_xavp_name.s != NULL)
-+		{
-+			vavp = xavp_extract(&ulattrs_xavp_name, &xavp->val.v.xavp);
-+			xavp_insert(vavp, nr_branches, NULL);
-+		}
-+
- check_q_flag:
- 		if (q_flag) {
- 			free_instance_list(il);
-@@ -808,6 +845,12 @@ int t_next_contact_flow(struct sip_msg* msg, char* key, char* value)
- 			return -1;
- 		}
- 
-+		if (ulattrs_xavp_name.s != NULL)
-+		{
-+			vavp = xavp_extract(&ulattrs_xavp_name, &xavp->val.v.xavp);
-+			xavp_insert(vavp, nr_branches, NULL);
-+		}
-+
- 		xavp_rm(xavp, NULL);
- 		return 1;
- next_xavp:
-diff --git a/modules/tm/tm.c b/modules/tm/tm.c
-index b82775e..0293a1c 100644
---- a/modules/tm/tm.c
-+++ b/modules/tm/tm.c
-@@ -268,6 +268,7 @@ static char *fr_inv_timer_param = 0 /*FR_INV_TIMER_AVP*/;
- 
- str contacts_avp = {0, 0};
- str contact_flows_avp = {0, 0};
-+str ulattrs_xavp_name = {NULL, 0};
- 
- int tm_remap_503_500 = 1;
- 
-@@ -512,6 +513,7 @@ static param_export_t params[]={
- 	{"local_cancel_reason", PARAM_INT, &default_tm_cfg.local_cancel_reason   },
- 	{"e2e_cancel_reason",   PARAM_INT, &default_tm_cfg.e2e_cancel_reason     },
- #endif /* CANCEL_REASON_SUPPORT */
-+	{"xavp_contact",        PARAM_STR, &ulattrs_xavp_name                    },
- 	{0,0,0}
- };
- 
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0003-tm-Ensure-all-contact-attributes-are-initialised-to-.patch b/debian/patches/upstream/0003-tm-Ensure-all-contact-attributes-are-initialised-to-.patch
deleted file mode 100644
index 65a5cac..0000000
--- a/debian/patches/upstream/0003-tm-Ensure-all-contact-attributes-are-initialised-to-.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From b83c7fef0e4d5c3cab1e2d0ad46bab7e9a852118 Mon Sep 17 00:00:00 2001
-From: Hugh Waite <hugh.waite at acision.com>
-Date: Fri, 29 May 2015 14:40:53 +0100
-Subject: [PATCH] tm: Ensure all contact attributes are initialised to NULL
- when serial forking (cherry picked from commit
- 192cf785eead68980194e63b06e34bf8f5f861f3)
-
----
- modules/tm/t_serial.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/modules/tm/t_serial.c b/modules/tm/t_serial.c
-index ab83540..b278924 100644
---- a/modules/tm/t_serial.c
-+++ b/modules/tm/t_serial.c
-@@ -263,6 +263,7 @@ int t_load_contacts(struct sip_msg* msg, char* key, char* value)
- 			return -1;
- 		}
- 
-+		memset(next, 0, sizeof(struct contact));
- 		next->uri.s = branch->uri;
- 		next->uri.len = branch->len;
- 		next->dst_uri.s = branch->dst_uri;
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0004-dispatcher-Fix-typo-in-error-message.patch b/debian/patches/upstream/0004-dispatcher-Fix-typo-in-error-message.patch
deleted file mode 100644
index fe2ab6c..0000000
--- a/debian/patches/upstream/0004-dispatcher-Fix-typo-in-error-message.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 2b34e4def552444fd72b9dc4f4ae286b19a839b7 Mon Sep 17 00:00:00 2001
-From: Hugh Waite <hugh.waite at acision.com>
-Date: Thu, 11 Jun 2015 10:17:32 +0100
-Subject: [PATCH] dispatcher: Fix typo in error message (cherry picked from
- commit 55a7bf18d0663a9503320143958d0d9e2e845b26)
-
----
- modules/dispatcher/dispatcher.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/modules/dispatcher/dispatcher.c b/modules/dispatcher/dispatcher.c
-index 2e2c12f..c75b97d 100644
---- a/modules/dispatcher/dispatcher.c
-+++ b/modules/dispatcher/dispatcher.c
-@@ -764,7 +764,7 @@ static int ds_warn_fixup(void** param, int param_no)
- {
- 	if(!dst_avp_param.s || !grp_avp_param.s || !cnt_avp_param.s || !sock_avp_param.s)
- 	{
--		LM_ERR("failover functions used, but AVPs paraamters required"
-+		LM_ERR("failover functions used, but required AVP parameters"
- 				" are NULL -- feature disabled\n");
- 	}
- 	return 0;
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0005-modules-lcr-added-priority_ordering-module-parameter.patch b/debian/patches/upstream/0005-modules-lcr-added-priority_ordering-module-parameter.patch
deleted file mode 100644
index d899e3b..0000000
--- a/debian/patches/upstream/0005-modules-lcr-added-priority_ordering-module-parameter.patch
+++ /dev/null
@@ -1,755 +0,0 @@
-From 27d0e6d99ee512788f16ce4f6b6e4127dea420bd Mon Sep 17 00:00:00 2001
-From: Juha Heinanen <jh at tutpro.com>
-Date: Tue, 16 Jun 2015 11:37:45 +0300
-Subject: [PATCH] modules/lcr: added priority_ordering module parameter
-
-- allows ordering of matched gateways only by priority and weight
----
- modules/lcr/README            | 219 +++++++++++++++++++++++-------------------
- modules/lcr/doc/lcr_admin.xml |  48 ++++++++-
- modules/lcr/lcr_mod.c         |  23 ++++-
- 3 files changed, 183 insertions(+), 107 deletions(-)
-
-diff --git a/modules/lcr/README b/modules/lcr/README
-index 58268cf..e7d92eb 100644
---- a/modules/lcr/README
-+++ b/modules/lcr/README
-@@ -10,7 +10,7 @@ Juha Heinanen
- 
-    <jh at tutpro.com>
- 
--   Copyright (c) 2005-2014 Juha Heinanen
-+   Copyright © 2005-2014 Juha Heinanen
-      __________________________________________________________________
- 
-    Table of Contents
-@@ -62,12 +62,13 @@ Juha Heinanen
-               3.35. lcr_rule_hash_size (integer)
-               3.36. lcr_gw_count (integer)
-               3.37. dont_strip_or_tag_flag (integer)
--              3.38. fetch_rows (integer)
--              3.39. ping_interval (integer)
--              3.40. ping_inactivate_threshold (integer)
--              3.41. ping_valid_reply_codes (string)
--              3.42. ping_from (string)
--              3.43. ping_socket (string)
-+              3.38. priority_ordering (integer)
-+              3.39. fetch_rows (integer)
-+              3.40. ping_interval (integer)
-+              3.41. ping_inactivate_threshold (integer)
-+              3.42. ping_valid_reply_codes (string)
-+              3.43. ping_from (string)
-+              3.44. ping_socket (string)
- 
-         4. Functions
- 
-@@ -128,25 +129,26 @@ Juha Heinanen
-    1.35. Setting lcr_rule_hash_size module parameter
-    1.36. Setting lcr_gw_count module parameter
-    1.37. Setting dont_strip_or_tag_flag module parameter
--   1.38. Set fetch_rows parameter
--   1.39. Set ping_interval parameter
--   1.40. Set ping_inactive_threshold parameter
--   1.41. Set ping_valid_reply_codes parameter
--   1.42. Set ping_from parameter
--   1.43. Set ping_socket parameter
--   1.44. load_gws usage
--   1.45. next_gw usage from a route block
--   1.46. next_gw usage from a failure route block
--   1.47. inactivate_gw usage
--   1.48. defunct_gw usage
--   1.49. from_gw usage
-+   1.38. Setting priority_ordering module parameter
-+   1.39. Set fetch_rows parameter
-+   1.40. Set ping_interval parameter
-+   1.41. Set ping_inactivate_threshold parameter
-+   1.42. Set ping_valid_reply_codes parameter
-+   1.43. Set ping_from parameter
-+   1.44. Set ping_socket parameter
-+   1.45. load_gws usage
-+   1.46. next_gw usage from a route block
-+   1.47. next_gw usage from a failure route block
-+   1.48. inactivate_gw usage
-+   1.49. defunct_gw usage
-    1.50. from_gw usage
--   1.51. to_gw usage
-+   1.51. from_gw usage
-    1.52. to_gw usage
--   1.53. lcr.reload RPC example
--   1.54. lcr.dump_gws RPC example
--   1.55. lcr.dump_rules RPC example
--   1.56. lcr.defunct_gw RPC example
-+   1.53. to_gw usage
-+   1.54. lcr.reload RPC example
-+   1.55. lcr.dump_gws RPC example
-+   1.56. lcr.dump_rules RPC example
-+   1.57. lcr.defunct_gw RPC example
- 
- Chapter 1. Admin Guide
- 
-@@ -197,12 +199,13 @@ Chapter 1. Admin Guide
-         3.35. lcr_rule_hash_size (integer)
-         3.36. lcr_gw_count (integer)
-         3.37. dont_strip_or_tag_flag (integer)
--        3.38. fetch_rows (integer)
--        3.39. ping_interval (integer)
--        3.40. ping_inactivate_threshold (integer)
--        3.41. ping_valid_reply_codes (string)
--        3.42. ping_from (string)
--        3.43. ping_socket (string)
-+        3.38. priority_ordering (integer)
-+        3.39. fetch_rows (integer)
-+        3.40. ping_interval (integer)
-+        3.41. ping_inactivate_threshold (integer)
-+        3.42. ping_valid_reply_codes (string)
-+        3.43. ping_from (string)
-+        3.44. ping_socket (string)
- 
-    4. Functions
- 
-@@ -248,9 +251,14 @@ Chapter 1. Admin Guide
-    currently designated as defunct) are ordered for forwarding purposes as
-    follows:
- 
--     * (1) according to longest Request-URI user part match
--     * (2) according to tuple's priority
--     * (3) according to tuple's randomized weight
-+    1. according to longest Request-URI user part match
-+    2. according to tuple's priority
-+    3. according to tuple's randomized weight
-+
-+   or, if priority_ordering parameter is set to value 1, as follows:
-+
-+    1. according to tuple's priority
-+    2. according to tuple's randomized weight
- 
-    A tuple can be marked as a "stopper" tuple. If a "stopper" tuple
-    matches, then matching stops at it and all other tuples with shorter
-@@ -349,18 +357,19 @@ Chapter 1. Admin Guide
-    3.35. lcr_rule_hash_size (integer)
-    3.36. lcr_gw_count (integer)
-    3.37. dont_strip_or_tag_flag (integer)
--   3.38. fetch_rows (integer)
--   3.39. ping_interval (integer)
--   3.40. ping_inactivate_threshold (integer)
--   3.41. ping_valid_reply_codes (string)
--   3.42. ping_from (string)
--   3.43. ping_socket (string)
-+   3.38. priority_ordering (integer)
-+   3.39. fetch_rows (integer)
-+   3.40. ping_interval (integer)
-+   3.41. ping_inactivate_threshold (integer)
-+   3.42. ping_valid_reply_codes (string)
-+   3.43. ping_from (string)
-+   3.44. ping_socket (string)
- 
- 3.1. db_url (string)
- 
-    URL of the database table to be used.
- 
--   Default value is "mysql://kamailioro:kamailioro@localhost/kamailio".
-+   Default value is “mysql://kamailioro:kamailioro@localhost/kamailio”.
- 
-    Example 1.1. Setting db_url module parameter
- ...
-@@ -371,7 +380,7 @@ modparam("lcr","db_url","dbdriver://username:password@dbhost/dbname")
- 
-    Name of the table holding gateways definitions.
- 
--   Default value is "lcr_gw".
-+   Default value is “lcr_gw”.
- 
-    Example 1.2. Setting gw_table module parameter
- ...
-@@ -383,7 +392,7 @@ modparam("lcr", "lcr_gw_table","gw")
-    Name of the auto-increment, primary key column. Common to all lcr
-    module tables.
- 
--   Default value is "id".
-+   Default value is “id”.
- 
-    Example 1.3. Setting id_column module parameter
- ...
-@@ -397,7 +406,7 @@ modparam("lcr", "id_column", "row_id")
-    the column is integer from 1 to lcr_count. In lcr_gw table, value of
-    the column is from 0 to lcr_count.
- 
--   Default value is "lcr_id".
-+   Default value is “lcr_id”.
- 
-    Example 1.4. Setting lcr_id_column module parameter
- ...
-@@ -408,7 +417,7 @@ modparam("lcr", "lcr_id_column", "lcr_identifier")
- 
-    Name of the column holding gateway's name for documentation purpose.
- 
--   Default value is "gw_name".
-+   Default value is “gw_name”.
- 
-    Example 1.5. Setting gw_name_column module parameter
- ...
-@@ -419,7 +428,7 @@ modparam("lcr", "gw_name_column", "name")
- 
-    Name of the column holding the IPv4 or IPv6 address of the gateway.
- 
--   Default value is "ip_addr".
-+   Default value is “ip_addr”.
- 
-    Example 1.6. Setting ip_addr_column module parameter
- ...
-@@ -431,7 +440,7 @@ modparam("lcr", "ip_addr_column", "ip")
-    Name of the column holding gateway's hostname that is used in
-    Request-URI hostpart, when request is sent to the gateway.
- 
--   Default value is "hostname".
-+   Default value is “hostname”.
- 
-    Example 1.7. Setting hostname_column module parameter
- ...
-@@ -442,7 +451,7 @@ modparam("lcr", "hostname_column", "host")
- 
-    Name of the column holding the port number of the gateway.
- 
--   Default value is "port".
-+   Default value is “port”.
- 
-    Example 1.8. Setting port_column module parameter
- ...
-@@ -454,7 +463,7 @@ modparam("lcr", "port_column", "port")
-    Name of the column holding gateway's parameters that is used in
-    Request-URI, when request is sent to the gateway.
- 
--   Default value is "params".
-+   Default value is “params”.
- 
-    Example 1.9. Setting params_column module parameter
- ...
-@@ -465,7 +474,7 @@ modparam("lcr", "params_column", "parameters")
- 
-    Name of the column holding the uri scheme of the gateway.
- 
--   Default value is "uri_scheme".
-+   Default value is “uri_scheme”.
- 
-    Example 1.10. Setting uri_scheme_column module parameter
- ...
-@@ -477,7 +486,7 @@ modparam("lcr", "uri_scheme_column", "uri_scheme")
-    Name of the column holding the transport protocol to be used for the
-    gateway.
- 
--   Default value is "transport".
-+   Default value is “transport”.
- 
-    Example 1.11. Setting transport_column module parameter
- ...
-@@ -489,7 +498,7 @@ modparam("lcr", "transport_column", "trans")
-    Name of the column holding the number of characters to be stripped from
-    the front of Request-URI user part before inserting tag.
- 
--   Default value is "strip".
-+   Default value is “strip”.
- 
-    Example 1.12. Setting strip_column module parameter
- ...
-@@ -501,7 +510,7 @@ modparam("lcr", "strip_column", "strip_count")
-    Name of the column holding gateway specific tag string that is added to
-    Request URI userpart after stripping.
- 
--   Default value is "tag".
-+   Default value is “tag”.
- 
-    Example 1.13. Setting tag_column module parameter
- ...
-@@ -512,7 +521,7 @@ modparam("lcr", "tag_column", "gw_tag")
- 
-    Name of the column holding gateway specific flag values.
- 
--   Default value is "flags".
-+   Default value is “flags”.
- 
-    Example 1.14. Setting flags_column module parameter
- ...
-@@ -526,7 +535,7 @@ modparam("lcr", "flags_column", "gw_flags")
-    max UNIX timestamp value) or greater, gw is considered currently unused
-    and is not loaded into memory at all.
- 
--   Default value is "defunct".
-+   Default value is “defunct”.
- 
-    Example 1.15. Setting defunct_column module parameter
- ...
-@@ -537,7 +546,7 @@ modparam("lcr", "defunct_column", "defunct_until")
- 
-    Name of the table holding the LCR rules.
- 
--   Default value is "lcr_rule".
-+   Default value is “lcr_rule”.
- 
-    Example 1.16. Setting lcr_rule_table module parameter
- ...
-@@ -549,7 +558,7 @@ modparam("lcr", "lcr_rule_table", "rules")
-    Name of the column holding prefix of Request-URI user part and prefix
-    of gateway.
- 
--   Default value is "prefix".
-+   Default value is “prefix”.
- 
-    Example 1.17. Setting prefix_column module parameter
- ...
-@@ -560,7 +569,7 @@ modparam("lcr", "prefix_column", "number_prefix")
- 
-    Name of the column holding the From (caller's) URI.
- 
--   Default value is "from_uri".
-+   Default value is “from_uri”.
- 
-    Example 1.18. Setting from_uri_column module parameter
- ...
-@@ -572,7 +581,7 @@ modparam("lcr", "from_uri_column", "caller_uri")
-    Name of the column holding the regular expression to match against the
-    complete request URI (including the "sip:" prefix).
- 
--   Default value is "request_uri".
-+   Default value is “request_uri”.
- 
-    Example 1.19. Setting request_uri_column module parameter
- ...
-@@ -583,7 +592,7 @@ modparam("lcr", "request_uri_column", "callee_uri")
- 
-    Name of the column holding rule's stopper attribute.
- 
--   Default value is "stopper".
-+   Default value is “stopper”.
- 
-    Example 1.20. Setting stopper_column module parameter
- ...
-@@ -595,7 +604,7 @@ modparam("lcr", "stopper_column", "stop")
-    Name of the column telling is the rule is currently enabled or
-    disabled.
- 
--   Default value is "enabled".
-+   Default value is “enabled”.
- 
-    Example 1.21. Setting enabled_column module parameter
- ...
-@@ -607,7 +616,7 @@ modparam("lcr", "enabled_column", "in_use")
-    Name of the table holding information about the LCR rule targets
-    (gateways).
- 
--   Default value is "lcr_rule_target".
-+   Default value is “lcr_rule_target”.
- 
-    Example 1.22. Setting lcr_rule_target_table module parameter
- ...
-@@ -619,7 +628,7 @@ modparam("lcr", "lcr_rule_target_table", "rules")
-    Name of lcr_rule_target_table column containing an id of lcr_rule
-    table.
- 
--   Default value is "rule_id".
-+   Default value is “rule_id”.
- 
-    Example 1.23. Setting rule_id_column module parameter
- ...
-@@ -630,7 +639,7 @@ modparam("lcr", "rule_id_column", "rule")
- 
-    Name of lcr_rule_target_table column containing an id of lcr_gw table.
- 
--   Default value is "gw_id".
-+   Default value is “gw_id”.
- 
-    Example 1.24. Setting gw_id_column module parameter
- ...
-@@ -641,7 +650,7 @@ modparam("lcr", "gw_id_column", "gw")
- 
-    Name of the column holding the priority of the rule target.
- 
--   Default value is "priority".
-+   Default value is “priority”.
- 
-    Example 1.25. Setting priority_column module parameter
- ...
-@@ -652,7 +661,7 @@ modparam("lcr", "priority_column", "priority")
- 
-    Name of the column holding weight of rule target.
- 
--   Default value is "weight".
-+   Default value is “weight”.
- 
-    Example 1.26. Setting weight_column module parameter
- ...
-@@ -796,7 +805,18 @@ modparam("lcr", "lcr_gw_count", 1024)
- modparam("lcr", "dont_strip_or_tag_flag", 10)
- ...
- 
--3.38. fetch_rows (integer)
-+3.38. priority_ordering (integer)
-+
-+   Defines how matching gateways are ordered (see Overview section).
-+
-+   Default value is 0.
-+
-+   Example 1.38.  Setting priority_ordering module parameter
-+...
-+modparam("lcr", "priority_ordering", 1)
-+...
-+
-+3.39. fetch_rows (integer)
- 
-    The number of the rows to be fetched at once from database when loading
-    data from lcr_rule table. This value can be used to tune the load time
-@@ -804,14 +824,14 @@ modparam("lcr", "dont_strip_or_tag_flag", 10)
-    3750. In order for this parameter to have effect, the database driver
-    must support fetch_result() capability.
- 
--   Default value is "1024".
-+   Default value is “1024”.
- 
--   Example 1.38. Set fetch_rows parameter
-+   Example 1.39. Set fetch_rows parameter
- ...
- modparam("lcr", "fetch_rows", 3000)
- ...
- 
--3.39. ping_interval (integer)
-+3.40. ping_interval (integer)
- 
-    Interval in seconds for sending OPTIONS ping requests to gateways that,
-    due to failures, have been marked as inactive by inactivate_gw()
-@@ -821,62 +841,61 @@ modparam("lcr", "fetch_rows", 3000)
- 
-    If value of this parameter is greater than zero, tm module must have
-    been loaded and parameters lcr_id_avp and defunct_gw_avp must have been
--   defined. Value "0" disables sending of OPTIONS ping requests to failed
-+   defined. Value “0” disables sending of OPTIONS ping requests to failed
-    gateways.
- 
--   Default value is "0".
-+   Default value is “0”.
- 
--   Example 1.39.  Set ping_interval parameter
-+   Example 1.40.  Set ping_interval parameter
- ...
- modparam("lcr", "ping_interval", 15)
- ...
- 
--3.40. ping_inactivate_threshold (integer)
-+3.41. ping_inactivate_threshold (integer)
- 
-    Tells after how many failures (= inactivate_gw() function calls) a
-    gateway is marked as inactive.
- 
--   Default value is "1", i.e., gateway is marked inactive after first
--   failure.
-+   Default value is “1”, i.e., gateway is inactivated after first failure.
- 
--   Example 1.40.  Set ping_inactive_threshold parameter
-+   Example 1.41.  Set ping_inactivate_threshold parameter
- ...
--modparam("lcr", "ping_inactive_threshold", 3)
-+modparam("lcr", "ping_inactivate_threshold", 3)
- ...
- 
--3.41. ping_valid_reply_codes (string)
-+3.42. ping_valid_reply_codes (string)
- 
-    A comma separated list of SIP reply codes, which are accepted as valid
-    replies to OPTIONS ping requests. Reply codes 2xx are by default
-    accepted as valid replies and they don't need to be listed here.
- 
--   Default value is "", i.e., only 2xx replies are considered as valid
-+   Default value is “”, i.e., only 2xx replies are considered as valid
-    replies.
- 
--   Example 1.41.  Set ping_valid_reply_codes parameter
-+   Example 1.42.  Set ping_valid_reply_codes parameter
- ...
- modparam("lcr", "ping_valid_reply_codes", "403,405,501")
- ...
- 
--3.42. ping_from (string)
-+3.43. ping_from (string)
- 
-    From URI used in OPTIONS ping requests.
- 
--   Default value is "sip:pinger at localhost".
-+   Default value is “sip:pinger at localhost”.
- 
--   Example 1.42.  Set ping_from parameter
-+   Example 1.43.  Set ping_from parameter
- ...
- modparam("lcr", "ping_from", "sip:proxy.operator.com")
- ...
- 
--3.43. ping_socket (string)
-+3.44. ping_socket (string)
- 
-    Socket to be used for sending OPTIONS ping request. If not set or set
--   to "", default socket is used.
-+   to “”, default socket is used.
- 
--   Default value is "".
-+   Default value is “”.
- 
--   Example 1.43.  Set ping_socket parameter
-+   Example 1.44.  Set ping_socket parameter
- ...
- modparam("lcr", "ping_socket", "192.98.102.10:5060")
- ...
-@@ -912,7 +931,7 @@ modparam("lcr", "ping_socket", "192.98.102.10:5060")
- 
-    This function can be used from REQUEST_ROUTE.
- 
--   Example 1.44. load_gws usage
-+   Example 1.45. load_gws usage
- ...
- if (!load_gws(1, $rU, $var(caller_uri))) {
-         sl_send_reply("500", "Server Internal Error - Cannot load gateways");
-@@ -942,7 +961,7 @@ if (!load_gws(1, $rU, $var(caller_uri))) {
- 
-    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
- 
--   Example 1.45. next_gw usage from a route block
-+   Example 1.46. next_gw usage from a route block
- ...
- if (!next_gw()) {
-         sl_send_reply("503", "Service not available - No gateways");
-@@ -950,7 +969,7 @@ if (!next_gw()) {
- };
- ...
- 
--   Example 1.46. next_gw usage from a failure route block
-+   Example 1.47. next_gw usage from a failure route block
- ...
- if (!next_gw()) {
-         t_reply("503", "Service not available - No more gateways");
-@@ -970,7 +989,7 @@ if (!next_gw()) {
- 
-    This function can be used from REQUEST_ROUTE and FAILURE_ROUTE.
- 
--   Example 1.47. inactivate_gw usage
-+   Example 1.48. inactivate_gw usage
- ...
- failure_route [GW_FAILURE] {
- ...
-@@ -991,7 +1010,7 @@ failure_route [GW_FAILURE] {
- 
-    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
- 
--   Example 1.48. defunct_gw usage
-+   Example 1.49. defunct_gw usage
- ...
- defunct_gw(60);
- ...
-@@ -1023,7 +1042,7 @@ defunct_gw(60);
-    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
-    ONREPLY_ROUTE.
- 
--   Example 1.49. from_gw usage
-+   Example 1.50. from_gw usage
- ...
- if (from_gw(1, $avp(s:real_source_addr), 2) {
-         ...
-@@ -1053,7 +1072,7 @@ if (from_gw(1, $avp(s:real_source_addr), 2) {
-    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
-    ONREPLY_ROUTE.
- 
--   Example 1.50. from_gw usage
-+   Example 1.51. from_gw usage
- ...
- $var(lcr_id) = from_any_gw("192.168.1.1", 3);
- ...
-@@ -1074,7 +1093,7 @@ $var(lcr_id) = from_any_gw("192.168.1.1", 3);
- 
-    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
- 
--   Example 1.51. to_gw usage
-+   Example 1.52. to_gw usage
- ...
- if (to_gw("1")) {
-         ...
-@@ -1100,7 +1119,7 @@ if (to_gw("1")) {
- 
-    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
- 
--   Example 1.52. to_gw usage
-+   Example 1.53. to_gw usage
- ...
- if (to_any_gw("192.55.66.2", 1)) {
-         ...
-@@ -1123,7 +1142,7 @@ if (to_any_gw("192.55.66.2", 1)) {
- 
-    Parameters: none
- 
--   Example 1.53. lcr.reload RPC example
-+   Example 1.54. lcr.reload RPC example
-                 $ kamcmd lcr.reload
- 
- 5.2. lcr.dump_gws
-@@ -1132,7 +1151,7 @@ if (to_any_gw("192.55.66.2", 1)) {
- 
-    Parameters: none
- 
--   Example 1.54. lcr.dump_gws RPC example
-+   Example 1.55. lcr.dump_gws RPC example
-                 $ kamcmd lcr.dump_gws
- 
- 5.3. lcr.dump_rules
-@@ -1142,7 +1161,7 @@ if (to_any_gw("192.55.66.2", 1)) {
- 
-    Parameters: none
- 
--   Example 1.55. lcr.dump_rules RPC example
-+   Example 1.56. lcr.dump_rules RPC example
-                 $ kamcmd lcr.dump_rules
- 
- 5.4. lcr.defunct_gw
-@@ -1155,7 +1174,7 @@ if (to_any_gw("192.55.66.2", 1)) {
- 
-    Parameters: lcr_id gw_id period
- 
--   Example 1.56. lcr.defunct_gw RPC example
-+   Example 1.57. lcr.defunct_gw RPC example
-                 $ kamcmd lcr.defunct_gw 1 4 120
- 
- 6. Known Limitations
-diff --git a/modules/lcr/doc/lcr_admin.xml b/modules/lcr/doc/lcr_admin.xml
-index fcd8d55..3a47466 100644
---- a/modules/lcr/doc/lcr_admin.xml
-+++ b/modules/lcr/doc/lcr_admin.xml
-@@ -44,20 +44,35 @@
- 	are ordered for forwarding purposes as follows:
- 	</para>
- 	<para>
--	<itemizedlist>
-+	<orderedlist>
-             <listitem>
--                <para>(1) according to longest Request-URI user part match
-+                <para>according to longest Request-URI user part match
-                 </para>
-             </listitem>
-             <listitem>
--                <para>(2) according to tuple's priority
-+                <para>according to tuple's priority
-                 </para>
-             </listitem>
-             <listitem>
--                <para>(3) according to tuple's randomized weight
-+                <para>according to tuple's randomized weight
-                 </para>
-             </listitem>
--        </itemizedlist>
-+        </orderedlist>
-+	</para>
-+	<para>
-+    or, if priority_ordering parameter is set to value 1, as follows:
-+	</para>
-+	<para>
-+	<orderedlist>
-+            <listitem>
-+                <para>according to tuple's priority
-+                </para>
-+            </listitem>
-+            <listitem>
-+                <para>according to tuple's randomized weight
-+                </para>
-+            </listitem>
-+        </orderedlist>
- 	</para>
- 	<para>
- 	A tuple can be marked as a "stopper" tuple.  If a "stopper"
-@@ -971,6 +986,29 @@ modparam("lcr", "dont_strip_or_tag_flag", 10)
- 	</section>
- 
- 	<section>
-+		<title><varname>priority_ordering</varname> (integer)</title>
-+		<para>
-+		Defines how matching gateways are ordered (see Overview section).
-+		</para>
-+		<para>
-+		<emphasis>
-+			Default value is 0.
-+		</emphasis>
-+		</para>
-+		<example>
-+		<title>
-+		Setting <varname>priority_ordering</varname> module
-+		parameter
-+		</title>
-+		<programlisting format="linespecific">
-+...
-+modparam("lcr", "priority_ordering", 1)
-+...
-+</programlisting>
-+                </example>
-+	</section>
-+
-+	<section>
- 		<title><varname>fetch_rows</varname> (integer)</title>
- 		<para>
- 		The number of the rows to be fetched at once from database
-diff --git a/modules/lcr/lcr_mod.c b/modules/lcr/lcr_mod.c
-index ae01b24..81247d2 100644
---- a/modules/lcr/lcr_mod.c
-+++ b/modules/lcr/lcr_mod.c
-@@ -218,6 +218,9 @@ str ping_valid_reply_codes_param = {"", 0};
- str ping_socket_param = {"", 0};
- str ping_from_param = {"sip:pinger at localhost", 20};
- 
-+/* use priority as main ordering criteria */
-+static unsigned int priority_ordering_param = 0;
-+
- /*
-  * Other module types and variables
-  */
-@@ -345,6 +348,7 @@ static param_export_t params[] = {
-     {"lcr_rule_hash_size",       INT_PARAM, &lcr_rule_hash_size_param},
-     {"lcr_gw_count",             INT_PARAM, &lcr_gw_count_param},
-     {"dont_strip_or_prefix_flag",INT_PARAM, &dont_strip_or_prefix_flag_param},
-+    {"priority_ordering",        INT_PARAM, &priority_ordering_param},
-     {"fetch_rows",               INT_PARAM, &fetch_rows_param},
-     {"ping_interval",            INT_PARAM, &ping_interval_param},
-     {"ping_inactivate_threshold",  INT_PARAM, &ping_inactivate_threshold_param},
-@@ -465,6 +469,12 @@ static int mod_init(void)
- 	return -1;
-     }
- 
-+    if ((priority_ordering_param != 0) && (priority_ordering_param != 1)) {
-+        LM_ERR("invalid priority_ordering value <%d>\n",
-+	       priority_ordering_param);
-+	return -1;
-+    }
-+
-     /* Process AVP params */
- 
-     if (gw_uri_avp_param && *gw_uri_avp_param) {
-@@ -780,6 +790,17 @@ static int comp_matched(const void *m1, const void *m2)
-     struct matched_gw_info *mi1 = (struct matched_gw_info *) m1;
-     struct matched_gw_info *mi2 = (struct matched_gw_info *) m2;
- 
-+    if (priority_ordering_param) {
-+        /* Sort by priority */
-+	if (mi1->priority < mi2->priority) return 1;
-+	if (mi1->priority == mi2->priority) {
-+	    /* Sort by randomized weigth */
-+	    if (mi1->weight > mi2->weight) return 1;
-+	    if (mi1->weight == mi2->weight) return 0;
-+	}
-+	return -1;
-+    }
-+
-     /* Sort by prefix_len */
-     if (mi1->prefix_len > mi2->prefix_len) return 1;
-     if (mi1->prefix_len == mi2->prefix_len) {
-@@ -789,9 +810,7 @@ static int comp_matched(const void *m1, const void *m2)
- 	    /* Sort by randomized weigth */
- 	    if (mi1->weight > mi2->weight) return 1;
- 	    if (mi1->weight == mi2->weight) return 0;
--	    return -1;
- 	}
--	return -1;
-     }
-     return -1;
- }
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0006-Revert-modules-lcr-added-priority_ordering-module-pa.patch b/debian/patches/upstream/0006-Revert-modules-lcr-added-priority_ordering-module-pa.patch
deleted file mode 100644
index 2d82c16..0000000
--- a/debian/patches/upstream/0006-Revert-modules-lcr-added-priority_ordering-module-pa.patch
+++ /dev/null
@@ -1,756 +0,0 @@
-From 65a4adb30436ae16f241aefb3c44fdd36192a3fd Mon Sep 17 00:00:00 2001
-From: Victor Seva <linuxmaniac at torreviejawireless.org>
-Date: Tue, 16 Jun 2015 11:25:50 +0200
-Subject: [PATCH] Revert "modules/lcr: added priority_ordering module
- parameter"
-
-This reverts commit 27d0e6d99ee512788f16ce4f6b6e4127dea420bd.
----
- modules/lcr/README            | 219 +++++++++++++++++++-----------------------
- modules/lcr/doc/lcr_admin.xml |  48 +--------
- modules/lcr/lcr_mod.c         |  23 +----
- 3 files changed, 107 insertions(+), 183 deletions(-)
-
-diff --git a/modules/lcr/README b/modules/lcr/README
-index e7d92eb..58268cf 100644
---- a/modules/lcr/README
-+++ b/modules/lcr/README
-@@ -10,7 +10,7 @@ Juha Heinanen
- 
-    <jh at tutpro.com>
- 
--   Copyright © 2005-2014 Juha Heinanen
-+   Copyright (c) 2005-2014 Juha Heinanen
-      __________________________________________________________________
- 
-    Table of Contents
-@@ -62,13 +62,12 @@ Juha Heinanen
-               3.35. lcr_rule_hash_size (integer)
-               3.36. lcr_gw_count (integer)
-               3.37. dont_strip_or_tag_flag (integer)
--              3.38. priority_ordering (integer)
--              3.39. fetch_rows (integer)
--              3.40. ping_interval (integer)
--              3.41. ping_inactivate_threshold (integer)
--              3.42. ping_valid_reply_codes (string)
--              3.43. ping_from (string)
--              3.44. ping_socket (string)
-+              3.38. fetch_rows (integer)
-+              3.39. ping_interval (integer)
-+              3.40. ping_inactivate_threshold (integer)
-+              3.41. ping_valid_reply_codes (string)
-+              3.42. ping_from (string)
-+              3.43. ping_socket (string)
- 
-         4. Functions
- 
-@@ -129,26 +128,25 @@ Juha Heinanen
-    1.35. Setting lcr_rule_hash_size module parameter
-    1.36. Setting lcr_gw_count module parameter
-    1.37. Setting dont_strip_or_tag_flag module parameter
--   1.38. Setting priority_ordering module parameter
--   1.39. Set fetch_rows parameter
--   1.40. Set ping_interval parameter
--   1.41. Set ping_inactivate_threshold parameter
--   1.42. Set ping_valid_reply_codes parameter
--   1.43. Set ping_from parameter
--   1.44. Set ping_socket parameter
--   1.45. load_gws usage
--   1.46. next_gw usage from a route block
--   1.47. next_gw usage from a failure route block
--   1.48. inactivate_gw usage
--   1.49. defunct_gw usage
-+   1.38. Set fetch_rows parameter
-+   1.39. Set ping_interval parameter
-+   1.40. Set ping_inactive_threshold parameter
-+   1.41. Set ping_valid_reply_codes parameter
-+   1.42. Set ping_from parameter
-+   1.43. Set ping_socket parameter
-+   1.44. load_gws usage
-+   1.45. next_gw usage from a route block
-+   1.46. next_gw usage from a failure route block
-+   1.47. inactivate_gw usage
-+   1.48. defunct_gw usage
-+   1.49. from_gw usage
-    1.50. from_gw usage
--   1.51. from_gw usage
-+   1.51. to_gw usage
-    1.52. to_gw usage
--   1.53. to_gw usage
--   1.54. lcr.reload RPC example
--   1.55. lcr.dump_gws RPC example
--   1.56. lcr.dump_rules RPC example
--   1.57. lcr.defunct_gw RPC example
-+   1.53. lcr.reload RPC example
-+   1.54. lcr.dump_gws RPC example
-+   1.55. lcr.dump_rules RPC example
-+   1.56. lcr.defunct_gw RPC example
- 
- Chapter 1. Admin Guide
- 
-@@ -199,13 +197,12 @@ Chapter 1. Admin Guide
-         3.35. lcr_rule_hash_size (integer)
-         3.36. lcr_gw_count (integer)
-         3.37. dont_strip_or_tag_flag (integer)
--        3.38. priority_ordering (integer)
--        3.39. fetch_rows (integer)
--        3.40. ping_interval (integer)
--        3.41. ping_inactivate_threshold (integer)
--        3.42. ping_valid_reply_codes (string)
--        3.43. ping_from (string)
--        3.44. ping_socket (string)
-+        3.38. fetch_rows (integer)
-+        3.39. ping_interval (integer)
-+        3.40. ping_inactivate_threshold (integer)
-+        3.41. ping_valid_reply_codes (string)
-+        3.42. ping_from (string)
-+        3.43. ping_socket (string)
- 
-    4. Functions
- 
-@@ -251,14 +248,9 @@ Chapter 1. Admin Guide
-    currently designated as defunct) are ordered for forwarding purposes as
-    follows:
- 
--    1. according to longest Request-URI user part match
--    2. according to tuple's priority
--    3. according to tuple's randomized weight
--
--   or, if priority_ordering parameter is set to value 1, as follows:
--
--    1. according to tuple's priority
--    2. according to tuple's randomized weight
-+     * (1) according to longest Request-URI user part match
-+     * (2) according to tuple's priority
-+     * (3) according to tuple's randomized weight
- 
-    A tuple can be marked as a "stopper" tuple. If a "stopper" tuple
-    matches, then matching stops at it and all other tuples with shorter
-@@ -357,19 +349,18 @@ Chapter 1. Admin Guide
-    3.35. lcr_rule_hash_size (integer)
-    3.36. lcr_gw_count (integer)
-    3.37. dont_strip_or_tag_flag (integer)
--   3.38. priority_ordering (integer)
--   3.39. fetch_rows (integer)
--   3.40. ping_interval (integer)
--   3.41. ping_inactivate_threshold (integer)
--   3.42. ping_valid_reply_codes (string)
--   3.43. ping_from (string)
--   3.44. ping_socket (string)
-+   3.38. fetch_rows (integer)
-+   3.39. ping_interval (integer)
-+   3.40. ping_inactivate_threshold (integer)
-+   3.41. ping_valid_reply_codes (string)
-+   3.42. ping_from (string)
-+   3.43. ping_socket (string)
- 
- 3.1. db_url (string)
- 
-    URL of the database table to be used.
- 
--   Default value is “mysql://kamailioro:kamailioro@localhost/kamailio”.
-+   Default value is "mysql://kamailioro:kamailioro@localhost/kamailio".
- 
-    Example 1.1. Setting db_url module parameter
- ...
-@@ -380,7 +371,7 @@ modparam("lcr","db_url","dbdriver://username:password@dbhost/dbname")
- 
-    Name of the table holding gateways definitions.
- 
--   Default value is “lcr_gw”.
-+   Default value is "lcr_gw".
- 
-    Example 1.2. Setting gw_table module parameter
- ...
-@@ -392,7 +383,7 @@ modparam("lcr", "lcr_gw_table","gw")
-    Name of the auto-increment, primary key column. Common to all lcr
-    module tables.
- 
--   Default value is “id”.
-+   Default value is "id".
- 
-    Example 1.3. Setting id_column module parameter
- ...
-@@ -406,7 +397,7 @@ modparam("lcr", "id_column", "row_id")
-    the column is integer from 1 to lcr_count. In lcr_gw table, value of
-    the column is from 0 to lcr_count.
- 
--   Default value is “lcr_id”.
-+   Default value is "lcr_id".
- 
-    Example 1.4. Setting lcr_id_column module parameter
- ...
-@@ -417,7 +408,7 @@ modparam("lcr", "lcr_id_column", "lcr_identifier")
- 
-    Name of the column holding gateway's name for documentation purpose.
- 
--   Default value is “gw_name”.
-+   Default value is "gw_name".
- 
-    Example 1.5. Setting gw_name_column module parameter
- ...
-@@ -428,7 +419,7 @@ modparam("lcr", "gw_name_column", "name")
- 
-    Name of the column holding the IPv4 or IPv6 address of the gateway.
- 
--   Default value is “ip_addr”.
-+   Default value is "ip_addr".
- 
-    Example 1.6. Setting ip_addr_column module parameter
- ...
-@@ -440,7 +431,7 @@ modparam("lcr", "ip_addr_column", "ip")
-    Name of the column holding gateway's hostname that is used in
-    Request-URI hostpart, when request is sent to the gateway.
- 
--   Default value is “hostname”.
-+   Default value is "hostname".
- 
-    Example 1.7. Setting hostname_column module parameter
- ...
-@@ -451,7 +442,7 @@ modparam("lcr", "hostname_column", "host")
- 
-    Name of the column holding the port number of the gateway.
- 
--   Default value is “port”.
-+   Default value is "port".
- 
-    Example 1.8. Setting port_column module parameter
- ...
-@@ -463,7 +454,7 @@ modparam("lcr", "port_column", "port")
-    Name of the column holding gateway's parameters that is used in
-    Request-URI, when request is sent to the gateway.
- 
--   Default value is “params”.
-+   Default value is "params".
- 
-    Example 1.9. Setting params_column module parameter
- ...
-@@ -474,7 +465,7 @@ modparam("lcr", "params_column", "parameters")
- 
-    Name of the column holding the uri scheme of the gateway.
- 
--   Default value is “uri_scheme”.
-+   Default value is "uri_scheme".
- 
-    Example 1.10. Setting uri_scheme_column module parameter
- ...
-@@ -486,7 +477,7 @@ modparam("lcr", "uri_scheme_column", "uri_scheme")
-    Name of the column holding the transport protocol to be used for the
-    gateway.
- 
--   Default value is “transport”.
-+   Default value is "transport".
- 
-    Example 1.11. Setting transport_column module parameter
- ...
-@@ -498,7 +489,7 @@ modparam("lcr", "transport_column", "trans")
-    Name of the column holding the number of characters to be stripped from
-    the front of Request-URI user part before inserting tag.
- 
--   Default value is “strip”.
-+   Default value is "strip".
- 
-    Example 1.12. Setting strip_column module parameter
- ...
-@@ -510,7 +501,7 @@ modparam("lcr", "strip_column", "strip_count")
-    Name of the column holding gateway specific tag string that is added to
-    Request URI userpart after stripping.
- 
--   Default value is “tag”.
-+   Default value is "tag".
- 
-    Example 1.13. Setting tag_column module parameter
- ...
-@@ -521,7 +512,7 @@ modparam("lcr", "tag_column", "gw_tag")
- 
-    Name of the column holding gateway specific flag values.
- 
--   Default value is “flags”.
-+   Default value is "flags".
- 
-    Example 1.14. Setting flags_column module parameter
- ...
-@@ -535,7 +526,7 @@ modparam("lcr", "flags_column", "gw_flags")
-    max UNIX timestamp value) or greater, gw is considered currently unused
-    and is not loaded into memory at all.
- 
--   Default value is “defunct”.
-+   Default value is "defunct".
- 
-    Example 1.15. Setting defunct_column module parameter
- ...
-@@ -546,7 +537,7 @@ modparam("lcr", "defunct_column", "defunct_until")
- 
-    Name of the table holding the LCR rules.
- 
--   Default value is “lcr_rule”.
-+   Default value is "lcr_rule".
- 
-    Example 1.16. Setting lcr_rule_table module parameter
- ...
-@@ -558,7 +549,7 @@ modparam("lcr", "lcr_rule_table", "rules")
-    Name of the column holding prefix of Request-URI user part and prefix
-    of gateway.
- 
--   Default value is “prefix”.
-+   Default value is "prefix".
- 
-    Example 1.17. Setting prefix_column module parameter
- ...
-@@ -569,7 +560,7 @@ modparam("lcr", "prefix_column", "number_prefix")
- 
-    Name of the column holding the From (caller's) URI.
- 
--   Default value is “from_uri”.
-+   Default value is "from_uri".
- 
-    Example 1.18. Setting from_uri_column module parameter
- ...
-@@ -581,7 +572,7 @@ modparam("lcr", "from_uri_column", "caller_uri")
-    Name of the column holding the regular expression to match against the
-    complete request URI (including the "sip:" prefix).
- 
--   Default value is “request_uri”.
-+   Default value is "request_uri".
- 
-    Example 1.19. Setting request_uri_column module parameter
- ...
-@@ -592,7 +583,7 @@ modparam("lcr", "request_uri_column", "callee_uri")
- 
-    Name of the column holding rule's stopper attribute.
- 
--   Default value is “stopper”.
-+   Default value is "stopper".
- 
-    Example 1.20. Setting stopper_column module parameter
- ...
-@@ -604,7 +595,7 @@ modparam("lcr", "stopper_column", "stop")
-    Name of the column telling is the rule is currently enabled or
-    disabled.
- 
--   Default value is “enabled”.
-+   Default value is "enabled".
- 
-    Example 1.21. Setting enabled_column module parameter
- ...
-@@ -616,7 +607,7 @@ modparam("lcr", "enabled_column", "in_use")
-    Name of the table holding information about the LCR rule targets
-    (gateways).
- 
--   Default value is “lcr_rule_target”.
-+   Default value is "lcr_rule_target".
- 
-    Example 1.22. Setting lcr_rule_target_table module parameter
- ...
-@@ -628,7 +619,7 @@ modparam("lcr", "lcr_rule_target_table", "rules")
-    Name of lcr_rule_target_table column containing an id of lcr_rule
-    table.
- 
--   Default value is “rule_id”.
-+   Default value is "rule_id".
- 
-    Example 1.23. Setting rule_id_column module parameter
- ...
-@@ -639,7 +630,7 @@ modparam("lcr", "rule_id_column", "rule")
- 
-    Name of lcr_rule_target_table column containing an id of lcr_gw table.
- 
--   Default value is “gw_id”.
-+   Default value is "gw_id".
- 
-    Example 1.24. Setting gw_id_column module parameter
- ...
-@@ -650,7 +641,7 @@ modparam("lcr", "gw_id_column", "gw")
- 
-    Name of the column holding the priority of the rule target.
- 
--   Default value is “priority”.
-+   Default value is "priority".
- 
-    Example 1.25. Setting priority_column module parameter
- ...
-@@ -661,7 +652,7 @@ modparam("lcr", "priority_column", "priority")
- 
-    Name of the column holding weight of rule target.
- 
--   Default value is “weight”.
-+   Default value is "weight".
- 
-    Example 1.26. Setting weight_column module parameter
- ...
-@@ -805,18 +796,7 @@ modparam("lcr", "lcr_gw_count", 1024)
- modparam("lcr", "dont_strip_or_tag_flag", 10)
- ...
- 
--3.38. priority_ordering (integer)
--
--   Defines how matching gateways are ordered (see Overview section).
--
--   Default value is 0.
--
--   Example 1.38.  Setting priority_ordering module parameter
--...
--modparam("lcr", "priority_ordering", 1)
--...
--
--3.39. fetch_rows (integer)
-+3.38. fetch_rows (integer)
- 
-    The number of the rows to be fetched at once from database when loading
-    data from lcr_rule table. This value can be used to tune the load time
-@@ -824,14 +804,14 @@ modparam("lcr", "priority_ordering", 1)
-    3750. In order for this parameter to have effect, the database driver
-    must support fetch_result() capability.
- 
--   Default value is “1024”.
-+   Default value is "1024".
- 
--   Example 1.39. Set fetch_rows parameter
-+   Example 1.38. Set fetch_rows parameter
- ...
- modparam("lcr", "fetch_rows", 3000)
- ...
- 
--3.40. ping_interval (integer)
-+3.39. ping_interval (integer)
- 
-    Interval in seconds for sending OPTIONS ping requests to gateways that,
-    due to failures, have been marked as inactive by inactivate_gw()
-@@ -841,61 +821,62 @@ modparam("lcr", "fetch_rows", 3000)
- 
-    If value of this parameter is greater than zero, tm module must have
-    been loaded and parameters lcr_id_avp and defunct_gw_avp must have been
--   defined. Value “0” disables sending of OPTIONS ping requests to failed
-+   defined. Value "0" disables sending of OPTIONS ping requests to failed
-    gateways.
- 
--   Default value is “0”.
-+   Default value is "0".
- 
--   Example 1.40.  Set ping_interval parameter
-+   Example 1.39.  Set ping_interval parameter
- ...
- modparam("lcr", "ping_interval", 15)
- ...
- 
--3.41. ping_inactivate_threshold (integer)
-+3.40. ping_inactivate_threshold (integer)
- 
-    Tells after how many failures (= inactivate_gw() function calls) a
-    gateway is marked as inactive.
- 
--   Default value is “1”, i.e., gateway is inactivated after first failure.
-+   Default value is "1", i.e., gateway is marked inactive after first
-+   failure.
- 
--   Example 1.41.  Set ping_inactivate_threshold parameter
-+   Example 1.40.  Set ping_inactive_threshold parameter
- ...
--modparam("lcr", "ping_inactivate_threshold", 3)
-+modparam("lcr", "ping_inactive_threshold", 3)
- ...
- 
--3.42. ping_valid_reply_codes (string)
-+3.41. ping_valid_reply_codes (string)
- 
-    A comma separated list of SIP reply codes, which are accepted as valid
-    replies to OPTIONS ping requests. Reply codes 2xx are by default
-    accepted as valid replies and they don't need to be listed here.
- 
--   Default value is “”, i.e., only 2xx replies are considered as valid
-+   Default value is "", i.e., only 2xx replies are considered as valid
-    replies.
- 
--   Example 1.42.  Set ping_valid_reply_codes parameter
-+   Example 1.41.  Set ping_valid_reply_codes parameter
- ...
- modparam("lcr", "ping_valid_reply_codes", "403,405,501")
- ...
- 
--3.43. ping_from (string)
-+3.42. ping_from (string)
- 
-    From URI used in OPTIONS ping requests.
- 
--   Default value is “sip:pinger at localhost”.
-+   Default value is "sip:pinger at localhost".
- 
--   Example 1.43.  Set ping_from parameter
-+   Example 1.42.  Set ping_from parameter
- ...
- modparam("lcr", "ping_from", "sip:proxy.operator.com")
- ...
- 
--3.44. ping_socket (string)
-+3.43. ping_socket (string)
- 
-    Socket to be used for sending OPTIONS ping request. If not set or set
--   to “”, default socket is used.
-+   to "", default socket is used.
- 
--   Default value is “”.
-+   Default value is "".
- 
--   Example 1.44.  Set ping_socket parameter
-+   Example 1.43.  Set ping_socket parameter
- ...
- modparam("lcr", "ping_socket", "192.98.102.10:5060")
- ...
-@@ -931,7 +912,7 @@ modparam("lcr", "ping_socket", "192.98.102.10:5060")
- 
-    This function can be used from REQUEST_ROUTE.
- 
--   Example 1.45. load_gws usage
-+   Example 1.44. load_gws usage
- ...
- if (!load_gws(1, $rU, $var(caller_uri))) {
-         sl_send_reply("500", "Server Internal Error - Cannot load gateways");
-@@ -961,7 +942,7 @@ if (!load_gws(1, $rU, $var(caller_uri))) {
- 
-    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
- 
--   Example 1.46. next_gw usage from a route block
-+   Example 1.45. next_gw usage from a route block
- ...
- if (!next_gw()) {
-         sl_send_reply("503", "Service not available - No gateways");
-@@ -969,7 +950,7 @@ if (!next_gw()) {
- };
- ...
- 
--   Example 1.47. next_gw usage from a failure route block
-+   Example 1.46. next_gw usage from a failure route block
- ...
- if (!next_gw()) {
-         t_reply("503", "Service not available - No more gateways");
-@@ -989,7 +970,7 @@ if (!next_gw()) {
- 
-    This function can be used from REQUEST_ROUTE and FAILURE_ROUTE.
- 
--   Example 1.48. inactivate_gw usage
-+   Example 1.47. inactivate_gw usage
- ...
- failure_route [GW_FAILURE] {
- ...
-@@ -1010,7 +991,7 @@ failure_route [GW_FAILURE] {
- 
-    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
- 
--   Example 1.49. defunct_gw usage
-+   Example 1.48. defunct_gw usage
- ...
- defunct_gw(60);
- ...
-@@ -1042,7 +1023,7 @@ defunct_gw(60);
-    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
-    ONREPLY_ROUTE.
- 
--   Example 1.50. from_gw usage
-+   Example 1.49. from_gw usage
- ...
- if (from_gw(1, $avp(s:real_source_addr), 2) {
-         ...
-@@ -1072,7 +1053,7 @@ if (from_gw(1, $avp(s:real_source_addr), 2) {
-    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
-    ONREPLY_ROUTE.
- 
--   Example 1.51. from_gw usage
-+   Example 1.50. from_gw usage
- ...
- $var(lcr_id) = from_any_gw("192.168.1.1", 3);
- ...
-@@ -1093,7 +1074,7 @@ $var(lcr_id) = from_any_gw("192.168.1.1", 3);
- 
-    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
- 
--   Example 1.52. to_gw usage
-+   Example 1.51. to_gw usage
- ...
- if (to_gw("1")) {
-         ...
-@@ -1119,7 +1100,7 @@ if (to_gw("1")) {
- 
-    This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
- 
--   Example 1.53. to_gw usage
-+   Example 1.52. to_gw usage
- ...
- if (to_any_gw("192.55.66.2", 1)) {
-         ...
-@@ -1142,7 +1123,7 @@ if (to_any_gw("192.55.66.2", 1)) {
- 
-    Parameters: none
- 
--   Example 1.54. lcr.reload RPC example
-+   Example 1.53. lcr.reload RPC example
-                 $ kamcmd lcr.reload
- 
- 5.2. lcr.dump_gws
-@@ -1151,7 +1132,7 @@ if (to_any_gw("192.55.66.2", 1)) {
- 
-    Parameters: none
- 
--   Example 1.55. lcr.dump_gws RPC example
-+   Example 1.54. lcr.dump_gws RPC example
-                 $ kamcmd lcr.dump_gws
- 
- 5.3. lcr.dump_rules
-@@ -1161,7 +1142,7 @@ if (to_any_gw("192.55.66.2", 1)) {
- 
-    Parameters: none
- 
--   Example 1.56. lcr.dump_rules RPC example
-+   Example 1.55. lcr.dump_rules RPC example
-                 $ kamcmd lcr.dump_rules
- 
- 5.4. lcr.defunct_gw
-@@ -1174,7 +1155,7 @@ if (to_any_gw("192.55.66.2", 1)) {
- 
-    Parameters: lcr_id gw_id period
- 
--   Example 1.57. lcr.defunct_gw RPC example
-+   Example 1.56. lcr.defunct_gw RPC example
-                 $ kamcmd lcr.defunct_gw 1 4 120
- 
- 6. Known Limitations
-diff --git a/modules/lcr/doc/lcr_admin.xml b/modules/lcr/doc/lcr_admin.xml
-index 3a47466..fcd8d55 100644
---- a/modules/lcr/doc/lcr_admin.xml
-+++ b/modules/lcr/doc/lcr_admin.xml
-@@ -44,35 +44,20 @@
- 	are ordered for forwarding purposes as follows:
- 	</para>
- 	<para>
--	<orderedlist>
-+	<itemizedlist>
-             <listitem>
--                <para>according to longest Request-URI user part match
-+                <para>(1) according to longest Request-URI user part match
-                 </para>
-             </listitem>
-             <listitem>
--                <para>according to tuple's priority
-+                <para>(2) according to tuple's priority
-                 </para>
-             </listitem>
-             <listitem>
--                <para>according to tuple's randomized weight
-+                <para>(3) according to tuple's randomized weight
-                 </para>
-             </listitem>
--        </orderedlist>
--	</para>
--	<para>
--    or, if priority_ordering parameter is set to value 1, as follows:
--	</para>
--	<para>
--	<orderedlist>
--            <listitem>
--                <para>according to tuple's priority
--                </para>
--            </listitem>
--            <listitem>
--                <para>according to tuple's randomized weight
--                </para>
--            </listitem>
--        </orderedlist>
-+        </itemizedlist>
- 	</para>
- 	<para>
- 	A tuple can be marked as a "stopper" tuple.  If a "stopper"
-@@ -986,29 +971,6 @@ modparam("lcr", "dont_strip_or_tag_flag", 10)
- 	</section>
- 
- 	<section>
--		<title><varname>priority_ordering</varname> (integer)</title>
--		<para>
--		Defines how matching gateways are ordered (see Overview section).
--		</para>
--		<para>
--		<emphasis>
--			Default value is 0.
--		</emphasis>
--		</para>
--		<example>
--		<title>
--		Setting <varname>priority_ordering</varname> module
--		parameter
--		</title>
--		<programlisting format="linespecific">
--...
--modparam("lcr", "priority_ordering", 1)
--...
--</programlisting>
--                </example>
--	</section>
--
--	<section>
- 		<title><varname>fetch_rows</varname> (integer)</title>
- 		<para>
- 		The number of the rows to be fetched at once from database
-diff --git a/modules/lcr/lcr_mod.c b/modules/lcr/lcr_mod.c
-index 81247d2..ae01b24 100644
---- a/modules/lcr/lcr_mod.c
-+++ b/modules/lcr/lcr_mod.c
-@@ -218,9 +218,6 @@ str ping_valid_reply_codes_param = {"", 0};
- str ping_socket_param = {"", 0};
- str ping_from_param = {"sip:pinger at localhost", 20};
- 
--/* use priority as main ordering criteria */
--static unsigned int priority_ordering_param = 0;
--
- /*
-  * Other module types and variables
-  */
-@@ -348,7 +345,6 @@ static param_export_t params[] = {
-     {"lcr_rule_hash_size",       INT_PARAM, &lcr_rule_hash_size_param},
-     {"lcr_gw_count",             INT_PARAM, &lcr_gw_count_param},
-     {"dont_strip_or_prefix_flag",INT_PARAM, &dont_strip_or_prefix_flag_param},
--    {"priority_ordering",        INT_PARAM, &priority_ordering_param},
-     {"fetch_rows",               INT_PARAM, &fetch_rows_param},
-     {"ping_interval",            INT_PARAM, &ping_interval_param},
-     {"ping_inactivate_threshold",  INT_PARAM, &ping_inactivate_threshold_param},
-@@ -469,12 +465,6 @@ static int mod_init(void)
- 	return -1;
-     }
- 
--    if ((priority_ordering_param != 0) && (priority_ordering_param != 1)) {
--        LM_ERR("invalid priority_ordering value <%d>\n",
--	       priority_ordering_param);
--	return -1;
--    }
--
-     /* Process AVP params */
- 
-     if (gw_uri_avp_param && *gw_uri_avp_param) {
-@@ -790,17 +780,6 @@ static int comp_matched(const void *m1, const void *m2)
-     struct matched_gw_info *mi1 = (struct matched_gw_info *) m1;
-     struct matched_gw_info *mi2 = (struct matched_gw_info *) m2;
- 
--    if (priority_ordering_param) {
--        /* Sort by priority */
--	if (mi1->priority < mi2->priority) return 1;
--	if (mi1->priority == mi2->priority) {
--	    /* Sort by randomized weigth */
--	    if (mi1->weight > mi2->weight) return 1;
--	    if (mi1->weight == mi2->weight) return 0;
--	}
--	return -1;
--    }
--
-     /* Sort by prefix_len */
-     if (mi1->prefix_len > mi2->prefix_len) return 1;
-     if (mi1->prefix_len == mi2->prefix_len) {
-@@ -810,7 +789,9 @@ static int comp_matched(const void *m1, const void *m2)
- 	    /* Sort by randomized weigth */
- 	    if (mi1->weight > mi2->weight) return 1;
- 	    if (mi1->weight == mi2->weight) return 0;
-+	    return -1;
- 	}
-+	return -1;
-     }
-     return -1;
- }
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0007-uac-updated-notes-about-uac_auth.patch b/debian/patches/upstream/0007-uac-updated-notes-about-uac_auth.patch
deleted file mode 100644
index 663ebd7..0000000
--- a/debian/patches/upstream/0007-uac-updated-notes-about-uac_auth.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 43b70c5c809f666c74bc0b75ce7549d2a7b0518e Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Thu, 11 Jun 2015 10:49:10 +0200
-Subject: [PATCH] uac: updated notes about uac_auth()
-
-(cherry picked from commit db829aabf30c5b4fdfee5ebd842959b63a598b26)
----
- modules/uac/doc/uac_admin.xml | 32 +++++++++++++++++++++++++++++---
- 1 file changed, 29 insertions(+), 3 deletions(-)
-
-diff --git a/modules/uac/doc/uac_admin.xml b/modules/uac/doc/uac_admin.xml
-index 0a154d9..3e6021f 100644
---- a/modules/uac/doc/uac_admin.xml
-+++ b/modules/uac/doc/uac_admin.xml
-@@ -42,8 +42,10 @@
- 			</listitem>
- 			<listitem>
- 			<para>
--				CSeq is not increased during authentication - the response 
--				may be rejected.
-+				CSeq is not increased automatically by uac_auth() during authentication
-+				- the follow up request may be rejected. CSeq can be increased when
-+				authenticating INVITE requests - dialog module has to be used, with
-+				CSeq tracking feature enabled (see the readme of dialog module).
- 			</para>
- 			</listitem>
- 			<listitem>
-@@ -688,7 +690,31 @@ uac_restore_to();
- 				<title><function>uac_auth</function> usage</title>
- 				<programlisting format="linespecific">
- ...
--uac_auth();
-+modparam("uac","auth_username_avp","$avp(auser)")
-+modparam("uac","auth_password_avp","$avp(apass)")
-+modparam("uac","auth_realm_avp","$avp(arealm)")
-+
-+request_route {
-+   ...
-+   if(is_method("INVITE")) {
-+      t_on_failure("TRUNKAUTH");
-+   }
-+   ...
-+}
-+
-+failure_route[TRUNKAUTH] {
-+
-+    if (t_is_canceled()) {
-+        exit;
-+    }
-+    if(t_check_status("401|407")) {
-+        $avp(auser) = "test";
-+        $avp(apass) = "test";
-+        uac_auth();
-+        t_relay();
-+        exit;
-+    }
-+}
- ...
- 				</programlisting>
- 			</example>
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0008-dialog-re-entrant-mutex-for-dialogs-hash-table-slots.patch b/debian/patches/upstream/0008-dialog-re-entrant-mutex-for-dialogs-hash-table-slots.patch
deleted file mode 100644
index af989d3..0000000
--- a/debian/patches/upstream/0008-dialog-re-entrant-mutex-for-dialogs-hash-table-slots.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-From 69fe3fae08a8ebbe4926fb1e96e52547fe1047bb Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Tue, 16 Jun 2015 15:06:43 +0200
-Subject: [PATCH] dialog: re-entrant mutex for dialogs hash table slots
-
-- changed from a lock set usage to per slot lock field
-
-(cherry picked from commit 9c3ea838b31039ac067e17d519df67b64b0dada1)
----
- modules/dialog/dlg_hash.c | 39 +++++++--------------------------------
- modules/dialog/dlg_hash.h | 31 +++++++++++++++++++++++++------
- 2 files changed, 32 insertions(+), 38 deletions(-)
-
-diff --git a/modules/dialog/dlg_hash.c b/modules/dialog/dlg_hash.c
-index 536fe32..e3d0005 100644
---- a/modules/dialog/dlg_hash.c
-+++ b/modules/dialog/dlg_hash.c
-@@ -42,9 +42,6 @@
- #include "dlg_req_within.h"
- #include "dlg_db_handler.h"
- 
--#define MAX_LDG_LOCKS  2048
--#define MIN_LDG_LOCKS  2
--
- extern int dlg_ka_interval;
- 
- /*! global dialog table */
-@@ -223,7 +220,7 @@ int dlg_clean_run(ticks_t ti)
- 	tm = (unsigned int)time(NULL);
- 	for(i=0; i<d_table->size; i++)
- 	{
--		lock_set_get(d_table->locks, d_table->entries[i].lock_idx);
-+		dlg_lock(d_table, &d_table->entries[i]);
- 		dlg = d_table->entries[i].first;
- 		while (dlg) {
- 			tdlg = dlg;
-@@ -243,7 +240,7 @@ int dlg_clean_run(ticks_t ti)
- 				tdlg->dflags |= DLG_FLAG_CHANGED;
- 			}
- 		}
--		lock_set_release(d_table->locks, d_table->entries[i].lock_idx);
-+		dlg_unlock(d_table, &d_table->entries[i]);
- 	}
- 	return 0;
- }
-@@ -288,30 +285,13 @@ int init_dlg_table(unsigned int size)
- 	d_table->size = size;
- 	d_table->entries = (struct dlg_entry*)(d_table+1);
- 
--	n = (size<MAX_LDG_LOCKS)?size:MAX_LDG_LOCKS;
--	for(  ; n>=MIN_LDG_LOCKS ; n-- ) {
--		d_table->locks = lock_set_alloc(n);
--		if (d_table->locks==0)
--			continue;
--		if (lock_set_init(d_table->locks)==0) {
--			lock_set_dealloc(d_table->locks);
--			d_table->locks = 0;
--			continue;
--		}
--		d_table->locks_no = n;
--		break;
--	}
--
--	if (d_table->locks==0) {
--		LM_ERR("unable to allocted at least %d locks for the hash table\n",
--			MIN_LDG_LOCKS);
--		goto error1;
--	}
--
- 	for( i=0 ; i<size; i++ ) {
- 		memset( &(d_table->entries[i]), 0, sizeof(struct dlg_entry) );
-+		if(lock_init(&d_table->entries[i].lock)<0) {
-+			LM_ERR("failed to init lock for slot: %d\n", i);
-+			goto error1;
-+		}
- 		d_table->entries[i].next_id = rand() % (3*size);
--		d_table->entries[i].lock_idx = i % d_table->locks_no;
- 	}
- 
- 	return 0;
-@@ -411,11 +391,6 @@ void destroy_dlg_table(void)
- 	if (d_table==0)
- 		return;
- 
--	if (d_table->locks) {
--		lock_set_destroy(d_table->locks);
--		lock_set_dealloc(d_table->locks);
--	}
--
- 	for( i=0 ; i<d_table->size; i++ ) {
- 		dlg = d_table->entries[i].first;
- 		while (dlg) {
-@@ -423,7 +398,7 @@ void destroy_dlg_table(void)
- 			dlg = dlg->next;
- 			destroy_dlg(l_dlg);
- 		}
--
-+		lock_destroy(&d_table->entries[i].lock);
- 	}
- 
- 	shm_free(d_table);
-diff --git a/modules/dialog/dlg_hash.h b/modules/dialog/dlg_hash.h
-index d79d994..b09fe38 100644
---- a/modules/dialog/dlg_hash.h
-+++ b/modules/dialog/dlg_hash.h
-@@ -33,6 +33,7 @@
- #include "../../locking.h"
- #include "../../lib/kmi/mi.h"
- #include "../../timer.h"
-+#include "../../atomic_ops.h"
- #include "dlg_timer.h"
- #include "dlg_cb.h"
- 
-@@ -134,7 +135,9 @@ typedef struct dlg_entry
- 	struct dlg_cell    *first;	/*!< dialog list */
- 	struct dlg_cell    *last;	/*!< optimisation, end of the dialog list */
- 	unsigned int       next_id;	/*!< next id */
--	unsigned int       lock_idx;	/*!< lock index */
-+	gen_lock_t lock;     /* mutex to access items in the slot */
-+	atomic_t locker_pid; /* pid of the process that holds the lock */
-+	int rec_lock_level;  /* recursive lock count */
- } dlg_entry_t;
- 
- 
-@@ -143,8 +146,6 @@ typedef struct dlg_table
- {
- 	unsigned int       size;	/*!< size of the dialog table */
- 	struct dlg_entry   *entries;	/*!< dialog hash table */
--	unsigned int       locks_no;	/*!< number of locks */
--	gen_lock_set_t     *locks;	/*!< lock table */
- } dlg_table_t;
- 
- 
-@@ -160,12 +161,22 @@ extern dlg_table_t *d_table;
- 
- 
- /*!
-- * \brief Set a dialog lock
-+ * \brief Set a dialog lock (re-entrant)
-  * \param _table dialog table
-  * \param _entry locked entry
-  */
- #define dlg_lock(_table, _entry) \
--		lock_set_get( (_table)->locks, (_entry)->lock_idx);
-+		do { \
-+			int mypid; \
-+			mypid = my_pid(); \
-+			if (likely(atomic_get( &(_entry)->locker_pid) != mypid)) { \
-+				lock_get( &(_entry)->lock); \
-+				atomic_set( &(_entry)->locker_pid, mypid); \
-+			} else { \
-+				/* locked within the same process that executed us */ \
-+				(_entry)->rec_lock_level++; \
-+			} \
-+		} while(0)
- 
- 
- /*!
-@@ -174,7 +185,15 @@ extern dlg_table_t *d_table;
-  * \param _entry locked entry
-  */
- #define dlg_unlock(_table, _entry) \
--		lock_set_release( (_table)->locks, (_entry)->lock_idx);
-+		do { \
-+			if (likely((_entry)->rec_lock_level == 0)) { \
-+				atomic_set( &(_entry)->locker_pid, 0); \
-+				lock_release( &(_entry)->lock); \
-+			} else  { \
-+				/* recursive locked => decrease lock count */ \
-+				(_entry)->rec_lock_level--; \
-+			} \
-+		} while(0)
- 
- /*!
-  * \brief Unlink a dialog from the list without locking
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0009-dialog-removed-unused-variable.patch b/debian/patches/upstream/0009-dialog-removed-unused-variable.patch
deleted file mode 100644
index 0ababd1..0000000
--- a/debian/patches/upstream/0009-dialog-removed-unused-variable.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From f4f400c6078ac45133c546ed0e42e434ae06c983 Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Tue, 16 Jun 2015 15:45:07 +0200
-Subject: [PATCH] dialog: removed unused variable
-
-(cherry picked from commit 6dba3a2d2785cba6b29bcb3d11b318687a12b632)
----
- modules/dialog/dlg_hash.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/modules/dialog/dlg_hash.c b/modules/dialog/dlg_hash.c
-index e3d0005..420caea 100644
---- a/modules/dialog/dlg_hash.c
-+++ b/modules/dialog/dlg_hash.c
-@@ -252,7 +252,6 @@ int dlg_clean_run(ticks_t ti)
-  */
- int init_dlg_table(unsigned int size)
- {
--	unsigned int n;
- 	unsigned int i;
- 
- 	dlg_ka_list_head = (dlg_ka_t **)shm_malloc(sizeof(dlg_ka_t *));
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0010-utils-fixed-indentation.patch b/debian/patches/upstream/0010-utils-fixed-indentation.patch
deleted file mode 100644
index e52cf9f..0000000
--- a/debian/patches/upstream/0010-utils-fixed-indentation.patch
+++ /dev/null
@@ -1,249 +0,0 @@
-From 82b3e56c0ea38682d82ac7b5411555e7c8423eab Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Wed, 17 Jun 2015 16:12:44 +0200
-Subject: [PATCH] utils: fixed indentation
-
-(cherry picked from commit 8a9d7df57e0ac83bb8fb6f97c71b01ec96184ba0)
----
- modules/utils/functions.c | 196 +++++++++++++++++++++++-----------------------
- 1 file changed, 98 insertions(+), 98 deletions(-)
-
-diff --git a/modules/utils/functions.c b/modules/utils/functions.c
-index 3bfcb26..d32d970 100644
---- a/modules/utils/functions.c
-+++ b/modules/utils/functions.c
-@@ -52,25 +52,25 @@
-  */
- size_t write_function( void *ptr, size_t size, size_t nmemb, void *stream_ptr)
- {
--    http_res_stream_t *stream = (http_res_stream_t *) stream_ptr;
-+	http_res_stream_t *stream = (http_res_stream_t *) stream_ptr;
- 
--    stream->buf = (char *) pkg_realloc(stream->buf, stream->curr_size + 
--				(size * nmemb) + 1);
-+	stream->buf = (char *) pkg_realloc(stream->buf, stream->curr_size + 
-+			(size * nmemb) + 1);
- 
--    if (stream->buf == NULL) {
--	LM_ERR("cannot allocate memory for stream\n");
--	return CURLE_WRITE_ERROR;
--    }
-+	if (stream->buf == NULL) {
-+		LM_ERR("cannot allocate memory for stream\n");
-+		return CURLE_WRITE_ERROR;
-+	}
- 
--    memcpy(&stream->buf[stream->pos], (char *) ptr, (size * nmemb));
-+	memcpy(&stream->buf[stream->pos], (char *) ptr, (size * nmemb));
- 
--    stream->curr_size += ((size * nmemb) + 1);
--    stream->pos += (size * nmemb);
-+	stream->curr_size += ((size * nmemb) + 1);
-+	stream->pos += (size * nmemb);
- 
--    stream->buf[stream->pos + 1] = '\0';
-+	stream->buf[stream->pos + 1] = '\0';
- 
--    return size * nmemb;
-- }
-+	return size * nmemb;
-+}
- 
- 
- /* 
-@@ -79,73 +79,73 @@ size_t write_function( void *ptr, size_t size, size_t nmemb, void *stream_ptr)
-  */
- int http_query(struct sip_msg* _m, char* _url, char* _dst, char* _post)
- {
--    CURL *curl;
--    CURLcode res;  
--    str value, post_value;
--    char *url, *at, *post;
--    http_res_stream_t stream;
--    long stat;
--    pv_spec_t *dst;
--    pv_value_t val;
--    double download_size;
--
--    memset(&stream, 0, sizeof(http_res_stream_t));
--
--    if (fixup_get_svalue(_m, (gparam_p)_url, &value) != 0) {
--	LM_ERR("cannot get page value\n");
--	return -1;
--    }
--
--    curl = curl_easy_init();
--    if (curl == NULL) {
--	LM_ERR("failed to initialize curl\n");
--	return -1;
--    }
--
--    url = pkg_malloc(value.len + 1);
--    if (url == NULL) {
--	curl_easy_cleanup(curl);
--	LM_ERR("cannot allocate pkg memory for url\n");
--	return -1;
--    }
--    memcpy(url, value.s, value.len);
--    *(url + value.len) = (char)0;
--    curl_easy_setopt(curl, CURLOPT_URL, url);
--
--    if (_post) {
--        /* Now specify we want to POST data */ 
--	curl_easy_setopt(curl, CURLOPT_POST, 1L);
--
--    	if (fixup_get_svalue(_m, (gparam_p)_post, &post_value) != 0) {
--		LM_ERR("cannot get post value\n");
--		curl_easy_cleanup(curl);
--		pkg_free(url);
-+	CURL *curl;
-+	CURLcode res;  
-+	str value, post_value;
-+	char *url, *at, *post;
-+	http_res_stream_t stream;
-+	long stat;
-+	pv_spec_t *dst;
-+	pv_value_t val;
-+	double download_size;
-+
-+	memset(&stream, 0, sizeof(http_res_stream_t));
-+
-+	if (fixup_get_svalue(_m, (gparam_p)_url, &value) != 0) {
-+		LM_ERR("cannot get page value\n");
- 		return -1;
--    	}
--        post = pkg_malloc(post_value.len + 1);
--        if (post == NULL) {
-+	}
-+
-+	curl = curl_easy_init();
-+	if (curl == NULL) {
-+		LM_ERR("failed to initialize curl\n");
-+		return -1;
-+	}
-+
-+	url = pkg_malloc(value.len + 1);
-+	if (url == NULL) {
- 		curl_easy_cleanup(curl);
--		pkg_free(url);
--        	LM_ERR("cannot allocate pkg memory for post\n");
--        	return -1;
-+		LM_ERR("cannot allocate pkg memory for url\n");
-+		return -1;
-+	}
-+	memcpy(url, value.s, value.len);
-+	*(url + value.len) = (char)0;
-+	curl_easy_setopt(curl, CURLOPT_URL, url);
-+
-+	if (_post) {
-+		/* Now specify we want to POST data */ 
-+		curl_easy_setopt(curl, CURLOPT_POST, 1L);
-+
-+		if (fixup_get_svalue(_m, (gparam_p)_post, &post_value) != 0) {
-+			LM_ERR("cannot get post value\n");
-+			curl_easy_cleanup(curl);
-+			pkg_free(url);
-+			return -1;
-+		}
-+		post = pkg_malloc(post_value.len + 1);
-+		if (post == NULL) {
-+			curl_easy_cleanup(curl);
-+			pkg_free(url);
-+			LM_ERR("cannot allocate pkg memory for post\n");
-+			return -1;
-+		}
-+		memcpy(post, post_value.s, post_value.len);
-+		*(post + post_value.len) = (char)0;
-+		curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post);
- 	}
--	memcpy(post, post_value.s, post_value.len);
--	*(post + post_value.len) = (char)0;
-- 	curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post);
--    }
--       
- 
--    curl_easy_setopt(curl, CURLOPT_NOSIGNAL, (long)1);
--    curl_easy_setopt(curl, CURLOPT_TIMEOUT, (long)http_query_timeout);
- 
--    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_function);
--    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &stream);
-+	curl_easy_setopt(curl, CURLOPT_NOSIGNAL, (long)1);
-+	curl_easy_setopt(curl, CURLOPT_TIMEOUT, (long)http_query_timeout);
-+
-+	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_function);
-+	curl_easy_setopt(curl, CURLOPT_WRITEDATA, &stream);
- 
--    res = curl_easy_perform(curl);  
--    pkg_free(url);
--    if (_post) {
--	pkg_free(post);
--    }
-+	res = curl_easy_perform(curl);  
-+	pkg_free(url);
-+	if (_post) {
-+		pkg_free(post);
-+	}
- 
- 	if (res != CURLE_OK) {
- 		/* http://curl.haxx.se/libcurl/c/libcurl-errors.html */
-@@ -156,33 +156,33 @@ int http_query(struct sip_msg* _m, char* _url, char* _dst, char* _post)
- 		} else {
- 			LM_ERR("failed to perform curl (%d)\n", res);
- 		}
--	
-+
- 		curl_easy_cleanup(curl);
- 		if(stream.buf)
- 			pkg_free(stream.buf);
- 		return -1;
--    }
--
--    curl_easy_getinfo(curl, CURLINFO_HTTP_CODE, &stat);
--    if ((stat >= 200) && (stat < 500)) {
--	curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD, &download_size);
--	LM_DBG("http_query download size: %u\n", (unsigned int)download_size);
--
--	/* search for line feed */
--	at = memchr(stream.buf, (char)10, download_size);
--	if (at == NULL) {
--	    /* not found: use whole stream */
--	    at = stream.buf + (unsigned int)download_size;
- 	}
--	val.rs.s = stream.buf;
--	val.rs.len = at - stream.buf;
--	LM_DBG("http_query result: %.*s\n", val.rs.len, val.rs.s);
--	val.flags = PV_VAL_STR;
--	dst = (pv_spec_t *)_dst;
--	dst->setf(_m, &dst->pvp, (int)EQ_T, &val);
--    }
--	
--    curl_easy_cleanup(curl);
--    pkg_free(stream.buf);
--    return stat;
-+
-+	curl_easy_getinfo(curl, CURLINFO_HTTP_CODE, &stat);
-+	if ((stat >= 200) && (stat < 500)) {
-+		curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD, &download_size);
-+		LM_DBG("http_query download size: %u\n", (unsigned int)download_size);
-+
-+		/* search for line feed */
-+		at = memchr(stream.buf, (char)10, download_size);
-+		if (at == NULL) {
-+			/* not found: use whole stream */
-+			at = stream.buf + (unsigned int)download_size;
-+		}
-+		val.rs.s = stream.buf;
-+		val.rs.len = at - stream.buf;
-+		LM_DBG("http_query result: %.*s\n", val.rs.len, val.rs.s);
-+		val.flags = PV_VAL_STR;
-+		dst = (pv_spec_t *)_dst;
-+		dst->setf(_m, &dst->pvp, (int)EQ_T, &val);
-+	}
-+
-+	curl_easy_cleanup(curl);
-+	pkg_free(stream.buf);
-+	return stat;
- }
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0011-Makefile.defs-fixes-indentation.patch b/debian/patches/upstream/0011-Makefile.defs-fixes-indentation.patch
deleted file mode 100644
index 4ee8a6d..0000000
--- a/debian/patches/upstream/0011-Makefile.defs-fixes-indentation.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 6da6b53ba373af00f4f29b097c28709b9436583b Mon Sep 17 00:00:00 2001
-From: Mikko Lehto <mslehto at iki.fi>
-Date: Thu, 18 Jun 2015 15:22:56 +0300
-Subject: [PATCH] Makefile.defs: fixes indentation
-
-(cherry picked from commit 89633c4c85a6a44df3bbe4a80cf5ca595b59c196)
----
- Makefile.defs | 7 ++-----
- 1 file changed, 2 insertions(+), 5 deletions(-)
-
-diff --git a/Makefile.defs b/Makefile.defs
-index 65e50e7..7051f3b 100644
---- a/Makefile.defs
-+++ b/Makefile.defs
-@@ -892,11 +892,8 @@ else		# CC_NAME, gcc
- ifeq		($(CC_NAME), clang)
- $(call                          set_if_empty,CPU,athlon64)
- 					C_DEFS+=-DCC_GCC_LIKE_ASM
--                                        CFLAGS+=-g -m32
--                                                $(CC_OPT) \
--                                                          \
--                                                -mtune=$(CPU)
--                                        LDFLAGS+=-m32
-+					CFLAGS+=-g -m32 $(CC_OPT) -mtune=$(CPU)
-+					LDFLAGS+=-m32
- else			# CC_NAME, clang
- ifeq		($(CC_NAME), icc)
- 			C_DEFS+=-DCC_GCC_LIKE_ASM
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0012-domain-allow-type-field-in-domain_attrs-to-be-a-DB1_.patch b/debian/patches/upstream/0012-domain-allow-type-field-in-domain_attrs-to-be-a-DB1_.patch
deleted file mode 100644
index 0170590..0000000
--- a/debian/patches/upstream/0012-domain-allow-type-field-in-domain_attrs-to-be-a-DB1_.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 75b853cf54c2dd7595c094b302af169fcad25fe0 Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Fri, 19 Jun 2015 10:41:08 +0200
-Subject: [PATCH] domain: allow 'type' field in domain_attrs to be a DB1_BIGINT
-
-- in addition to allowing DB1_INT
-- makes it work with MySQL views on 64bit systems
-- based on a patch by divereigh, GH#182
-
-(cherry picked from commit e6f3a512c599678fca08daca561bcad4c05add23)
----
- modules/domain/domain.c | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/modules/domain/domain.c b/modules/domain/domain.c
-index 19943ab..65b6aed 100644
---- a/modules/domain/domain.c
-+++ b/modules/domain/domain.c
-@@ -362,11 +362,16 @@ int reload_tables ( void )
- 	}
- 
- 	if ((VAL_NULL(ROW_VALUES(row) + 2) == 1) ||
--	    (VAL_TYPE(ROW_VALUES(row) + 2) != DB1_INT)) {
-+	    ((VAL_TYPE(ROW_VALUES(row) + 2) != DB1_INT) &&
-+	     (VAL_TYPE(ROW_VALUES(row) + 2) != DB1_BIGINT))) {
- 	    LM_ERR("type at row <%u> is null or not int\n", i);
- 	    goto err;
- 	}
--	type = (int)VAL_INT(ROW_VALUES(row) + 2);
-+	if(VAL_TYPE(ROW_VALUES(row) + 2) == DB1_BIGINT) {
-+		type = (int)VAL_BIGINT(ROW_VALUES(row) + 2);
-+	} else {
-+		type = (int)VAL_INT(ROW_VALUES(row) + 2);
-+	}
- 	if ((type != 0) && (type != 2)) {
- 	    LM_ERR("unknown type <%d> at row <%u>\n", type, i);
- 	    goto err;
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0013-sdpops-don-t-return-0-if-no-match-for-sdp_get_line_s.patch b/debian/patches/upstream/0013-sdpops-don-t-return-0-if-no-match-for-sdp_get_line_s.patch
deleted file mode 100644
index 97c49b6..0000000
--- a/debian/patches/upstream/0013-sdpops-don-t-return-0-if-no-match-for-sdp_get_line_s.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 388433d265cfcf8637c4e549803ee84cc9ef8519 Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Fri, 19 Jun 2015 11:56:56 +0200
-Subject: [PATCH] sdpops: don't return 0 if no match for
- sdp_get_line_startswith()
-
-- that causes exit of config execution
-- reported by Sebastian Damm
-
-(cherry picked from commit 0870ab88262bb61124899ad98d06a72a6cdc7129)
----
- modules/sdpops/sdpops_mod.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/modules/sdpops/sdpops_mod.c b/modules/sdpops/sdpops_mod.c
-index 2a4aa6b..f853996 100644
---- a/modules/sdpops/sdpops_mod.c
-+++ b/modules/sdpops/sdpops_mod.c
-@@ -1657,7 +1657,7 @@ static int w_sdp_get_line_startswith(sip_msg_t *msg, char *avp, char *s_line)
- 		p = find_sdp_line(line.s + line.len, body.s + body.len, sline.s[0]);
- 	}
- 
--	return 0;
-+	return -1;
- }
- 
- /**
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0014-Makefile-kamailio-user-home-dir-set-to-var-run-kamai.patch b/debian/patches/upstream/0014-Makefile-kamailio-user-home-dir-set-to-var-run-kamai.patch
deleted file mode 100644
index 56b4e4f..0000000
--- a/debian/patches/upstream/0014-Makefile-kamailio-user-home-dir-set-to-var-run-kamai.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 2894aff93058d29e2ad336c43478c3fcb5d082b1 Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Fri, 19 Jun 2015 12:06:30 +0200
-Subject: [PATCH] Makefile: kamailio user home dir set to /var/run/kamailio for
- install-initd-centos
-
-- affects the useradd command
-- it was pointing to lib dir
-
-(cherry picked from commit dc2d3c3f609c81e21928390110952f4070ea9c62)
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index efd58cc..2d28777 100644
---- a/Makefile
-+++ b/Makefile
-@@ -999,7 +999,7 @@ install_initd_centos install-initd-centos:
- 		> /etc/default/$(NAME)
- 	/usr/sbin/groupadd -r $(NAME)
- 	/usr/sbin/useradd -r -g $(NAME) -s /bin/false -c "Kamailio Daemon" \
--                  -d ${lib_prefix}/${lib_dir} $(NAME)
-+                  -d /var/run/$(NAME) $(NAME)
- 
- .PHONY: dbschema
- dbschema:
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0015-evapi-evapi_close-doesn-t-use-any-parameter.patch b/debian/patches/upstream/0015-evapi-evapi_close-doesn-t-use-any-parameter.patch
deleted file mode 100644
index b5798a8..0000000
--- a/debian/patches/upstream/0015-evapi-evapi_close-doesn-t-use-any-parameter.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From dcd1ba0e3a4e37b0a291bdebb69df0edec29aff2 Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Tue, 23 Jun 2015 11:45:22 +0200
-Subject: [PATCH] evapi: evapi_close() doesn't use any parameter
-
-(cherry picked from commit cccd1a4b20c750246b491ff41090c5749561948d)
----
- modules/evapi/evapi_mod.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/modules/evapi/evapi_mod.c b/modules/evapi/evapi_mod.c
-index 2a3a824..eeafc21 100644
---- a/modules/evapi/evapi_mod.c
-+++ b/modules/evapi/evapi_mod.c
-@@ -66,6 +66,8 @@ static cmd_export_t cmds[]={
- 		0, ANY_ROUTE},
- 	{"evapi_async_relay", (cmd_function)w_evapi_async_relay, 1, fixup_evapi_relay,
- 		0, REQUEST_ROUTE},
-+	{"evapi_close",       (cmd_function)w_evapi_close,       0, NULL,
-+		0, ANY_ROUTE},
- 	{"evapi_close",       (cmd_function)w_evapi_close,       1, NULL,
- 		0, ANY_ROUTE},
- 	{0, 0, 0, 0, 0, 0}
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0016-rtjson-error-log-level-set-to-notice-for-importing-u.patch b/debian/patches/upstream/0016-rtjson-error-log-level-set-to-notice-for-importing-u.patch
deleted file mode 100644
index 6809b8b..0000000
--- a/debian/patches/upstream/0016-rtjson-error-log-level-set-to-notice-for-importing-u.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 85f93d29191ee099704c850a8742cf23404a3e9f Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Tue, 23 Jun 2015 13:12:08 +0200
-Subject: [PATCH] rtjson: error log level set to notice for importing uac api
-
-- printed at module init, it is not preventing to start the server
-
-(cherry picked from commit 239c54843897ec143c03693e44c994ee9cdde684)
----
- modules/rtjson/rtjson_routing.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/modules/rtjson/rtjson_routing.c b/modules/rtjson/rtjson_routing.c
-index 71ac2e6..7e088c9 100644
---- a/modules/rtjson/rtjson_routing.c
-+++ b/modules/rtjson/rtjson_routing.c
-@@ -58,7 +58,7 @@ int rtjson_init(void)
- 		memset(&tmb, 0, sizeof(struct tm_binds));
- 	}
- 	if (load_uac_api(&uacb) < 0) {
--		LM_ERR("cannot bind to UAC API - some features are diabled\n");
-+		LM_NOTICE("cannot bind to UAC API - some features are diabled\n");
- 		memset(&uacb, 0, sizeof(uac_api_t));
- 	}
- 	return 0;
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0017-uac-fixed-typos-in-log-message.patch b/debian/patches/upstream/0017-uac-fixed-typos-in-log-message.patch
deleted file mode 100644
index 7ab3616..0000000
--- a/debian/patches/upstream/0017-uac-fixed-typos-in-log-message.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From bebf30abb057221be646e95b07cdaca88cab63b5 Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Tue, 23 Jun 2015 13:15:29 +0200
-Subject: [PATCH] uac: fixed typos in log message
-
-(cherry picked from commit 42f0a1ffe551442058f53c9446495d5e62dc5abc)
----
- modules/uac/api.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/modules/uac/api.h b/modules/uac/api.h
-index 403a303..689f1fe 100644
---- a/modules/uac/api.h
-+++ b/modules/uac/api.h
-@@ -20,7 +20,7 @@ int bind_uac(uac_api_t*);
- inline static int load_uac_api(uac_api_t *uacb){
- 	bind_uac_f bind_uac_exports;
- 	if(!(bind_uac_exports=(bind_uac_f)find_export("bind_uac",1,0))){
--		LM_ERR("Failed to import bind_iuax\n");
-+		LM_ERR("Failed to import bind_uac\n");
- 		return -1;
- 	}
- 	return bind_uac_exports(uacb);
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0018-evapi-more-documentation-for-exported-functions.patch b/debian/patches/upstream/0018-evapi-more-documentation-for-exported-functions.patch
deleted file mode 100644
index 9565e6a..0000000
--- a/debian/patches/upstream/0018-evapi-more-documentation-for-exported-functions.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From c6b64b214af224e3416cc1d302bea472d847cebf Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Tue, 23 Jun 2015 14:07:37 +0200
-Subject: [PATCH] evapi: more documentation for exported functions
-
-(cherry picked from commit 96225847ddfc2f879d63adbc0117748c9cf76f02)
----
- modules/evapi/doc/evapi_admin.xml | 27 ++++++++++++++++++++++-----
- 1 file changed, 22 insertions(+), 5 deletions(-)
-
-diff --git a/modules/evapi/doc/evapi_admin.xml b/modules/evapi/doc/evapi_admin.xml
-index ef2e34a..574adef 100644
---- a/modules/evapi/doc/evapi_admin.xml
-+++ b/modules/evapi/doc/evapi_admin.xml
-@@ -131,8 +131,18 @@ modparam("evapi", "netstring_format", 0)
- 		<function moreinfo="none">evapi_relay(evdata)</function>
- 	    </title>
- 	    <para>
--		Relay the event data give as parameter to connected applications.
--		The format on the network is netstring with evdata payload.
-+		Relay the event data given as parameter to connected applications.
-+		</para>
-+		<para>
-+		The format on the network is netstring with evdata payload if
-+		netstring_format parameter is set to 1 or bare evdata if
-+		netstring_format parameter is set to 0.
-+		</para>
-+		<para>
-+		The function is passing the task to evapi dispatcher process, therefore
-+		the SIP worker process is not blocked. Also, it doesn't wait for any
-+		response, therefore the processing of the configuration continues
-+		very fast when executing evapi_relay().
- 		</para>
- 		<para>
- 		This function can be used from ANY_ROUTE.
-@@ -166,10 +176,17 @@ evapi_relay("{ \"event\": \"test\",\n \"data\": { \"fU\": \"$fU\" }\n}");
- 		<function moreinfo="none">evapi_async_relay(evdata)</function>
- 	    </title>
- 	    <para>
--		Relay the event data give as parameter to connected applications.
--		The format on the network is netstring with evdata payload. Before
-+		Relay the event data given as parameter to connected applications. Before
- 		evaluating the parameter, the request processing is suspended using
--		tm module.
-+		tm module (using the t_suspend()/t_continue() framework). The routing
-+		of the SIP request can be continued once event_route[evapi:message-received]
-+		is triggered. After evapi_async_relay() returns true, no relaying should
-+		happen in request_route(), it should be followed by exit;.
-+		</para>
-+		<para>
-+		The format on the network is netstring with evdata payload if
-+		netstring_format parameter is set to 1 or bare evdata if
-+		netstring_format parameter is set to 0.
- 		</para>
- 		<para>
- 		This function can be used from REQUEST_ROUTE.
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0019-rtjson-proper-access-to-items-in-routes-array.patch b/debian/patches/upstream/0019-rtjson-proper-access-to-items-in-routes-array.patch
deleted file mode 100644
index 3304e17..0000000
--- a/debian/patches/upstream/0019-rtjson-proper-access-to-items-in-routes-array.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-From f1a39a6580f6af041f3b002961dcd6f45498ad87 Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Tue, 23 Jun 2015 16:09:40 +0200
-Subject: [PATCH] rtjson: proper access to items in routes array
-
-- more debug messages to show the internal operations
-
-(cherry picked from commit 8025761dc0c75fd50e3ee24be96d420df79659d5)
----
- modules/rtjson/rtjson_routing.c | 28 ++++++++++++++++++++--------
- 1 file changed, 20 insertions(+), 8 deletions(-)
-
-diff --git a/modules/rtjson/rtjson_routing.c b/modules/rtjson/rtjson_routing.c
-index 7e088c9..c9ee5c3 100644
---- a/modules/rtjson/rtjson_routing.c
-+++ b/modules/rtjson/rtjson_routing.c
-@@ -312,17 +312,19 @@ error:
-  */
- int rtjson_init_serial(sip_msg_t *msg, srjson_doc_t *jdoc, sr_xavp_t *iavp)
- {
-+	srjson_t *tj = NULL;
- 	srjson_t *nj = NULL;
- 	srjson_t *rj = NULL;
- 	str val;
- 	unsigned int bflags = 0;
- 	unsigned int old_bflags = 0;
- 
--	nj = srjson_GetObjectItem(jdoc, jdoc->root, "routes");
--	if(nj==NULL || nj->type!=srjson_Array || nj->child==NULL) {
-+	tj = srjson_GetObjectItem(jdoc, jdoc->root, "routes");
-+	if(tj==NULL || tj->type!=srjson_Array || tj->child==NULL) {
- 		LM_ERR("missing or invalid routes field\n");
- 		goto error;
- 	}
-+	nj = tj->child;
- 
- 	clear_branches();
- 
-@@ -330,6 +332,7 @@ int rtjson_init_serial(sip_msg_t *msg, srjson_doc_t *jdoc, sr_xavp_t *iavp)
- 	if(rj!=NULL && rj->type==srjson_String && rj->valuestring!=NULL) {
- 		val.s = rj->valuestring;
- 		val.len = strlen(val.s);
-+		LM_DBG("rewrite r-uri to: [%.*s]\n", val.len, val.s);
- 		if (rewrite_uri(msg, &val) < 0) {
- 			LM_ERR("unable to rewrite Request-URI\n");
- 			goto error;
-@@ -349,6 +352,7 @@ int rtjson_init_serial(sip_msg_t *msg, srjson_doc_t *jdoc, sr_xavp_t *iavp)
- 	if(rj!=NULL && rj->type==srjson_String && rj->valuestring!=NULL) {
- 		val.s = rj->valuestring;
- 		val.len = strlen(val.s);
-+		LM_DBG("rewrite dst-uri to: [%.*s]\n", val.len, val.s);
- 		if (set_dst_uri(msg, &val) < 0) {
- 			LM_ERR("unable to set destination uri\n");
- 			goto error;
-@@ -359,6 +363,7 @@ int rtjson_init_serial(sip_msg_t *msg, srjson_doc_t *jdoc, sr_xavp_t *iavp)
- 	if(rj!=NULL && rj->type==srjson_String && rj->valuestring!=NULL) {
- 		val.s = rj->valuestring;
- 		val.len = strlen(val.s);
-+		LM_DBG("rewrite path to: [%.*s]\n", val.len, val.s);
- 		if (set_path_vector(msg, &val) < 0) {
- 			LM_ERR("unable to set path\n");
- 			goto error;
-@@ -423,6 +428,7 @@ int rtjson_prepare_branch(sip_msg_t *msg, srjson_doc_t *jdoc, srjson_t *nj)
- 	}
- 
- 	if(xhdr.len>4) {
-+		LM_DBG("appending extra headers: [%.*s]\n", xhdr.len, xhdr.s);
- 		anchor = anchor_lump(msg, msg->unparsed - msg->buf, 0, 0);
- 		if(anchor == 0) {
- 			LM_ERR("can't get anchor\n");
-@@ -532,14 +538,16 @@ error:
-  */
- int rtjson_init_parallel(sip_msg_t *msg, srjson_doc_t *jdoc, sr_xavp_t *iavp)
- {
-+	srjson_t *tj = NULL;
- 	srjson_t *nj = NULL;
- 	int ret;
- 
--	nj = srjson_GetObjectItem(jdoc, jdoc->root, "routes");
--	if(nj==NULL || nj->type!=srjson_Array || nj->child==NULL) {
-+	tj = srjson_GetObjectItem(jdoc, jdoc->root, "routes");
-+	if(tj==NULL || tj->type!=srjson_Array || tj->child==NULL) {
- 		LM_ERR("missing or invalid routes field\n");
- 		goto error;
- 	}
-+	nj = tj->child;
- 
- 	ret = rtjson_init_serial(msg, jdoc, iavp);
- 	if(ret<0)
-@@ -569,6 +577,7 @@ int rtjson_next_route(sip_msg_t *msg)
- 	sr_xavp_t *javp = NULL;
- 	sr_xavp_t *iavp = NULL;
- 	srjson_doc_t tdoc;
-+	srjson_t *tj = NULL;
- 	srjson_t *nj = NULL;
- 	str val;
- 	str xname;
-@@ -612,11 +621,12 @@ int rtjson_next_route(sip_msg_t *msg)
- 		goto error;
- 	}
- 
--	nj = srjson_GetObjectItem(&tdoc, tdoc.root, "routes");
--	if(nj==NULL || nj->type!=srjson_Array || nj->child==NULL) {
-+	tj = srjson_GetObjectItem(&tdoc, tdoc.root, "routes");
-+	if(tj==NULL || tj->type!=srjson_Array || tj->child==NULL) {
- 		LM_ERR("missing or invalid routes field\n");
- 		goto error;
- 	}
-+	nj = tj->child;
- 
- 	i = 0;
- 	while(nj && i<iavp->val.v.i) {
-@@ -646,6 +656,7 @@ int rtjson_update_branch(sip_msg_t *msg)
- 	sr_xavp_t *javp = NULL;
- 	sr_xavp_t *iavp = NULL;
- 	srjson_doc_t tdoc;
-+	srjson_t *tj = NULL;
- 	srjson_t *nj = NULL;
- 	str val;
- 	str xname;
-@@ -689,11 +700,12 @@ int rtjson_update_branch(sip_msg_t *msg)
- 		goto error;
- 	}
- 
--	nj = srjson_GetObjectItem(&tdoc, tdoc.root, "routes");
--	if(nj==NULL || nj->type!=srjson_Array || nj->child==NULL) {
-+	tj = srjson_GetObjectItem(&tdoc, tdoc.root, "routes");
-+	if(tj==NULL || tj->type!=srjson_Array || tj->child==NULL) {
- 		LM_ERR("missing or invalid routes field\n");
- 		goto error;
- 	}
-+	nj = tj->child;
- 
- 	i = 0;
- 	while(nj && i<iavp->val.v.i) {
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0020-evapi-don-t-print-the-message-after-relaying-to-evap.patch b/debian/patches/upstream/0020-evapi-don-t-print-the-message-after-relaying-to-evap.patch
deleted file mode 100644
index d916d4e..0000000
--- a/debian/patches/upstream/0020-evapi-don-t-print-the-message-after-relaying-to-evap.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 32243fd248a5d49b22ee597fe02ca95f58cab8a5 Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Tue, 23 Jun 2015 16:44:11 +0200
-Subject: [PATCH] evapi: don't print the message after relaying to evapi
- dispatcher
-
-- the dispatcher process can consume it and frees the pointers
-
-(cherry picked from commit 57b75141542cdaa471dab00cfb4f7d8812d41824)
----
- modules/evapi/evapi_dispatch.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/modules/evapi/evapi_dispatch.c b/modules/evapi/evapi_dispatch.c
-index 3029d77..159d14e 100644
---- a/modules/evapi/evapi_dispatch.c
-+++ b/modules/evapi/evapi_dispatch.c
-@@ -534,8 +534,8 @@ int evapi_relay(str *evdata)
- 	int sbsize;
- 	str *sbuf;
- 
--	LM_DBG("relaying event data [%.*s]\n",
--			evdata->len, evdata->s);
-+	LM_DBG("relaying event data [%.*s] (%d)\n",
-+			evdata->len, evdata->s, evdata->len);
- 
- 	sbsize = evdata->len;
- 	sbuf = (str*)shm_malloc(sizeof(str) + ((sbsize+32) * sizeof(char)));
-@@ -560,12 +560,12 @@ int evapi_relay(str *evdata)
- 		return -1;
- 	}
- 
-+	LM_DBG("sending [%p] [%.*s] (%d)\n", sbuf, sbuf->len, sbuf->s, sbuf->len);
- 	len = write(_evapi_notify_sockets[1], &sbuf, sizeof(str*));
- 	if(len<=0) {
- 		LM_ERR("failed to pass the pointer to evapi dispatcher\n");
- 		return -1;
- 	}
--	LM_DBG("sent [%p] [%.*s] (%d)\n", sbuf, sbuf->len, sbuf->s, sbuf->len);
- 	return 0;
- }
- 
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0021-rtjson-safety-check-for-branch-index-stored-interanl.patch b/debian/patches/upstream/0021-rtjson-safety-check-for-branch-index-stored-interanl.patch
deleted file mode 100644
index aa2adc8..0000000
--- a/debian/patches/upstream/0021-rtjson-safety-check-for-branch-index-stored-interanl.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 4b19b9223d73d7138a48e7b358a86f2504efa4f0 Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Tue, 23 Jun 2015 16:45:17 +0200
-Subject: [PATCH] rtjson: safety check for branch index stored interanlly in
- xavp
-
-(cherry picked from commit 59389b288fd50369226681b309c0895de03d7b77)
----
- modules/rtjson/rtjson_routing.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/modules/rtjson/rtjson_routing.c b/modules/rtjson/rtjson_routing.c
-index c9ee5c3..bb59da5 100644
---- a/modules/rtjson/rtjson_routing.c
-+++ b/modules/rtjson/rtjson_routing.c
-@@ -677,6 +677,10 @@ int rtjson_update_branch(sip_msg_t *msg)
- 		LM_WARN("no idx for routing\n");
- 		return -1;
- 	}
-+	if(iavp->val.v.i<=0) {
-+		LM_WARN("invalid branch idx for routing\n");
-+		return -1;
-+	}
- 
- 	srjson_InitDoc(&tdoc, NULL);
- 
-@@ -708,7 +712,8 @@ int rtjson_update_branch(sip_msg_t *msg)
- 	nj = tj->child;
- 
- 	i = 0;
--	while(nj && i<iavp->val.v.i) {
-+	/* stop at number of branches - 1 */
-+	while(nj && i<iavp->val.v.i-1) {
- 		nj = nj->next;
- 		i++;
- 	}
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0022-rtjson-more-documentation-about-json-routing-documen.patch b/debian/patches/upstream/0022-rtjson-more-documentation-about-json-routing-documen.patch
deleted file mode 100644
index 46000b9..0000000
--- a/debian/patches/upstream/0022-rtjson-more-documentation-about-json-routing-documen.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From a5bb99b4499b1ffde155cad9b2bc1377caf19009 Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Tue, 23 Jun 2015 23:21:35 +0200
-Subject: [PATCH] rtjson: more documentation about json routing document format
-
-(cherry picked from commit 5db8bec2fdfba911f7053e615cf156d76af5fa46)
----
- modules/rtjson/doc/rtjson_admin.xml | 86 ++++++++++++++++++++++++++++++++++++-
- 1 file changed, 84 insertions(+), 2 deletions(-)
-
-diff --git a/modules/rtjson/doc/rtjson_admin.xml b/modules/rtjson/doc/rtjson_admin.xml
-index 4218e73..fedd40c 100644
---- a/modules/rtjson/doc/rtjson_admin.xml
-+++ b/modules/rtjson/doc/rtjson_admin.xml
-@@ -148,6 +148,8 @@ rtjson_push_routes();
- ...
- rtjson_init_routes("$var(json)");
- rtjson_push_routes();
-+t_on_failure("REROUTE");
-+t_relay();
- ...
- failure_route[REROUTE] {
- 	rtjson_next_route();
-@@ -174,6 +176,8 @@ failure_route[REROUTE] {
- ...
- rtjson_init_routes("$var(json)");
- rtjson_push_routes();
-+t_on_branch("OUTGOING");
-+t_relay();
- ...
- branch_route[OUTGOING] {
- 	rtjson_update_branch();
-@@ -191,7 +195,85 @@ branch_route[OUTGOING] {
- 		The format of the JSON document containing routing information.
- 	</para>
- 	<para>
--		Description of the fields: TBA.
-+		Description of the fields in the JSON routing document:
-+			<itemizedlist>
-+			<listitem>
-+			<para>
-+				<emphasis>version</emphasis> - intended to enforce versioning
-+				checks (not enforced yet), recommended to be set to "1.0".
-+			</para>
-+			</listitem>
-+			<listitem>
-+			<para>
-+				<emphasis>routing</emphasis> - can be "serial" or "parallel",
-+				corresponding to desired routing type: serial or parallel forking.
-+			</para>
-+			</listitem>
-+			<listitem>
-+			<para>
-+				<emphasis>routes</emphasis> - an array with structures holding
-+				the attributes for destinations. The attributes can be:
-+				<itemizedlist>
-+				<listitem>
-+				<para>
-+					<emphasis>uri</emphasis> - request URI
-+				</para>
-+				</listitem>
-+				<listitem>
-+				<para>
-+					<emphasis>dst_uri</emphasis> - outbound proxy URI
-+				</para>
-+				</listitem>
-+				<listitem>
-+				<para>
-+					<emphasis>path</emphasis> - Path URI vector
-+				</para>
-+				</listitem>
-+				<listitem>
-+				<para>
-+					<emphasis>socket</emphasis> - local socket
-+				</para>
-+				</listitem>
-+				<listitem>
-+				<para>
-+					<emphasis>headers</emphasis> - a structure with values for headers
-+					From and To specified as display name and URI, plus extra
-+					headers to be appended to SIP request. It requires uac module in
-+					order to update From and To headers.
-+					Set by rtjson_update_branch() only for serial routing.
-+				</para>
-+				</listitem>
-+				<listitem>
-+				<para>
-+					<emphasis>branch_flags</emphasis> - branch flags.
-+					Set by rtjson_update_branch() only for serial routing.
-+				</para>
-+				</listitem>
-+				<listitem>
-+				<para>
-+					<emphasis>fr_timer</emphasis> - value for fr_timer parameter of
-+					tm module.
-+					Set by rtjson_update_branch() only for serial routing.
-+				</para>
-+				</listitem>
-+				<listitem>
-+				<para>
-+					<emphasis>fr_inv_timer</emphasis> - value for fr_inv_timer parameter
-+					of tm module.
-+					Set by rtjson_update_branch() only for serial routing.
-+				</para>
-+				</listitem>
-+				</itemizedlist>
-+			</para>
-+			</listitem>
-+			</itemizedlist>
-+	</para>
-+	<para>
-+		Other fields can appear in the JSON routing document, being ignored
-+		by rtjson functions. They can be processed directly in the configuration
-+		files using json or jansson modules. For example, the document can include
-+		the transaction identification tuple (index,label) that can be used
-+		to resume the execution of a suspended transaction.
- 	</para>
- 	<example>
- 		<title>JSON Routing Structure</title>
-@@ -199,7 +281,7 @@ branch_route[OUTGOING] {
- ...
- {
- 	"version": "1.0",
--	"routing": "parallel",
-+	"routing": "serial",
- 	"routes": [
- 		{
- 			"uri": "sip:127.0.0.1:5080",
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0023-rtjson-updated-the-readme-content.patch b/debian/patches/upstream/0023-rtjson-updated-the-readme-content.patch
deleted file mode 100644
index 670a968..0000000
--- a/debian/patches/upstream/0023-rtjson-updated-the-readme-content.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 119a878abf15ae2af524174a5948f9b8b4d87599 Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Wed, 24 Jun 2015 13:31:56 +0200
-Subject: [PATCH] rtjson: updated the readme content
-
----
- modules/rtjson/README | 35 +++++++++++++++++++++++++++++++++--
- 1 file changed, 33 insertions(+), 2 deletions(-)
-
-diff --git a/modules/rtjson/README b/modules/rtjson/README
-index b1cc61d..b1c94e0 100644
---- a/modules/rtjson/README
-+++ b/modules/rtjson/README
-@@ -155,6 +155,8 @@ rtjson_push_routes();
- ...
- rtjson_init_routes("$var(json)");
- rtjson_push_routes();
-+t_on_failure("REROUTE");
-+t_relay();
- ...
- failure_route[REROUTE] {
-         rtjson_next_route();
-@@ -172,6 +174,8 @@ failure_route[REROUTE] {
- ...
- rtjson_init_routes("$var(json)");
- rtjson_push_routes();
-+t_on_branch("OUTGOING");
-+t_relay();
- ...
- branch_route[OUTGOING] {
-         rtjson_update_branch();
-@@ -182,13 +186,40 @@ branch_route[OUTGOING] {
- 
-    The format of the JSON document containing routing information.
- 
--   Description of the fields: TBA.
-+   Description of the fields in the JSON routing document:
-+     * version - intended to enforce versioning checks (not enforced yet),
-+       recommended to be set to "1.0".
-+     * routing - can be "serial" or "parallel", corresponding to desired
-+       routing type: serial or parallel forking.
-+     * routes - an array with structures holding the attributes for
-+       destinations. The attributes can be:
-+          + uri - request URI
-+          + dst_uri - outbound proxy URI
-+          + path - Path URI vector
-+          + socket - local socket
-+          + headers - a structure with values for headers From and To
-+            specified as display name and URI, plus extra headers to be
-+            appended to SIP request. It requires uac module in order to
-+            update From and To headers. Set by rtjson_update_branch() only
-+            for serial routing.
-+          + branch_flags - branch flags. Set by rtjson_update_branch()
-+            only for serial routing.
-+          + fr_timer - value for fr_timer parameter of tm module. Set by
-+            rtjson_update_branch() only for serial routing.
-+          + fr_inv_timer - value for fr_inv_timer parameter of tm module.
-+            Set by rtjson_update_branch() only for serial routing.
-+
-+   Other fields can appear in the JSON routing document, being ignored by
-+   rtjson functions. They can be processed directly in the configuration
-+   files using json or jansson modules. For example, the document can
-+   include the transaction identification tuple (index,label) that can be
-+   used to resume the execution of a suspended transaction.
- 
-    Example 1.6. JSON Routing Structure
- ...
- {
-         "version": "1.0",
--        "routing": "parallel",
-+        "routing": "serial",
-         "routes": [
-                 {
-                         "uri": "sip:127.0.0.1:5080",
--- 
-2.1.4
-
diff --git a/debian/patches/upstream/0024-uac-refreshed-the-readme.patch b/debian/patches/upstream/0024-uac-refreshed-the-readme.patch
deleted file mode 100644
index 9b68f24..0000000
--- a/debian/patches/upstream/0024-uac-refreshed-the-readme.patch
+++ /dev/null
@@ -1,325 +0,0 @@
-From 66cbab29ef285ea71116f814108106412f41eae5 Mon Sep 17 00:00:00 2001
-From: Daniel-Constantin Mierla <miconda at gmail.com>
-Date: Wed, 24 Jun 2015 13:32:12 +0200
-Subject: [PATCH] uac: refreshed the readme
-
----
- modules/uac/README | 111 +++++++++++++++++++++++++++++++++--------------------
- 1 file changed, 69 insertions(+), 42 deletions(-)
-
-diff --git a/modules/uac/README b/modules/uac/README
-index ef1a218..4e8b324 100644
---- a/modules/uac/README
-+++ b/modules/uac/README
-@@ -14,9 +14,9 @@ Ramona-Elena Modroiu
- 
-    <ramona at rosdev.ro>
- 
--   Copyright © 2009-2010 asipto.com
-+   Copyright � 2009-2010 asipto.com
- 
--   Copyright © 2005 Voice Sistem
-+   Copyright � 2005 Voice Sistem
-      __________________________________________________________________
- 
-    Table of Contents
-@@ -191,9 +191,12 @@ Chapter 1. Admin Guide
- 
-    Known limitations in this version:
-      * Authentication does not support qop auth-int, just qop auth;
--     * CSeq is not increased during authentication - the response may be
--       rejected.
--     * The “uac_replace_*” functions can only be run once on the same SIP
-+     * CSeq is not increased automatically by uac_auth() during
-+       authentication - the follow up request may be rejected. CSeq can be
-+       increased when authenticating INVITE requests - dialog module has
-+       to be used, with CSeq tracking feature enabled (see the readme of
-+       dialog module).
-+     * The "uac_replace_*" functions can only be run once on the same SIP
-        request. Try to save needed changes in a pseudovariable and apply
-        them once.
- 
-@@ -207,9 +210,9 @@ Chapter 1. Admin Guide
-    The following modules must be loaded before this module:
-      * TM - Transaction Module
-      * RR - Record-Route Module, but only if restore mode for From: URI is
--       set to “auto”.
-+       set to "auto".
-      * Dialog Module, but only if restore mode for From: URI is set to
--       “auto” and you want uac_replace_from or uac_replace_to to store the
-+       "auto" and you want uac_replace_from or uac_replace_to to store the
-        values of the URIs as dialog variables.
- 
- 2.2. External Libraries or Applications
-@@ -242,7 +245,7 @@ Chapter 1. Admin Guide
-    Name of Record-Route header parameter that will be used to store an
-    encoded version of the original FROM URI.
- 
--   This parameter is optional, it's default value being “vsf”.
-+   This parameter is optional, it's default value being "vsf".
- 
-    Example 1.1. Set rr_from_store_param parameter
- ...
-@@ -254,7 +257,7 @@ modparam("uac","rr_from_store_param","my_param")
-    Name of Record-Route header parameter that will be used to store
-    (encoded) the original TO URI.
- 
--   This parameter is optional, it's default value being “vst”.
-+   This parameter is optional, it's default value being "vst".
- 
-    Example 1.2. Set rr_to_store_param parameter
- ...
-@@ -265,16 +268,16 @@ modparam("uac","rr_to_store_param","my_param")
- 
-    There are 3 modes of restoring the original FROM URI and the original
-    TO URI:
--     * “none” - no information about original URI is stored; restoration
-+     * "none" - no information about original URI is stored; restoration
-        is not possible.
--     * “manual” - all following replies will be restored, but not also the
-+     * "manual" - all following replies will be restored, but not also the
-        sequential requests - this must be manually updated based on
-        original URI.
--     * “auto” - all sequential requests and replies will be automatically
-+     * "auto" - all sequential requests and replies will be automatically
-        updated based on stored original URI. For this option you have to
--       set “modparam("rr", "append_fromtag", 1)”.
-+       set "modparam("rr", "append_fromtag", 1)".
- 
--   This parameter is optional, it's default value being “auto”.
-+   This parameter is optional, it's default value being "auto".
- 
-    Example 1.3. Set restore_mode parameter
- ...
-@@ -366,9 +369,9 @@ modparam("uac","credential","username:domain:password")
-    This can be used if the realm upstream will be using is not known in
-    advance.
- 
--   If you define it, you also need to define “auth_username_avp”
--   (Section 3.10, “auth_username_avp (string)”) and “auth_username_avp”
--   (Section 3.11, “auth_password_avp (string)”).
-+   If you define it, you also need to define "auth_username_avp"
-+   (Section 3.10, "auth_username_avp (string)") and "auth_username_avp"
-+   (Section 3.11, "auth_password_avp (string)").
- 
-    Example 1.9. Set auth_realm_avp parameter
- ...
-@@ -380,9 +383,9 @@ modparam("uac","auth_realm_avp","$avp(i:10)")
-    The definition of an AVP that might contain the username to be used to
-    perform authentication.
- 
--   If you define it, you also need to define “auth_realm_avp”
--   (Section 3.9, “auth_realm_avp (string)”) and “auth_username_avp”
--   (Section 3.11, “auth_password_avp (string)”).
-+   If you define it, you also need to define "auth_realm_avp"
-+   (Section 3.9, "auth_realm_avp (string)") and "auth_username_avp"
-+   (Section 3.11, "auth_password_avp (string)").
- 
-    Example 1.10. Set auth_username_avp parameter
- ...
-@@ -394,9 +397,9 @@ modparam("uac","auth_username_avp","$avp(i:11)")
-    The definition of an AVP that might contain the password to be used to
-    perform authentication.
- 
--   If you define it, you also need to define “auth_password_avp”
--   (Section 3.11, “auth_password_avp (string)”) and “auth_username_avp”
--   (Section 3.11, “auth_password_avp (string)”).
-+   If you define it, you also need to define "auth_password_avp"
-+   (Section 3.11, "auth_password_avp (string)") and "auth_username_avp"
-+   (Section 3.11, "auth_password_avp (string)").
- 
-    Example 1.11. Set auth_password_avp parameter
- ...
-@@ -443,7 +446,7 @@ modparam("uac", "reg_retry_interval", 300)
- 
-    DB table name to fetch user profiles for registration.
- 
--   This parameter is optional, it's default value being “uacreg”.
-+   This parameter is optional, it's default value being "uacreg".
- 
-    Example 1.15. Set reg_db_table parameter
- ...
-@@ -475,7 +478,7 @@ modparam("uac", "reg_contact_addr", "192.168.1.2:5080")
-    4.9. uac_reg_lookup(uuid, dst)
-    4.10. uac_reg_request_to(user, mode)
- 
--4.1.  uac_replace_from(display,uri)
-+4.1. uac_replace_from(display,uri)
- 
-    Replace in FROM header the display name and the URI part.
- 
-@@ -518,7 +521,7 @@ uac_replace_from("","sip:robin at gotham.org");
- uac_replace_from("","");
- ...
- 
--4.2.  uac_replace_from(uri)
-+4.2. uac_replace_from(uri)
- 
-    Replace in FROM header the URI part without altering the display name.
- 
-@@ -531,7 +534,7 @@ uac_replace_from("","");
- uac_replace_from("sip:batman at gotham.org");
- ...
- 
--4.3.  uac_restore_from()
-+4.3. uac_restore_from()
- 
-    This function will check if the FROM URI was modified and will use the
-    information stored in header parameter to restore the original FROM URI
-@@ -544,7 +547,7 @@ uac_replace_from("sip:batman at gotham.org");
- uac_restore_from();
- ...
- 
--4.4.  uac_replace_to(display,uri)
-+4.4. uac_replace_to(display,uri)
- 
-    Replace in TO header the display name and the URI part.
- 
-@@ -569,7 +572,7 @@ uac_replace_to("","sip:robin at gotham.org");
- uac_replace_to("","");
- ...
- 
--4.5.  uac_replace_to(uri)
-+4.5. uac_replace_to(uri)
- 
-    Replace in TO header the URI part without altering the display name.
- 
-@@ -600,7 +603,7 @@ uac_replace_to("","");
- uac_replace_to("sip:batman at gotham.org");
- ...
- 
--4.6.  uac_restore_to()
-+4.6. uac_restore_to()
- 
-    This function will check if the TO URI was modified and will use the
-    information stored in header parameter to restore the original TO URI
-@@ -613,7 +616,7 @@ uac_replace_to("sip:batman at gotham.org");
- uac_restore_to();
- ...
- 
--4.7.  uac_auth()
-+4.7. uac_auth()
- 
-    This function can be called only from failure route and will build the
-    authentication response header and insert it into the request without
-@@ -623,10 +626,34 @@ uac_restore_to();
- 
-    Example 1.23. uac_auth usage
- ...
--uac_auth();
-+modparam("uac","auth_username_avp","$avp(auser)")
-+modparam("uac","auth_password_avp","$avp(apass)")
-+modparam("uac","auth_realm_avp","$avp(arealm)")
-+
-+request_route {
-+   ...
-+   if(is_method("INVITE")) {
-+      t_on_failure("TRUNKAUTH");
-+   }
-+   ...
-+}
-+
-+failure_route[TRUNKAUTH] {
-+
-+    if (t_is_canceled()) {
-+        exit;
-+    }
-+    if(t_check_status("401|407")) {
-+        $avp(auser) = "test";
-+        $avp(apass) = "test";
-+        uac_auth();
-+        t_relay();
-+        exit;
-+    }
-+}
- ...
- 
--4.8.  uac_req_send()
-+4.8. uac_req_send()
- 
-    This function sends a SIP message from the configuration file. The
-    message is built out of $uac_req(...) pseudo-variable.
-@@ -644,7 +671,7 @@ $uac_req(callid)=$(mb{s.md5});
- uac_req_send();
- ...
- 
--4.9.  uac_reg_lookup(uuid, dst)
-+4.9. uac_reg_lookup(uuid, dst)
- 
-    This function sets the PV dst to SIP URI that correspond to uuid in uac
-    registations table. uuid and dst must be pseudo-variables.
-@@ -660,7 +687,7 @@ if(uac_reg_lookup("$rU", "$ru"))
- }
- ...
- 
--4.10.  uac_reg_request_to(user, mode)
-+4.10. uac_reg_request_to(user, mode)
- 
-    This function can be used to send an authenticated request to a remote
-    user in the uac registrations table. It sets the request-uri, dst-uri
-@@ -704,7 +731,7 @@ failure_route[REMOTE_AUTH] {
- 
-    6.1. event_route[uac:reply]
- 
--6.1.  event_route[uac:reply]
-+6.1. event_route[uac:reply]
- 
-    Event route executed for the final reply to the request set with
-    uac_req_send(). The associated $uac_req(evroute) has to be set to 1.
-@@ -741,7 +768,7 @@ event_route[uac:reply] {
-    8.5. uac.reg_reload
-    8.6. uac.reg_refresh
- 
--8.1.  uac.reg_dump
-+8.1. uac.reg_dump
- 
-    Dump the content of remote registration table from memory.
- 
-@@ -750,7 +777,7 @@ event_route[uac:reply] {
-    kamcmd uac.reg_dump
- ...
- 
--8.2.  uac.reg_info
-+8.2. uac.reg_info
- 
-    Return the details of a remote registration record based on a filter.
-    The command has two parameter: attribute and value. The attribute can
-@@ -763,7 +790,7 @@ event_route[uac:reply] {
-    kamcmd uac.reg_info l_uuid account123
- ...
- 
--8.3.  uac.reg_enable
-+8.3. uac.reg_enable
- 
-    Enable a remote registration record based on a filter. The command has
-    two parameter: attribute and value. The attribute can be: l_uuid,
-@@ -776,7 +803,7 @@ event_route[uac:reply] {
-    kamcmd uac.reg_enable l_uuid account123
- ...
- 
--8.4.  uac.reg_disable
-+8.4. uac.reg_disable
- 
-    Disable a remote registration record based on a filter. The command has
-    two parameter: attribute and value. The attribute can be: l_uuid,
-@@ -789,7 +816,7 @@ event_route[uac:reply] {
-    kamcmd uac.reg_disable l_uuid account123
- ...
- 
--8.5.  uac.reg_reload
-+8.5. uac.reg_reload
- 
-    Reload the records from database for remote registrations.
- 
-@@ -798,7 +825,7 @@ event_route[uac:reply] {
-    kamcmd uac.reg_reload
- ...
- 
--8.6.  uac.reg_refresh
-+8.6. uac.reg_refresh
- 
-    Load one record by l_uuid from database for remote registrations. If
-    the record exists in memory, its authentication password is updated,
--- 
-2.1.4
-

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-voip/kamailio.git



More information about the Pkg-voip-commits mailing list