documentation: Fix Content-Length typos
authorHugh Waite <hugh.waite@crocodile-rcs.com>
Thu, 14 Mar 2013 11:57:55 +0000 (11:57 +0000)
committerHugh Waite <hugh.waite@crocodile-rcs.com>
Thu, 14 Mar 2013 11:57:55 +0000 (11:57 +0000)
- Fix typos in textops/textopsx documenation
- Regenerate cfg list documentation

doc/cfg_list/Makefile
doc/cfg_list/cfg_core.txt
doc/cfg_list/cfg_registrar.txt
doc/cfg_list/cfg_tcp.txt
doc/cfg_list/cfg_tm.txt
modules/textops/README
modules/textops/doc/textops_admin.xml
modules/textopsx/README
modules/textopsx/doc/functions.xml

index ca86a8a..10bcadc 100644 (file)
@@ -22,20 +22,20 @@ files_list= \
        $(COREPATH)/sctp_options.c:sctp \
        $(COREPATH)/tcp_options.c:tcp \
        $(COREPATH)/modules/tm/config.c:tm \
-       $(COREPATH)/modules_k/registrar/config.c:registrar \
-       $(COREPATH)/modules_k/siputils/config.c:siputils \
-       $(COREPATH)/modules_s/maxfwd/maxfwd.c:maxfwd \
+       $(COREPATH)/modules/registrar/config.c:registrar \
+       $(COREPATH)/modules/siputils/config.c:siputils \
+       $(COREPATH)/modules/maxfwd/maxfwd.c:maxfwd \
        $(COREPATH)/modules/carrierroute/config.c:carrierroute \
        $(COREPATH)/modules/malloc_test/malloc_test.c:malloc_test \
        $(COREPATH)/modules/tls/tls_cfg.c:tls \
-       $(COREPATH)/modules_k/dispatcher/config.c:dispatcher
+       $(COREPATH)/modules/dispatcher/config.c:dispatcher
 
 
 
 # list of excluded groups
 grp_exclude=pa
 # list of file prefixes to exclude (full path needed)
-file_exclude= $(COREPATH)/modules_s/tls/
+file_exclude= $(COREPATH)/modules/tls/
 
 # special per file group overrides
 # format= grp_filename=... ,where filename does not contain the extension
index be6a565..15a731f 100644 (file)
@@ -254,8 +254,39 @@ Configuration Variables for core
         memory debugging information displayed on exit (flags):  0 -
         off, 1 - dump all the pkg used blocks (status), 2 - dump all
         the shm used blocks (status), 4 - summary of pkg used blocks, 8
-        - summary of shm used blocks.
+        - summary of shm used blocks, 16 - short status instead of
+        dump.
         Default: 3.
-        Range: 0 - 15.
+        Range: 0 - 31.
+        Type: integer.
+
+44. core.mem_safety
+        safety level for memory operations.
+        Default: 0.
+        Type: integer.
+
+45. core.mem_join
+        join free memory fragments.
+        Default: 0.
+        Type: integer.
+
+46. core.corelog
+        log level for non-critical core error messages.
+        Default: -1.
+        Type: integer.
+
+47. core.latency_log
+        log level for latency limits alert messages.
+        Default: -1.
+        Type: integer.
+
+48. core.latency_limit_db
+        limit is ms for alerting on time consuming db commands.
+        Default: 0.
+        Type: integer.
+
+49. core.latency_limit_action
+        limit is ms for alerting on time consuming config actions.
+        Default: 0.
         Type: integer.
 
index b959ea1..231238b 100644 (file)
@@ -4,62 +4,63 @@ Configuration Variables for registrar
                   [ this file is autogenerated, do not edit ]
 
 
- 1. registrar.default_expires
+ 1. registrar.realm_pref
+        Realm prefix to be removed. Default is "".
+        Default: <unknown:str>.
+        Type: string.
+
+ 2. registrar.default_expires
         Contains number of second to expire if no expire hf or contact
         expire present.
         Default: 3600.
         Type: integer.
 
2. registrar.default_expires_range
3. registrar.default_expires_range
         Percent from default_expires that will be used in generating
         the range for the expire interval.
         Default: 0.
         Range: 0 - 100.
         Type: integer.
 
3. registrar.min_expires
4. registrar.min_expires
         The minimum expires value of a Contact. Value 0 disables the
         checking. .
         Default: 60.
         Type: integer.
 
4. registrar.max_expires
5. registrar.max_expires
         The maximum expires value of a Contact. Value 0 disables the
         checking. .
         Default: 0.
         Type: integer.
 
5. registrar.max_contacts
6. registrar.max_contacts
         The maximum number of Contacts for an AOR. Value 0 disables the
         checking. .
         Default: 0.
         Type: integer.
 
6. registrar.retry_after
7. registrar.retry_after
         If you want to add the Retry-After header field in 5xx replies,
         set this parameter to a value grater than zero.
         Default: 0.
         Type: integer.
 
7. registrar.case_sensitive
8. registrar.case_sensitive
         If set to 1 then AOR comparison will be case sensitive.
         Recommended and default is 0, case insensitive.
         Default: 0.
         Type: integer.
 
8. registrar.default_q
9. registrar.default_q
         The parameter represents default q value for new contacts..
         Default: -1.
         Range: -1 - 1000.
         Type: integer.
 
- 9. registrar.append_branches
+10. registrar.append_branches
         If set to 1(default), lookup will put all contacts found in msg
         structure.
         Default: 1.
         Type: integer.
 
-10. registrar.realm_pref
-        Realm prefix to be removed. Default is "".
-        Type: string.
-
index a71fe53..e7f2872 100644 (file)
@@ -20,121 +20,126 @@ Configuration Variables for tcp
         Type: integer.
 
  4. tcp.max_connections
-        maximum connection number, soft limit.
+        maximum tcp connections number, soft limit.
         Range: 0 - 2147483647.
         Type: integer.
 
- 5. tcp.no_connect
+ 5. tcp.max_tls_connections
+        maximum tls connections number, soft limit.
+        Range: 0 - 2147483647.
+        Type: integer.
+
+ 6. tcp.no_connect
         if set only accept new connections, never actively open new
         ones.
         Range: 0 - 1.
         Type: integer.
 
6. tcp.fd_cache
7. tcp.fd_cache
         file descriptor cache for tcp_send.
         Range: 0 - 1.
         Type: integer. Read-only.
 
7. tcp.async
8. tcp.async
         async mode for writes and connects.
         Range: 0 - 1.
         Type: integer. Read-only.
 
8. tcp.connect_wait
9. tcp.connect_wait
         parallel simultaneous connects to the same dst. (0) or one
         connect.
         Range: 0 - 1.
         Type: integer. Read-only.
 
- 9. tcp.conn_wq_max
+10. tcp.conn_wq_max
         maximum bytes queued for write per connection (depends on
         async).
         Range: 0 - 1048576.
         Type: integer.
 
-10. tcp.wq_max
+11. tcp.wq_max
         maximum bytes queued for write allowed globally (depends on
         async).
         Range: 0 - 1073741824.
         Type: integer.
 
-11. tcp.defer_accept
+12. tcp.defer_accept
         0/1 on linux, seconds on freebsd (see docs).
         Range: 0 - 3600.
         Type: integer. Read-only.
 
-12. tcp.delayed_ack
+13. tcp.delayed_ack
         initial ack will be delayed and sent with the first data
         segment.
         Range: 0 - 1.
         Type: integer.
 
-13. tcp.syncnt
+14. tcp.syncnt
         number of syn retransmissions before aborting a connect (0=not
         set).
         Range: 0 - 1024.
         Type: integer.
 
-14. tcp.linger2
+15. tcp.linger2
         lifetime of orphaned sockets in FIN_WAIT2 state in s (0=not
         set).
         Range: 0 - 3600.
         Type: integer.
 
-15. tcp.keepalive
+16. tcp.keepalive
         enables/disables keepalives for tcp.
         Range: 0 - 1.
         Type: integer.
 
-16. tcp.keepidle
+17. tcp.keepidle
         time before sending a keepalive if the connection is idle
         (linux).
         Range: 0 - 86400.
         Type: integer.
 
-17. tcp.keepintvl
+18. tcp.keepintvl
         time interval between keepalive probes on failure (linux).
         Range: 0 - 86400.
         Type: integer.
 
-18. tcp.keepcnt
+19. tcp.keepcnt
         number of failed keepalives before dropping the connection
         (linux).
         Range: 0 - 1024.
         Type: integer.
 
-19. tcp.crlf_ping
+20. tcp.crlf_ping
         enable responding to CRLF SIP-level keepalives .
         Range: 0 - 1.
         Type: integer.
 
-20. tcp.accept_aliases
+21. tcp.accept_aliases
         turn on/off tcp aliases (see tcp_accept_aliases) .
         Range: 0 - 1.
         Type: integer.
 
-21. tcp.alias_flags
+22. tcp.alias_flags
         flags used for adding new aliases (FORCE_ADD:1 , REPLACE:2) .
         Range: 0 - 2.
         Type: integer.
 
-22. tcp.new_conn_alias_flags
+23. tcp.new_conn_alias_flags
         flags for the def. aliases for a new conn. (FORCE_ADD:1,
         REPLACE:2 .
         Range: 0 - 2.
         Type: integer.
 
-23. tcp.accept_no_cl
-        accept TCP messges without Content-Lenght .
+24. tcp.accept_no_cl
+        accept TCP messges without Content-Length .
         Range: 0 - 1.
         Type: integer.
 
-24. tcp.rd_buf_size
+25. tcp.rd_buf_size
         internal read buffer size (should be > max. expected datagram).
-        Range: 512 - 65536.
+        Range: 512 - 16777216.
         Type: integer.
 
-25. tcp.wq_blk_size
+26. tcp.wq_blk_size
         internal async write block size (debugging use only for now).
         Range: 1 - 65535.
         Type: integer.
index 7478214..5600165 100644 (file)
@@ -16,95 +16,100 @@ Configuration Variables for tm
         Range: 0 - 1.
         Type: integer.
 
- 3. tm.fr_timer
+ 3. tm.callid_matching
+        perform callid check in transaction matching.
+        Default: 0.
+        Type: integer.
+
+ 4. tm.fr_timer
         timer which hits if no final reply for a request or ACK for a
         negative INVITE reply arrives (in milliseconds).
         Default: 30000.
         Type: integer.
 
4. tm.fr_inv_timer
5. tm.fr_inv_timer
         timer which hits if no final reply for an INVITE arrives after
         a provisional message was received (in milliseconds).
         Default: 120000.
         Type: integer.
 
5. tm.fr_inv_timer_next
6. tm.fr_inv_timer_next
         The value [ms] of fr_inv_timer for subsequent branches during
         serial forking..
         Default: 30000.
         Type: integer.
 
6. tm.wt_timer
7. tm.wt_timer
         time for which a transaction stays in memory to absorb delayed
         messages after it completed.
         Default: 5000.
         Type: integer.
 
7. tm.delete_timer
8. tm.delete_timer
         time after which a to-be-deleted transaction currently ref-ed
         by a process will be tried to be deleted again..
         Default: 200.
         Type: integer.
 
8. tm.retr_timer1
9. tm.retr_timer1
         initial retransmission period (in milliseconds).
         Default: 500.
         Type: integer.
 
- 9. tm.retr_timer2
+10. tm.retr_timer2
         maximum retransmission period (in milliseconds).
         Default: 4000.
         Type: integer.
 
-10. tm.max_inv_lifetime
+11. tm.max_inv_lifetime
         maximum time an invite transaction can live from the moment of
         creation.
         Default: 180000.
         Type: integer.
 
-11. tm.max_noninv_lifetime
+12. tm.max_noninv_lifetime
         maximum time a non-invite transaction can live from the moment
         of creation.
         Default: 32000.
         Type: integer.
 
-12. tm.noisy_ctimer
+13. tm.noisy_ctimer
         if set, INVITE transactions that time-out (FR INV timer) will
         be always replied.
         Default: 1.
         Range: 0 - 1.
         Type: integer.
 
-13. tm.auto_inv_100
+14. tm.auto_inv_100
         automatically send 100 to an INVITE.
         Default: 1.
         Range: 0 - 1.
         Type: integer.
 
-14. tm.auto_inv_100_reason
+15. tm.auto_inv_100_reason
         reason text of the automatically send 100 to an INVITE.
         Default: trying -- your call is important to us.
         Type: string.
 
-15. tm.unix_tx_timeout
+16. tm.unix_tx_timeout
         Unix socket transmission timeout, in milliseconds.
         Default: 500.
         Type: integer.
 
-16. tm.restart_fr_on_each_reply
+17. tm.restart_fr_on_each_reply
         restart final response timer on each provisional reply.
         Default: 1.
         Range: 0 - 1.
         Type: integer.
 
-17. tm.pass_provisional_replies
+18. tm.pass_provisional_replies
         enable/disable passing of provisional replies to
         TMCB_LOCAL_RESPONSE_OUT callbacks.
         Default: 0.
         Range: 0 - 1.
         Type: integer.
 
-18. tm.aggregate_challenges
+19. tm.aggregate_challenges
         if the final response is a 401 or a 407, aggregate all the
         authorization headers (challenges) (rfc3261 requires this to be
         on).
@@ -112,27 +117,27 @@ Configuration Variables for tm
         Range: 0 - 1.
         Type: integer.
 
-19. tm.unmatched_cancel
+20. tm.unmatched_cancel
         determines how CANCELs with no matching transaction are handled
         (0: statefull forwarding, 1: stateless forwarding, 2: drop).
         Default: 0.
         Range: 0 - 2.
         Type: integer.
 
-20. tm.default_code
+21. tm.default_code
         default SIP response code sent by t_reply(), if the function
         cannot retrieve its parameters.
         Default: 500.
         Range: 400 - 699.
         Type: integer.
 
-21. tm.default_reason
+22. tm.default_reason
         default SIP reason phrase sent by t_reply(), if the function
         cannot retrieve its parameters.
         Default: Server Internal Error.
         Type: string.
 
-22. tm.reparse_invite
+23. tm.reparse_invite
         if set to 1, the CANCEL and negative ACK requests are
         constructed from the INVITE message which was sent out instead
         of building them from the received request.
@@ -140,55 +145,55 @@ Configuration Variables for tm
         Range: 0 - 1.
         Type: integer.
 
-23. tm.ac_extra_hdrs
+24. tm.ac_extra_hdrs
         header fields prefixed by this parameter value are included in
         the CANCEL and negative ACK messages if they were present in
         the outgoing INVITE (depends on reparse_invite).
         Default: <unknown:str>.
         Type: string.
 
-24. tm.blst_503
+25. tm.blst_503
         if set to 1, blacklist 503 SIP response sources.
         Default: 0.
         Range: 0 - 1.
         Type: integer.
 
-25. tm.blst_503_def_timeout
+26. tm.blst_503_def_timeout
         default 503 blacklist time (in s), when no Retry-After header
         is present.
         Default: 0.
         Type: integer.
 
-26. tm.blst_503_min_timeout
+27. tm.blst_503_min_timeout
         minimum 503 blacklist time (in s).
         Default: 0.
         Type: integer.
 
-27. tm.blst_503_max_timeout
+28. tm.blst_503_max_timeout
         maximum 503 blacklist time (in s).
         Default: 3600.
         Type: integer.
 
-28. tm.blst_methods_add
+29. tm.blst_methods_add
         bitmap of method types that trigger blacklisting on transaction
         timeouts.
         Default: 1.
         Type: integer.
 
-29. tm.blst_methods_lookup
+30. tm.blst_methods_lookup
         Bitmap of method types that are looked-up in the blacklist
         before statefull forwarding.
         Default: -9.
         Type: integer.
 
-30. tm.cancel_b_method
+31. tm.cancel_b_method
         How to cancel branches on which no replies were received: 0 -
         fake reply, 1 - retransmitting the request, 2 - send cancel.
         Default: 1.
         Range: 0 - 2.
         Type: integer.
 
-31. tm.reparse_on_dns_failover
+32. tm.reparse_on_dns_failover
         if set to 1, the SIP message after a DNS failover is
         constructed from the outgoing message buffer of the failed
         branch instead of from the received request.
@@ -196,13 +201,13 @@ Configuration Variables for tm
         Range: 0 - 1.
         Type: integer.
 
-32. tm.disable_6xx_block
+33. tm.disable_6xx_block
         if set to 1, 6xx is treated like a normal reply (breaks rfc).
         Default: 0.
         Range: 0 - 1.
         Type: integer.
 
-33. tm.local_ack_mode
+34. tm.local_ack_mode
         if set to 1 or 2, local 200 ACKs are sent to the same address
         as the corresponding INVITE (1) or the source of the 200 reply
         (2) instead of using the contact and the route set (it breaks
@@ -212,14 +217,14 @@ Configuration Variables for tm
         Range: 0 - 2.
         Type: integer.
 
-34. tm.local_cancel_reason
+35. tm.local_cancel_reason
         if set to 1, a Reason header is added to locally generated
         CANCELs (see RFC3326).
         Default: 1.
         Range: 0 - 1.
         Type: integer.
 
-35. tm.e2e_cancel_reason
+36. tm.e2e_cancel_reason
         if set to 1, Reason headers from received CANCELs are copied
         into the corresponding generated hop-by-hop CANCELs.
         Default: 1.
index 06c28b5..03bb9fc 100644 (file)
@@ -1,3 +1,4 @@
+
 textops Module
 
 Andrei Pelinescu-Onciul
@@ -24,7 +25,7 @@ Juha Heinanen
    <jh@tutpro.com>
 
    Copyright © 2003 FhG FOKUS
-     __________________________________________________________________
+     _________________________________________________________________
 
    Table of Contents
 
@@ -41,44 +42,44 @@ Juha Heinanen
 
         3. Functions
 
-              3.1. search(re)
-              3.2. search_body(re)
-              3.3. search_hf(hf, re, flags)
-              3.4. search_append(re, txt)
-              3.5. search_append_body(re, txt)
-              3.6. replace(re, txt)
-              3.7. replace_body(re, txt)
-              3.8. replace_all(re, txt)
-              3.9. replace_body_all(re, txt)
-              3.10. replace_body_atonce(re, txt)
-              3.11. subst('/re/repl/flags')
-              3.12. subst_uri('/re/repl/flags')
-              3.13. subst_user('/re/repl/flags')
-              3.14. subst_body('/re/repl/flags')
-              3.15. subst_hf(hf, subexp, flags)
-              3.16. set_body(txt,content_type)
-              3.17. set_reply_body(txt,content_type)
-              3.18. filter_body(content_type)
-              3.19. append_to_reply(txt)
-              3.20. append_hf(txt)
-              3.21. append_hf(txt, hdr)
-              3.22. insert_hf(txt)
-              3.23. insert_hf(txt, hdr)
-              3.24. append_urihf(prefix, suffix)
-              3.25. is_present_hf(hf_name)
-              3.26. is_present_hf_re(hf_name_re)
-              3.27. append_time()
-              3.28. append_time_to_request()
-              3.29. is_method(name)
-              3.30. remove_hf(hname)
-              3.31. remove_hf_re(re)
-              3.32. has_body(), has_body(mime)
-              3.33. is_audio_on_hold()
-              3.34. is_privacy(privacy_type)
-              3.35. in_list(subject, list, separator)
-              3.36. cmp_str(str1, str2)
-              3.37. cmp_istr(str1, str2)
-              3.38. starts_with(str1, str2)
+              3.1. search(re) 
+              3.2. search_body(re) 
+              3.3. search_hf(hf, re, flags) 
+              3.4. search_append(re, txt) 
+              3.5. search_append_body(re, txt) 
+              3.6. replace(re, txt) 
+              3.7. replace_body(re, txt) 
+              3.8. replace_all(re, txt) 
+              3.9. replace_body_all(re, txt) 
+              3.10. replace_body_atonce(re, txt) 
+              3.11. subst('/re/repl/flags') 
+              3.12. subst_uri('/re/repl/flags') 
+              3.13. subst_user('/re/repl/flags') 
+              3.14. subst_body('/re/repl/flags') 
+              3.15. subst_hf(hf, subexp, flags) 
+              3.16. set_body(txt,content_type) 
+              3.17. set_reply_body(txt,content_type) 
+              3.18. filter_body(content_type) 
+              3.19. append_to_reply(txt) 
+              3.20. append_hf(txt) 
+              3.21. append_hf(txt, hdr) 
+              3.22. insert_hf(txt) 
+              3.23. insert_hf(txt, hdr) 
+              3.24. append_urihf(prefix, suffix) 
+              3.25. is_present_hf(hf_name) 
+              3.26. is_present_hf_re(hf_name_re) 
+              3.27. append_time() 
+              3.28. append_time_to_request() 
+              3.29. is_method(name) 
+              3.30. remove_hf(hname) 
+              3.31. remove_hf_re(re) 
+              3.32. has_body(), has_body(mime) 
+              3.33. is_audio_on_hold() 
+              3.34. is_privacy(privacy_type) 
+              3.35. in_list(subject, list, separator) 
+              3.36. cmp_str(str1, str2) 
+              3.37. cmp_istr(str1, str2) 
+              3.38. starts_with(str1, str2) 
 
         4. Known Limitations
 
@@ -86,7 +87,7 @@ Juha Heinanen
 
         1. Functions
 
-              1.1. load_textops(*import_structure)
+              1.1. load_textops(*import_structure) 
 
    List of Examples
 
@@ -144,44 +145,44 @@ Chapter 1. Admin Guide
 
    3. Functions
 
-        3.1. search(re)
-        3.2. search_body(re)
-        3.3. search_hf(hf, re, flags)
-        3.4. search_append(re, txt)
-        3.5. search_append_body(re, txt)
-        3.6. replace(re, txt)
-        3.7. replace_body(re, txt)
-        3.8. replace_all(re, txt)
-        3.9. replace_body_all(re, txt)
-        3.10. replace_body_atonce(re, txt)
-        3.11. subst('/re/repl/flags')
-        3.12. subst_uri('/re/repl/flags')
-        3.13. subst_user('/re/repl/flags')
-        3.14. subst_body('/re/repl/flags')
-        3.15. subst_hf(hf, subexp, flags)
-        3.16. set_body(txt,content_type)
-        3.17. set_reply_body(txt,content_type)
-        3.18. filter_body(content_type)
-        3.19. append_to_reply(txt)
-        3.20. append_hf(txt)
-        3.21. append_hf(txt, hdr)
-        3.22. insert_hf(txt)
-        3.23. insert_hf(txt, hdr)
-        3.24. append_urihf(prefix, suffix)
-        3.25. is_present_hf(hf_name)
-        3.26. is_present_hf_re(hf_name_re)
-        3.27. append_time()
-        3.28. append_time_to_request()
-        3.29. is_method(name)
-        3.30. remove_hf(hname)
-        3.31. remove_hf_re(re)
-        3.32. has_body(), has_body(mime)
-        3.33. is_audio_on_hold()
-        3.34. is_privacy(privacy_type)
-        3.35. in_list(subject, list, separator)
-        3.36. cmp_str(str1, str2)
-        3.37. cmp_istr(str1, str2)
-        3.38. starts_with(str1, str2)
+        3.1. search(re) 
+        3.2. search_body(re) 
+        3.3. search_hf(hf, re, flags) 
+        3.4. search_append(re, txt) 
+        3.5. search_append_body(re, txt) 
+        3.6. replace(re, txt) 
+        3.7. replace_body(re, txt) 
+        3.8. replace_all(re, txt) 
+        3.9. replace_body_all(re, txt) 
+        3.10. replace_body_atonce(re, txt) 
+        3.11. subst('/re/repl/flags') 
+        3.12. subst_uri('/re/repl/flags') 
+        3.13. subst_user('/re/repl/flags') 
+        3.14. subst_body('/re/repl/flags') 
+        3.15. subst_hf(hf, subexp, flags) 
+        3.16. set_body(txt,content_type) 
+        3.17. set_reply_body(txt,content_type) 
+        3.18. filter_body(content_type) 
+        3.19. append_to_reply(txt) 
+        3.20. append_hf(txt) 
+        3.21. append_hf(txt, hdr) 
+        3.22. insert_hf(txt) 
+        3.23. insert_hf(txt, hdr) 
+        3.24. append_urihf(prefix, suffix) 
+        3.25. is_present_hf(hf_name) 
+        3.26. is_present_hf_re(hf_name_re) 
+        3.27. append_time() 
+        3.28. append_time_to_request() 
+        3.29. is_method(name) 
+        3.30. remove_hf(hname) 
+        3.31. remove_hf_re(re) 
+        3.32. has_body(), has_body(mime) 
+        3.33. is_audio_on_hold() 
+        3.34. is_privacy(privacy_type) 
+        3.35. in_list(subject, list, separator) 
+        3.36. cmp_str(str1, str2) 
+        3.37. cmp_istr(str1, str2) 
+        3.38. starts_with(str1, str2) 
 
    4. Known Limitations
 
@@ -189,17 +190,18 @@ Chapter 1. Admin Guide
 
    1.1. Known Limitations
 
-   The module implements text based operations over the SIP message
-   processed by Kamailio. SIP is a text based protocol and the module
-   provides a large set of very useful functions to manipulate the message
-   at text level, e.g., regular expression search and replace, Perl-like
-   substitutions, checks for method type, header presence, insert of new
-   header and date, etc.
+   The  module  implements  text  based  operations  over the SIP message
+   processed  by  Kamailio.  SIP  is a text based protocol and the module
+   provides  a  large  set  of  very  useful  functions to manipulate the
+   message  at  text  level, e.g., regular expression search and replace,
+   Perl-like  substitutions,  checks  for  method  type, header presence,
+   insert of new header and date, etc.
 
 1.1. Known Limitations
 
-   search ignores folded lines. For example, search("(From|f):.*@foo.bar")
-   doesn't match the following From header field:
+   search ignores folded lines. For example,
+   search("(From|f):.*@foo.bar")  doesn't match the following From header
+   field:
 From: medabeda
  <sip:medameda@foo.bar>;tag=1234
 
@@ -215,59 +217,59 @@ From: medabeda
 
 2.2. External Libraries or Applications
 
-   The following libraries or applications must be installed before
+   The  following  libraries  or  applications  must  be installed before
    running Kamailio with this module loaded:
      * None.
 
 3. Functions
 
-   3.1. search(re)
-   3.2. search_body(re)
-   3.3. search_hf(hf, re, flags)
-   3.4. search_append(re, txt)
-   3.5. search_append_body(re, txt)
-   3.6. replace(re, txt)
-   3.7. replace_body(re, txt)
-   3.8. replace_all(re, txt)
-   3.9. replace_body_all(re, txt)
-   3.10. replace_body_atonce(re, txt)
-   3.11. subst('/re/repl/flags')
-   3.12. subst_uri('/re/repl/flags')
-   3.13. subst_user('/re/repl/flags')
-   3.14. subst_body('/re/repl/flags')
-   3.15. subst_hf(hf, subexp, flags)
-   3.16. set_body(txt,content_type)
-   3.17. set_reply_body(txt,content_type)
-   3.18. filter_body(content_type)
-   3.19. append_to_reply(txt)
-   3.20. append_hf(txt)
-   3.21. append_hf(txt, hdr)
-   3.22. insert_hf(txt)
-   3.23. insert_hf(txt, hdr)
-   3.24. append_urihf(prefix, suffix)
-   3.25. is_present_hf(hf_name)
-   3.26. is_present_hf_re(hf_name_re)
-   3.27. append_time()
-   3.28. append_time_to_request()
-   3.29. is_method(name)
-   3.30. remove_hf(hname)
-   3.31. remove_hf_re(re)
-   3.32. has_body(), has_body(mime)
-   3.33. is_audio_on_hold()
-   3.34. is_privacy(privacy_type)
-   3.35. in_list(subject, list, separator)
-   3.36. cmp_str(str1, str2)
-   3.37. cmp_istr(str1, str2)
-   3.38. starts_with(str1, str2)
-
-3.1. search(re)
+   3.1. search(re) 
+   3.2. search_body(re) 
+   3.3. search_hf(hf, re, flags) 
+   3.4. search_append(re, txt) 
+   3.5. search_append_body(re, txt) 
+   3.6. replace(re, txt) 
+   3.7. replace_body(re, txt) 
+   3.8. replace_all(re, txt) 
+   3.9. replace_body_all(re, txt) 
+   3.10. replace_body_atonce(re, txt) 
+   3.11. subst('/re/repl/flags') 
+   3.12. subst_uri('/re/repl/flags') 
+   3.13. subst_user('/re/repl/flags') 
+   3.14. subst_body('/re/repl/flags') 
+   3.15. subst_hf(hf, subexp, flags) 
+   3.16. set_body(txt,content_type) 
+   3.17. set_reply_body(txt,content_type) 
+   3.18. filter_body(content_type) 
+   3.19. append_to_reply(txt) 
+   3.20. append_hf(txt) 
+   3.21. append_hf(txt, hdr) 
+   3.22. insert_hf(txt) 
+   3.23. insert_hf(txt, hdr) 
+   3.24. append_urihf(prefix, suffix) 
+   3.25. is_present_hf(hf_name) 
+   3.26. is_present_hf_re(hf_name_re) 
+   3.27. append_time() 
+   3.28. append_time_to_request() 
+   3.29. is_method(name) 
+   3.30. remove_hf(hname) 
+   3.31. remove_hf_re(re) 
+   3.32. has_body(), has_body(mime) 
+   3.33. is_audio_on_hold() 
+   3.34. is_privacy(privacy_type) 
+   3.35. in_list(subject, list, separator) 
+   3.36. cmp_str(str1, str2) 
+   3.37. cmp_istr(str1, str2) 
+   3.38. starts_with(str1, str2) 
+
+3.1.  search(re)
 
    Searches for the re in the message.
 
    Meaning of the parameters is as follows:
      * re - Regular expression.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.1. search usage
@@ -275,14 +277,14 @@ From: medabeda
 if ( search("[Ss][Ii][Pp]") ) { /*....*/ };
 ...
 
-3.2. search_body(re)
+3.2.  search_body(re)
 
    Searches for the re in the body of the message.
 
    Meaning of the parameters is as follows:
      * re - Regular expression.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.2. search_body usage
@@ -290,18 +292,18 @@ if ( search("[Ss][Ii][Pp]") ) { /*....*/ };
 if ( search_body("[Ss][Ii][Pp]") ) { /*....*/ };
 ...
 
-3.3. search_hf(hf, re, flags)
+3.3.  search_hf(hf, re, flags)
 
    Searches for the re in the body of a header field.
 
    Meaning of the parameters is as follows:
      * hf - header field name.
      * re - regular expression.
-     * flags - control flags - it has to be one of: a - all headers
-       matching the name; f - only first header matching the name; l -
+     * flags  -  control  flags  -  it  has to be one of: a - all headers
+       matching  the  name;  f - only first header matching the name; l -
        only the last header matching the name.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.3. search_body usage
@@ -309,7 +311,7 @@ if ( search_body("[Ss][Ii][Pp]") ) { /*....*/ };
 if ( search_hf("From", ":test@", "a") ) { /*....*/ };
 ...
 
-3.4. search_append(re, txt)
+3.4.  search_append(re, txt)
 
    Searches for the first match of re and appends txt after it.
 
@@ -317,7 +319,7 @@ if ( search_hf("From", ":test@", "a") ) { /*....*/ };
      * re - Regular expression.
      * txt - String to be appended.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.4. search_append usage
@@ -325,16 +327,16 @@ if ( search_hf("From", ":test@", "a") ) { /*....*/ };
 search_append("[Oo]pen[Ss]er", " SIP Proxy");
 ...
 
-3.5. search_append_body(re, txt)
+3.5.  search_append_body(re, txt)
 
-   Searches for the first match of re in the body of the message and
+   Searches  for  the  first  match  of re in the body of the message and
    appends txt after it.
 
    Meaning of the parameters is as follows:
      * re - Regular expression.
      * txt - String to be appended.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.5. search_append_body usage
@@ -342,7 +344,7 @@ search_append("[Oo]pen[Ss]er", " SIP Proxy");
 search_append_body("[Oo]pen[Ss]er", " SIP Proxy");
 ...
 
-3.6. replace(re, txt)
+3.6.  replace(re, txt)
 
    Replaces the first occurrence of re with txt.
 
@@ -350,7 +352,7 @@ search_append_body("[Oo]pen[Ss]er", " SIP Proxy");
      * re - Regular expression.
      * txt - String.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.6. replace usage
@@ -358,16 +360,16 @@ search_append_body("[Oo]pen[Ss]er", " SIP Proxy");
 replace("openser", "Kamailio SIP Proxy");
 ...
 
-3.7. replace_body(re, txt)
+3.7.  replace_body(re, txt)
 
-   Replaces the first occurrence of re in the body of the message with
+   Replaces  the  first  occurrence of re in the body of the message with
    txt.
 
    Meaning of the parameters is as follows:
      * re - Regular expression.
      * txt - String.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.7. replace_body usage
@@ -375,7 +377,7 @@ replace("openser", "Kamailio SIP Proxy");
 replace_body("openser", "Kamailio SIP Proxy");
 ...
 
-3.8. replace_all(re, txt)
+3.8.  replace_all(re, txt)
 
    Replaces all occurrence of re with txt.
 
@@ -383,7 +385,7 @@ replace_body("openser", "Kamailio SIP Proxy");
      * re - Regular expression.
      * txt - String.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.8. replace_all usage
@@ -391,16 +393,16 @@ replace_body("openser", "Kamailio SIP Proxy");
 replace_all("openser", "Kamailio SIP Proxy");
 ...
 
-3.9. replace_body_all(re, txt)
+3.9.  replace_body_all(re, txt)
 
-   Replaces all occurrence of re in the body of the message with txt.
+   Replaces  all  occurrence  of  re in the body of the message with txt.
    Matching is done on a per-line basis.
 
    Meaning of the parameters is as follows:
      * re - Regular expression.
      * txt - String.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.9. replace_body_all usage
@@ -408,16 +410,16 @@ replace_all("openser", "Kamailio SIP Proxy");
 replace_body_all("openser", "Kamailio SIP Proxy");
 ...
 
-3.10. replace_body_atonce(re, txt)
+3.10.  replace_body_atonce(re, txt)
 
-   Replaces all occurrence of re in the body of the message with txt.
+   Replaces  all  occurrence  of  re in the body of the message with txt.
    Matching is done over the whole body.
 
    Meaning of the parameters is as follows:
      * re - Regular expression.
      * txt - String.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.10. replace_body_atonce usage
@@ -427,19 +429,19 @@ if(has_body() && replace_body_atonce("^.+$", ""))
         remove_hf("Content-Type");
 ...
 
-3.11. subst('/re/repl/flags')
+3.11.  subst('/re/repl/flags')
 
    Replaces re with repl (sed or perl like).
 
    Meaning of the parameters is as follows:
-     * '/re/repl/flags' - sed like regular expression. flags can be a
-       combination of i (case insensitive), g (global) or s (match newline
-       don't treat it as end of line).
+     * '/re/repl/flags'  -  sed  like  regular expression. flags can be a
+       combination  of  i  (case  insensitive),  g  (global)  or s (match
+       newline don't treat it as end of line).
        're' - is regular expresion
        'repl' - is replacement string - may contain pseudo-varibales
        'flags' - substitution flags (i - ignore case, g - global)
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.11. subst usage
@@ -448,25 +450,25 @@ if(has_body() && replace_body_atonce("^.+$", ""))
 if ( subst('/^To:(.*)sip:[^@]*@[a-zA-Z0-9.]+(.*)$/t:\1\u\2/ig') ) {};
 
 # replace the uri in to: with the value of avp sip_address (just an example)
-if ( subst('/^To:(.*)sip:[^@]*@[a-zA-Z0-9.]+(.*)$/t:\1$avp(sip_address)\2/ig') )
- {};
+if ( subst('/^To:(.*)sip:[^@]*@[a-zA-Z0-9.]+(.*)$/t:\1$avp(sip_address)\2/ig')
+) {};
 
 ...
 
-3.12. subst_uri('/re/repl/flags')
+3.12.  subst_uri('/re/repl/flags')
 
    Runs the re substitution on the message uri (like subst but works only
    on the uri)
 
    Meaning of the parameters is as follows:
-     * '/re/repl/flags' - sed like regular expression. flags can be a
-       combination of i (case insensitive), g (global) or s (match newline
-       don't treat it as end of line).
+     * '/re/repl/flags'  -  sed  like  regular expression. flags can be a
+       combination  of  i  (case  insensitive),  g  (global)  or s (match
+       newline don't treat it as end of line).
        're' - is regular expresion
        'repl' - is replacement string - may contain pseudo-varibales
        'flags' - substitution flags (i - ignore case, g - global)
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.12. subst_uri usage
@@ -477,24 +479,25 @@ if (subst_uri('/^sip:([0-9]+)@(.*)$/sip:3463\1@\2;orig_uri=\0/i')){$
 
 # adds the avp 'uri_prefix' as prefix to numeric uris, and save the original
 # uri (\0 match) as a parameter: orig_uri (just an example)
-if (subst_uri('/^sip:([0-9]+)@(.*)$/sip:$avp(uri_prefix)\1@\2;orig_uri=\0/i')){$
+if (subst_uri('/^sip:([0-9]+)@(.*)$/sip:$avp(uri_prefix)\1@\2;orig_uri=\0/i')){
+$
 
 ...
 
-3.13. subst_user('/re/repl/flags')
+3.13.  subst_user('/re/repl/flags')
 
-   Runs the re substitution on the message uri (like subst_uri but works
+   Runs  the re substitution on the message uri (like subst_uri but works
    only on the user portion of the uri)
 
    Meaning of the parameters is as follows:
-     * '/re/repl/flags' - sed like regular expression. flags can be a
-       combination of i (case insensitive), g (global) or s (match newline
-       don't treat it as end of line).
+     * '/re/repl/flags'  -  sed  like  regular expression. flags can be a
+       combination  of  i  (case  insensitive),  g  (global)  or s (match
+       newline don't treat it as end of line).
        're' - is regular expresion
        'repl' - is replacement string - may contain pseudo-varibales
        'flags' - substitution flags (i - ignore case, g - global)
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.13. subst usage
@@ -508,19 +511,19 @@ if (subst_user('/(.*)3642$/$avp(user_prefix)\13642/')){$
 
 ...
 
-3.14. subst_body('/re/repl/flags')
+3.14.  subst_body('/re/repl/flags')
 
    Replaces re with repl (sed or perl like) in the body of the message.
 
    Meaning of the parameters is as follows:
-     * '/re/repl/flags' - sed like regular expression. flags can be a
-       combination of i (case insensitive), g (global) or s (match newline
-       don't treat it as end of line).
+     * '/re/repl/flags'  -  sed  like  regular expression. flags can be a
+       combination  of  i  (case  insensitive),  g  (global)  or s (match
+       newline don't treat it as end of line).
        're' - is regular expresion
        'repl' - is replacement string - may contain pseudo-varibales
        'flags' - substitution flags (i - ignore case, g - global)
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.14. subst_body usage
@@ -529,19 +532,19 @@ if ( subst_body('/^o=(.*) /o=$fU /') ) {};
 
 ...
 
-3.15. subst_hf(hf, subexp, flags)
+3.15.  subst_hf(hf, subexp, flags)
 
    Perl-like substitutions in the body of a header field.
 
    Meaning of the parameters is as follows:
      * hf - header field name.
-     * subexp - substitution expression in the same format as of the
+     * subexp  -  substitution  expression  in  the same format as of the
        'subst' function parameter.
-     * flags - control flags - it has to be one of: a - all headers
-       matching the name; f - only first header matching the name; l -
+     * flags  -  control  flags  -  it  has to be one of: a - all headers
+       matching  the  name;  f - only first header matching the name; l -
        only the last header matching the name.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.15. search_body usage
@@ -549,16 +552,16 @@ if ( subst_body('/^o=(.*) /o=$fU /') ) {};
 if ( subst_hf("From", "/:test@/:best@/", "a") ) { /*....*/ };
 ...
 
-3.16. set_body(txt,content_type)
+3.16.  set_body(txt,content_type)
 
    Set body to a SIP message.
 
    Meaning of the parameters is as follows:
      * txt - text for the body, can include pseudo-variables.
-     * content_type - value of Content-Type header, can include
+     * content_type   -   value   of  Content-Type  header,  can  include
        pseudo-variables.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.16. set_body usage
@@ -566,16 +569,16 @@ if ( subst_hf("From", "/:test@/:best@/", "a") ) { /*....*/ };
 set_body("test", "text/plain");
 ...
 
-3.17. set_reply_body(txt,content_type)
+3.17.  set_reply_body(txt,content_type)
 
    Set body to a SIP reply to be generated by Kamailio.
 
    Meaning of the parameters is as follows:
      * txt - text for the body, can include pseudo-variables.
-     * content_type - value of Content-Type header, can include
+     * content_type   -   value   of  Content-Type  header,  can  include
        pseudo-variables.
 
-   This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  FAILURE_ROUTE,
    BRANCH_ROUTE.
 
    Example 1.17. set_reply_body usage
@@ -583,15 +586,15 @@ set_body("test", "text/plain");
 set_reply_body("test", "text/plain");
 ...
 
-3.18. filter_body(content_type)
+3.18.  filter_body(content_type)
 
-   Filters multipart/mixed body by leaving out all other body parts except
-   the first body part of given type.
+   Filters  multipart/mixed  body  by  leaving  out  all other body parts
+   except the first body part of given type.
 
    Meaning of the parameters is as follows:
      * content_type - Content type to be left in the body.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.18. filter_body usage
@@ -606,14 +609,14 @@ if (has_body("multipart/mixed")) {
 }
 ...
 
-3.19. append_to_reply(txt)
+3.19.  append_to_reply(txt)
 
    Append txt as header to the reply.
 
    Meaning of the parameters is as follows:
      * txt - String which may contains pseudo-variables.
 
-   This function can be used from REQUEST_ROUTE, BRANCH_ROUTE,
+   This   function   can   be   used  from  REQUEST_ROUTE,  BRANCH_ROUTE,
    FAILURE_ROUTE, ERROR_ROUTE.
 
    Example 1.19. append_to_reply usage
@@ -622,21 +625,21 @@ append_to_reply("Foo: bar\r\n");
 append_to_reply("Foo: $rm at $Ts\r\n");
 ...
 
-3.20. append_hf(txt)
+3.20.  append_hf(txt)
 
    Appends 'txt' as header after the last header field.
 
    Meaning of the parameters is as follows:
-     * txt - Header field to be appended. The value can contain
+     * txt  -  Header  field  to  be  appended.  The  value  can  contain
        pseudo-variables which will be replaced at run time.
 
-   Note: Headers which are added in main route cannot be removed in
+   Note:  Headers  which  are  added  in  main route cannot be removed in
    further routes (e.g. failure routes). So, the idea is not to add there
-   any headers that you might want to remove later. To add headers
-   temporarely use the branch route because the changes you do there are
+   any  headers  that  you  might  want  to  remove later. To add headers
+   temporarely  use the branch route because the changes you do there are
    per-branch.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.20. append_hf usage
@@ -645,16 +648,16 @@ append_hf("P-hint: VOICEMAIL\r\n");
 append_hf("From-username: $fU\r\n");
 ...
 
-3.21. append_hf(txt, hdr)
+3.21.  append_hf(txt, hdr)
 
    Appends 'txt' as header after first 'hdr' header field.
 
    Meaning of the parameters is as follows:
-     * txt - Header field to be appended. The value can contain
+     * txt  -  Header  field  to  be  appended.  The  value  can  contain
        pseudo-variables which will be replaced at run time.
      * hdr - Header name after which the 'txt' is appended.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.21. append_hf usage
@@ -663,15 +666,15 @@ append_hf("P-hint: VOICEMAIL\r\n", "Call-ID");
 append_hf("From-username: $fU\r\n", "Call-ID");
 ...
 
-3.22. insert_hf(txt)
+3.22.  insert_hf(txt)
 
    Inserts 'txt' as header before the first header field.
 
    Meaning of the parameters is as follows:
-     * txt - Header field to be inserted. The value can contain
+     * txt  -  Header  field  to  be  inserted.  The  value  can  contain
        pseudo-variables which will be replaced at run time.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.22. insert_hf usage
@@ -680,16 +683,16 @@ insert_hf("P-hint: VOICEMAIL\r\n");
 insert_hf("To-username: $tU\r\n");
 ...
 
-3.23. insert_hf(txt, hdr)
+3.23.  insert_hf(txt, hdr)
 
    Inserts 'txt' as header before first 'hdr' header field.
 
    Meaning of the parameters is as follows:
-     * txt - Header field to be inserted. The value can contain
+     * txt  -  Header  field  to  be  inserted.  The  value  can  contain
        pseudo-variables which will be replaced at run time.
      * hdr - Header name before which the 'txt' is inserted.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.23. insert_hf usage
@@ -698,7 +701,7 @@ insert_hf("P-hint: VOICEMAIL\r\n", "Call-ID");
 insert_hf("To-username: $tU\r\n", "Call-ID");
 ...
 
-3.24. append_urihf(prefix, suffix)
+3.24.  append_urihf(prefix, suffix)
 
    Append header field name with original Request-URI in middle.
 
@@ -706,7 +709,7 @@ insert_hf("To-username: $tU\r\n", "Call-ID");
      * prefix - string (usually at least header field name).
      * suffix - string (usually at least line terminator).
 
-   This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  FAILURE_ROUTE,
    BRANCH_ROUTE.
 
    Example 1.24. append_urihf usage
@@ -714,19 +717,19 @@ insert_hf("To-username: $tU\r\n", "Call-ID");
 append_urihf("CC-Diversion: ", "\r\n");
 ...
 
-3.25. is_present_hf(hf_name)
+3.25.  is_present_hf(hf_name)
 
    Return true if a header field is present in message.
 
 Note
 
-   The function is also able to distinguish the compact names. For exmaple
-   "From" will match with "f"
+   The  function  is  also  able  to  distinguish  the compact names. For
+   exmaple "From" will match with "f"
 
    Meaning of the parameters is as follows:
      * hf_name - Header field name.(long or compact form)
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.25. is_present_hf usage
@@ -734,15 +737,15 @@ Note
 if (is_present_hf("From")) log(1, "From HF Present");
 ...
 
-3.26. is_present_hf_re(hf_name_re)
+3.26.  is_present_hf_re(hf_name_re)
 
-   Return true if a header field whose name matches regular expression
+   Return  true  if  a header field whose name matches regular expression
    'hf_name_re' is present in message.
 
    Meaning of the parameters is as follows:
      * hf_name_re - Regular expression to match header field name.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.26. is_present_hf_re usage
@@ -750,11 +753,11 @@ if (is_present_hf("From")) log(1, "From HF Present");
 if (is_present_hf_re("^P-")) log(1, "There are headers starting with P-\n");
 ...
 
-3.27. append_time()
+3.27.  append_time()
 
    Adds a time header to the reply of the request. You must use it before
-   functions that are likely to send a reply, e.g., save() from
-   'registrar' module. Header format is: "Date: %a, %d %b %Y %H:%M:%S
+   functions  that  are  likely  to  send  a  reply,  e.g.,  save()  from
+   'registrar'  module.  Header  format  is: "Date: %a, %d %b %Y %H:%M:%S
    GMT", with the legend:
      * %a abbreviated week of day name (locale)
      * %d day of month as decimal number
@@ -766,7 +769,7 @@ if (is_present_hf_re("^P-")) log(1, "There are headers starting with P-\n");
 
    Return true if a header was succesfully appended.
 
-   This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  FAILURE_ROUTE,
    BRANCH_ROUTE.
 
    Example 1.27. append_time usage
@@ -774,9 +777,9 @@ if (is_present_hf_re("^P-")) log(1, "There are headers starting with P-\n");
 append_time();
 ...
 
-3.28. append_time_to_request()
+3.28.  append_time_to_request()
 
-   Adds a time header to the request. Header format is: "Date: %a, %d %b
+   Adds  a time header to the request. Header format is: "Date: %a, %d %b
    %Y %H:%M:%S GMT", with the legend:
      * %a abbreviated week of day name (locale)
      * %d day of month as decimal number
@@ -788,7 +791,7 @@ append_time();
 
    Return true if a header was succesfully appended.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, BRANCH_ROUTE.
 
    Example 1.28. append_time_to_request usage
@@ -797,19 +800,19 @@ if(!is_present_hf("Date"))
     append_time_to_request();
 ...
 
-3.29. is_method(name)
+3.29.  is_method(name)
 
-   Check if the method of the message matches the name. If name is a known
-   method (invite, cancel, ack, bye, options, info, update, register,
-   message, subscribe, notify, refer, prack), the function performs method
-   ID testing (integer comparison) instead of ignore case string
-   comparison.
+   Check  if  the  method  of  the message matches the name. If name is a
+   known  method  (invite,  cancel,  ack,  bye,  options,  info,  update,
+   register,  message,  subscribe,  notify,  refer,  prack), the function
+   performs method ID testing (integer comparison) instead of ignore case
+   string comparison.
 
-   The 'name' can be a list of methods in the form of
-   'method1|method2|...'. In this case, the function returns true if the
+   The   'name'   can   be   a   list   of   methods   in   the  form  of
+   'method1|method2|...'.  In this case, the function returns true if the
    SIP message's method is one from the list. IMPORTANT NOTE: in the list
    must be only methods defined in Kamailio with ID (invite, cancel, ack,
-   bye, options, info, update, register, message, subscribe, notify,
+   bye,  options,  info,  update,  register,  message, subscribe, notify,
    refer, prack, publish; for more see:
    http://www.iana.org/assignments/sip-parameters).
 
@@ -819,7 +822,7 @@ if(!is_present_hf("Date"))
    Meaning of the parameters is as follows:
      * name - SIP method name
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE, and BRANCH_ROUTE.
 
    Example 1.29. is_method usage
@@ -834,9 +837,9 @@ if(is_method("OPTION|UPDATE"))
 }
 ...
 
-3.30. remove_hf(hname)
+3.30.  remove_hf(hname)
 
-   Remove from message all headers with name "hname". Header matching is
+   Remove  from message all headers with name "hname". Header matching is
    case-insensitive. Matches and removes also the compact header forms.
 
    Returns true if at least one header is found and removed.
@@ -844,7 +847,7 @@ if(is_method("OPTION|UPDATE"))
    Meaning of the parameters is as follows:
      * hname - header name to be removed.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE and BRANCH_ROUTE.
 
    Example 1.30. remove_hf usage
@@ -859,9 +862,9 @@ remove_hf("Contact")
 remove_hf("m")
 ...
 
-3.31. remove_hf_re(re)
+3.31.  remove_hf_re(re)
 
-   Remove from message all headers with name matching regular expression
+   Remove  from message all headers with name matching regular expression
    "re"
 
    Returns true if at least one header is found and removed.
@@ -869,7 +872,7 @@ remove_hf("m")
    Meaning of the parameters is as follows:
      * re - regular expression to match the header name to be removed.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE and BRANCH_ROUTE.
 
    Example 1.31. remove_hf_re usage
@@ -880,19 +883,19 @@ if(remove_hf_re("^P-"))
 }
 ...
 
-3.32. has_body(), has_body(mime)
+3.32.  has_body(), has_body(mime)
 
-   The function returns true if the SIP message has a body attached. The
-   checked includes also the "Content-Lenght" header presence and value.
+   The  function returns true if the SIP message has a body attached. The
+   checked includes also the "Content-Length" header presence and value.
 
-   If a parameter is given, the mime described will be also checked
+   If  a  parameter  is  given,  the  mime described will be also checked
    against the "Content-Type" header.
 
    Meaning of the parameters is as follows:
-     * mime - mime to be checked against the "Content-Type" header. If not
-       present or 0, this check will be disabled.
+     * mime  -  mime  to be checked against the "Content-Type" header. If
+       not present or 0, this check will be disabled.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE and BRANCH_ROUTE.
 
    Example 1.32. has_body usage
@@ -903,12 +906,12 @@ if(has_body("application/sdp"))
 }
 ...
 
-3.33. is_audio_on_hold()
+3.33.  is_audio_on_hold()
 
-   The function returns true if the SIP message has a body attached and at
-   least one audio stream in on hold.
+   The  function  returns true if the SIP message has a body attached and
+   at least one audio stream in on hold.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE and BRANCH_ROUTE.
 
    Example 1.33. is_audio_on_hold usage
@@ -919,14 +922,14 @@ if(is_audio_on_hold())
 }
 ...
 
-3.34. is_privacy(privacy_type)
+3.34.  is_privacy(privacy_type)
 
-   The function returns true if the SIP message has a Privacy header field
-   that includes the given privacy_type among its privacy values. See
-   http://www.iana.org/assignments/sip-priv-values for possible privacy
-   type values.
+   The  function  returns  true  if  the SIP message has a Privacy header
+   field  that  includes the given privacy_type among its privacy values.
+   See   http://www.iana.org/assignments/sip-priv-values   for   possible
+   privacy type values.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE and BRANCH_ROUTE.
 
    Example 1.34. is_privacy usage
@@ -937,11 +940,11 @@ if(is_privacy("id"))
 }
 ...
 
-3.35. in_list(subject, list, separator)
+3.35.  in_list(subject, list, separator)
 
-   Function checks if subject string is found in list string where list
-   items are separated by separator string. Subject and list strings may
-   contain pseudo variables. Separator string needs to be one character
+   Function  checks  if subject string is found in list string where list
+   items  are separated by separator string. Subject and list strings may
+   contain  pseudo  variables. Separator string needs to be one character
    long. Returns 1 if subject is found and -1 otherwise.
 
    Function can be used from all kinds of routes.
@@ -955,12 +958,12 @@ if (in_list("$var(subject)", "$var(list)", ",") {
 }
 ...
 
-3.36. cmp_str(str1, str2)
+3.36.  cmp_str(str1, str2)
 
    The function returns true if the two parameters matches as string case
    sensitive comparison.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE and BRANCH_ROUTE.
 
    Example 1.36. cmp_str usage
@@ -971,12 +974,12 @@ if(cmp_str("$rU", "kamailio"))
 }
 ...
 
-3.37. cmp_istr(str1, str2)
+3.37.  cmp_istr(str1, str2)
 
    The function returns true if the two parameters matches as string case
    insensitive comparison.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE and BRANCH_ROUTE.
 
    Example 1.37. cmp_str usage
@@ -987,12 +990,12 @@ if(cmp_istr("$rU@you", "kamailio@YOU"))
 }
 ...
 
-3.38. starts_with(str1, str2)
+3.38.  starts_with(str1, str2)
 
-   The function returns true if the first string starts with the second
+   The  function  returns true if the first string starts with the second
    string.
 
-   This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
+   This   function   can   be  used  from  REQUEST_ROUTE,  ONREPLY_ROUTE,
    FAILURE_ROUTE and BRANCH_ROUTE.
 
    Example 1.38. starts_with usage
@@ -1005,8 +1008,9 @@ if (starts_with("$rU", "+358"))
 
 4. Known Limitations
 
-   Search functions are applied to the original request, i.e., they ignore
-   all changes resulting from message processing in Kamailio script.
+   Search  functions  are  applied  to  the  original request, i.e., they
+   ignore  all  changes  resulting  from  message  processing in Kamailio
+   script.
 
 Chapter 2. Developer Guide
 
@@ -1014,16 +1018,16 @@ Chapter 2. Developer Guide
 
    1. Functions
 
-        1.1. load_textops(*import_structure)
+        1.1. load_textops(*import_structure) 
 
 1. Functions
 
-   1.1. load_textops(*import_structure)
+   1.1. load_textops(*import_structure) 
 
-1.1. load_textops(*import_structure)
+1.1.  load_textops(*import_structure)
 
    For programmatic use only--import the Textops API.
 
    Meaning of the parameters is as follows:
-     * import_structure - Pointer to the import structure - see "struct
+     * import_structure  -  Pointer to the import structure - see "struct
        textops_binds" in modules/textops/api.h
index a1001e6..07caee9 100644 (file)
@@ -1238,7 +1238,7 @@ if(remove_hf_re("^P-"))
                <para>
                The function returns <emphasis>true</emphasis> if the SIP message
                has a body attached. The checked includes also the 
-               <quote>Content-Lenght</quote> header presence and value.
+               <quote>Content-Length</quote> header presence and value.
                </para>
                <para>
                If a parameter is given, the mime described will be also checked against
index 9f56337..d0c0fbe 100644 (file)
@@ -1,3 +1,4 @@
+
 1. Textopsx Module
 
 Andrei Pelinescu-Onciul
@@ -10,25 +11,25 @@ Daniel-Constantin Mierla
    <miconda@gmail.com>
 
    Copyright © 2003 FhG FOKUS
-     __________________________________________________________________
+     _________________________________________________________________
 
    1.1. Overview
    1.2. Functions
 
-        1.2.1. msg_apply_changes()
-        1.2.2. change_reply_status(code, reason)
-        1.2.3. remove_body()
-        1.2.4. keep_hf(regexp)
-        1.2.5. fnmatch(value, expr [, flags])
-        1.2.6. append_hf_value(hf, hvalue)
-        1.2.7. insert_hf_value(hf, hvalue)
-        1.2.8. remove_hf_value(hf_par)
-        1.2.9. remove_hf_value2(hf_par)
-        1.2.10. assign_hf_value(hf, hvalue)
-        1.2.11. assign_hf_value2(hf, hvalue)
-        1.2.12. include_hf_value(hf, hvalue)
-        1.2.13. exclude_hf_value(hf, hvalue)
-        1.2.14. hf_value_exists(hf, hvalue)
+        1.2.1. msg_apply_changes() 
+        1.2.2. change_reply_status(code, reason) 
+        1.2.3. remove_body() 
+        1.2.4. keep_hf(regexp) 
+        1.2.5. fnmatch(value, expr [, flags]) 
+        1.2.6. append_hf_value(hf, hvalue) 
+        1.2.7. insert_hf_value(hf, hvalue) 
+        1.2.8. remove_hf_value(hf_par) 
+        1.2.9. remove_hf_value2(hf_par) 
+        1.2.10. assign_hf_value(hf, hvalue) 
+        1.2.11. assign_hf_value2(hf, hvalue) 
+        1.2.12. include_hf_value(hf, hvalue) 
+        1.2.13. exclude_hf_value(hf, hvalue) 
+        1.2.14. hf_value_exists(hf, hvalue) 
         1.2.15. Selects
 
               1.2.15.1. @hf_value
@@ -37,18 +38,18 @@ Daniel-Constantin Mierla
 
 1.1. Overview
 
-   This module implements functions for SIP message text operations in
-   routing block configurations. It adds new features similar to the
+   This  module  implements  functions for SIP message text operations in
+   routing  block  configurations.  It  adds  new features similar to the
    textops module (textops eXtentions).
 
 1.2. Functions
 
-1.2.1. msg_apply_changes()
+1.2.1.  msg_apply_changes()
 
-   Use this function to apply changes performed on SIP request content. Be
-   careful when using this function; due to special handling of changes to
-   the SIP message buffer so far, using this function might change the
-   behaviour of your config. Do test your config properly!
+   Use  this  function to apply changes performed on SIP request content.
+   Be  careful  when  using  this  function;  due  to special handling of
+   changes  to  the  SIP message buffer so far, using this function might
+   change the behaviour of your config. Do test your config properly!
 
    This function can be used from REQUEST_ROUTE.
 
@@ -65,7 +66,7 @@ if(msg_apply_changes())
 }
 ...
 
-1.2.2. change_reply_status(code, reason)
+1.2.2.  change_reply_status(code, reason)
 
    Intercept a SIP reply (in an onreply_route) and change its status code
    and reason phrase prior to forwarding it.
@@ -86,7 +87,7 @@ onreply_route {
 }
 ...
 
-1.2.3. remove_body()
+1.2.3.  remove_body()
 
    Use this function to remove the body of SIP requests or replies.
 
@@ -97,11 +98,11 @@ onreply_route {
 remove_body();
 ...
 
-1.2.4. keep_hf(regexp)
+1.2.4.  keep_hf(regexp)
 
    Remove headers that don't match the regular expression regexp. Several
-   header are ignored always (thus not removed): Via, From, To, Call-ID,
-   CSeq, Content-Lenght, Content-Type, Max-Forwards, Contact, Route,
+   header  are ignored always (thus not removed): Via, From, To, Call-ID,
+   CSeq,  Content-Length,  Content-Type,  Max-Forwards,  Contact,  Route,
    Record-Route -- these can be removed one by one with remove_hf().
 
    This function can be used from ANY_ROUTE.
@@ -111,13 +112,13 @@ remove_body();
 keep_hf("User-Agent");
 ...
 
-1.2.5. fnmatch(value, expr [, flags])
+1.2.5.  fnmatch(value, expr [, flags])
 
-   Match the value against the expr using shell-style pattern for file
-   name matching (see man page for C function fnmatch()). It is known to
+   Match  the  value  against the expr using shell-style pattern for file
+   name  matching (see man page for C function fnmatch()). It is known to
    be faster and use less-memory than regular expressions.
 
-   Parameter 'flags' is optional and can be 'i' to do case insensitive
+   Parameter  'flags'  is  optional and can be 'i' to do case insensitive
    matching.
 
    This function can be used from ANY_ROUTE.
@@ -130,15 +131,15 @@ if(fnmatch("$rU", "123*"))
 }
 ...
 
-1.2.6. append_hf_value(hf, hvalue)
+1.2.6.  append_hf_value(hf, hvalue)
 
    Append new header value after an existing header, if no index acquired
-   append at the end of list. Note that a header may consist of comma
+   append  at  the  end  of list. Note that a header may consist of comma
    delimited list of values.
 
    Meaning of the parameters is as follows:
-     * hf - Header field to be appended. Format: HFNAME [ [IDX] ]. If
-       index is not specified new header is inserted at the end of
+     * hf  -  Header  field  to be appended. Format: HFNAME [ [IDX] ]. If
+       index  is  not  specified  new  header  is  inserted at the end of
        message.
      * hvalue - Value to be added, config var formatting supported.
 
@@ -146,20 +147,20 @@ if(fnmatch("$rU", "123*"))
 ...
 append_hf_value("foo", "gogo;stamp=$Ts")   # add new header
 append_hf_value("foo[1]", "gogo")  # add new value behind first value
-append_hf_value("foo[-1]", "$var(Bar)") # try add value to the last header, if n
-ot exists add new header
+append_hf_value("foo[-1]", "$var(Bar)") # try add value to the last header, if
+not exists add new header
 ...
 
-1.2.7. insert_hf_value(hf, hvalue)
+1.2.7.  insert_hf_value(hf, hvalue)
 
-   Insert new header value before an existing header, if no index acquired
-   insert before first hf header. Note that a header may consist of comma
-   delimited list of values. To insert value behing last value use
-   appenf_hf_value.
+   Insert  new  header  value  before  an  existing  header,  if no index
+   acquired insert before first hf header. Note that a header may consist
+   of  comma  delimited list of values. To insert value behing last value
+   use appenf_hf_value.
 
    Meaning of the parameters is as follows:
-     * hf - Header field to be appended. Format: HFNAME [ [IDX] ]. If
-       index is not specified new header is inserted at the top of
+     * hf  -  Header  field  to be appended. Format: HFNAME [ [IDX] ]. If
+       index  is  not  specified  new  header  is  inserted at the top of
        message.
      * hvalue - Value to be added, config var formatting supported.
 
@@ -170,14 +171,14 @@ insert_hf_value("foo", "$avp(foo)")   # add new header at the top of list
 insert_hf_value("foo[1]", "gogo") # try add to the first header
 ...
 
-1.2.8. remove_hf_value(hf_par)
+1.2.8.  remove_hf_value(hf_par)
 
-   Remove the header value from existing header, Note that a header may
+   Remove  the  header value from existing header, Note that a header may
    consist of comma delimited list of values.
 
    Meaning of the parameters is as follows:
-     * hf_par - Header field/param to be removed. Format: HFNAME [ [IDX] ]
-       [. PARAM ] If asterisk is specified as index then all values are
+     * hf_par  - Header field/param to be removed. Format: HFNAME [ [IDX]
+       [. PARAM ] If asterisk is specified as index then all values are
        affected.
 
    Example 8. remove_hf_value usage
@@ -189,35 +190,35 @@ remove_hf_value("foo.bar")  # delete parameter
 remove_hf_value("foo[*].bar") # for each foo delete bar parameters
 ...
 
-1.2.9. remove_hf_value2(hf_par)
+1.2.9.  remove_hf_value2(hf_par)
 
-   Remove specified header or parameter. It is expected header in
-   Authorization format (comma delimiters are not treated as multi-value
+   Remove  specified  header  or  parameter.  It  is  expected  header in
+   Authorization  format (comma delimiters are not treated as multi-value
    delimiters).
 
    Meaning of the parameters is as follows:
-     * hf_par - Header/param to be removed. Format: HFNAME [ [IDX] ] [.
-       PARAM ] If asterisk is specified as index then all values are
+     * hf_par  -  Header/param to be removed. Format: HFNAME [ [IDX] ] [.
+       PARAM  ]  If  asterisk  is  specified as index then all values are
        affected.
 
    Example 9. remove_hf_value2 usage
 ...
 remove_hf_value2("foo")  # remove foo[1]
-remove_hf_value2("foo[*]")  # remove all foo's headers, the same as remove_hf_he
-ader("foo[*]");
+remove_hf_value2("foo[*]")  # remove all foo's headers, the same as remove_hf_h
+eader("foo[*]");
 remove_hf_value2("foo[-1]") # last foo
 remove_hf_value2("foo.bar")  # delete parameter
 remove_hf_value2("foo[*].bar") # for each foo delete bar parameters
 ...
 
-1.2.10. assign_hf_value(hf, hvalue)
+1.2.10.  assign_hf_value(hf, hvalue)
 
    Assign value to specified header value / param.
 
    Meaning of the parameters is as follows:
-     * hf_para - Header field value / param to be appended. Format: HFNAME
-       [ [IDX] ] [. PARAM] If asterisk is specified as index then all
-       values are affected.
+     * hf_para  -  Header  field  value  /  param to be appended. Format:
+       HFNAME  [ [IDX] ] [. PARAM] If asterisk is specified as index then
+       all values are affected.
      * hvalue - Value to be assigned, config var formatting supported. If
        value is empty then no equal sign apears in param.
 
@@ -232,16 +233,16 @@ assign_hf_value("foo[*]", "")  # remove all foo's, empty value remains
 assign_hf_value("foo[*].bar", "")  # set empty value (ex. lr)
 ...
 
-1.2.11. assign_hf_value2(hf, hvalue)
+1.2.11.  assign_hf_value2(hf, hvalue)
 
-   Assign value to specified header. It is expected header in
-   Authorization format (comma delimiters are not treated as multi-value
+   Assign   value   to   specified  header.  It  is  expected  header  in
+   Authorization  format (comma delimiters are not treated as multi-value
    delimiters).
 
    Meaning of the parameters is as follows:
-     * hf_para - Header field value / param to be appended. Format: HFNAME
-       [ [IDX] ] [. PARAM] If asterisk is specified as index then all
-       values are affected.
+     * hf_para  -  Header  field  value  /  param to be appended. Format:
+       HFNAME  [ [IDX] ] [. PARAM] If asterisk is specified as index then
+       all values are affected.
      * hvalue - Value to be assigned, config var formatting supported. If
        value is empty then no equal sign apears in param.
 
@@ -252,7 +253,7 @@ assign_hf_value2("foo[-1]", "gogo")  # foo[last_foo]
 assign_hf_value2("foo[*].bar", "")  # set empty value (ex. lr)
 ...
 
-1.2.12. include_hf_value(hf, hvalue)
+1.2.12.  include_hf_value(hf, hvalue)
 
    Add value in set if not exists, eg. "Supported: path,100rel".
 
@@ -265,7 +266,7 @@ assign_hf_value2("foo[*].bar", "")  # set empty value (ex. lr)
 include_hf_value("Supported", "path");
 ...
 
-1.2.13. exclude_hf_value(hf, hvalue)
+1.2.13.  exclude_hf_value(hf, hvalue)
 
    Remove value from set if exists, eg. "Supported: path,100rel".
 
@@ -278,13 +279,13 @@ include_hf_value("Supported", "path");
 exclude_hf_value("Supported", "100rel");
 ...
 
-1.2.14. hf_value_exists(hf, hvalue)
+1.2.14.  hf_value_exists(hf, hvalue)
 
-   Check if value exists in set. Alternate select
+   Check     if     value     exists    in    set.    Alternate    select
    @hf_value_exists.HF.VALUE may be used. It returns one or zero.
 
    Meaning of the parameters is as follows:
-     * hf - Header field name to be affected. Underscores are treated as
+     * hf  - Header field name to be affected. Underscores are treated as
        dashes.
      * hvalue - config var formatting supported.
 
@@ -303,27 +304,28 @@ if (@hf_value_exists.supported.path == "1") {
 
 1.2.15.1. @hf_value
 
-   Get value of required header-value or param. Note that functions called
-   'value2' works with Authorization-like headers where comma is not
-   treated as value delimiter. Formats: @hf_value.HFNAME[IDX] # idx value,
-   negative value counts from bottom @hf_value.HFNAME.PARAM_NAME
-   @hf_value.HFNAME[IDX].PARAM_NAME @hf_value.HFNAME.p.PARAM_NAME # or
-   .param., useful if requred called "uri", "p", "param"
-   @hf_value.HFNAME[IDX].p.PARAM_NAME # dtto @hf_value.HFNAME[IDX].uri #
-   (< & > excluded) @hf_value.HFNAME[*] # return comma delimited list of
+   Get  value  of  required  header-value  or  param. Note that functions
+   called  'value2'  works with Authorization-like headers where comma is
+   not  treated  as value delimiter. Formats: @hf_value.HFNAME[IDX] # idx
+   value,  negative  value counts from bottom @hf_value.HFNAME.PARAM_NAME
+   @hf_value.HFNAME[IDX].PARAM_NAME  @hf_value.HFNAME.p.PARAM_NAME  #  or
+   .param.,    useful    if    requred   called   "uri",   "p",   "param"
+   @hf_value.HFNAME[IDX].p.PARAM_NAME  # dtto @hf_value.HFNAME[IDX].uri #
+   (<  & > excluded) @hf_value.HFNAME[*] # return comma delimited list of
    all values (combines headers) @hf_value.HFNAME # the same as above [*]
-   but may be parsed by cfg.y @hf_value.HFNAME[*].uri # return comma
-   delimited list of uris (< & > excluded) @hf_value.HFNAME.uri # the same
-   as above [*] but may be parsed by cfg.y @hf_value.HFNAME[IDX].name #
-   returns name part, quotes excluded @hf_value.HFNAME.name # returns name
-   part of the first value @hf_value2.HFNAME # returns value of first
-   header @hf_value2.HFNAME[IDX] # returns value of idx's header
-   @hf_value2.HFNAME.PARAM_NAME @hf_value2.HFNAME[IDX].PARAM_NAME
-   @hf_value.HFNAME[IDX].uri # return URI, quotes excluded
-   @hf_value.HFNAME.p.uri # returns param named uri, not URI itself
-   @hf_value.HFNAME.p.name # returns param named name, not name itself
-   @hf_value.HFNAME[IDX].uri.name # any sel_any_uri nested features may be
-   used @hf_value.HFNAME[IDX].nameaddr.name # select_any_nameaddr
+   but  may  be  parsed  by  cfg.y @hf_value.HFNAME[*].uri # return comma
+   delimited  list  of  uris  (< & > excluded) @hf_value.HFNAME.uri # the
+   same as above [*] but may be parsed by cfg.y
+   @hf_value.HFNAME[IDX].name   #  returns  name  part,  quotes  excluded
+   @hf_value.HFNAME.name   #   returns  name  part  of  the  first  value
+   @hf_value2.HFNAME     #     returns     value    of    first    header
+   @hf_value2.HFNAME[IDX]    #    returns    value    of   idx's   header
+   @hf_value2.HFNAME.PARAM_NAME         @hf_value2.HFNAME[IDX].PARAM_NAME
+   @hf_value.HFNAME[IDX].uri    #    return    URI,    quotes    excluded
+   @hf_value.HFNAME.p.uri  #  returns  param  named  uri,  not URI itself
+   @hf_value.HFNAME.p.name  #  returns  param named name, not name itself
+   @hf_value.HFNAME[IDX].uri.name  #  any sel_any_uri nested features may
+   be used @hf_value.HFNAME[IDX].nameaddr.name # select_any_nameaddr
 
    Meaning of the parameters is as follows:
      * HFNAME - Header field name. Underscores are treated as dashes.
index 322bd41..f961e34 100644 (file)
@@ -100,7 +100,7 @@ remove_body();
                <para>
                        Remove headers that don't match the regular expression regexp.
                        Several header are ignored always (thus not removed): Via, From,
-                       To, Call-ID, CSeq, Content-Lenght, Content-Type, Max-Forwards,
+                       To, Call-ID, CSeq, Content-Length, Content-Type, Max-Forwards,
                        Contact, Route, Record-Route -- these can be removed one by one
                        with remove_hf().
                </para>