User Tools

Site Tools


features:new-in-5.4.x

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
features:new-in-5.4.x [2020/07/09 10:56]
henningw update new for 5.4.x doc
features:new-in-5.4.x [2020/07/09 13:14]
henningw update new for 5.4.x doc
Line 37: Line 37:
  
   * adding CDR engine functionality, to allows the extension of the acc module for other formats or backends   * adding CDR engine functionality, to allows the extension of the acc module for other formats or backends
 +
 +==== auth_db ====
 +
 +  * add force_generate_avps parameter, to fetch DB attributes even when authentication failed
  
 ==== avpops ==== ==== avpops ====
  
   * add avp_subst_pv(), same functionality as avp_subst() but second parameter will be evaluated before calling subst.   * add avp_subst_pv(), same functionality as avp_subst() but second parameter will be evaluated before calling subst.
 +
 +==== app_python ====
 +
 +  * update Python3 detection mechanism
 +
 +==== app_lua ====
 +
 +  * add support for ARRAY and DICT types
  
 ==== app_ruby ==== ==== app_ruby ====
Line 57: Line 69:
 ==== carrierroute ==== ==== carrierroute ====
  
-  * organize and add new rpc commands, cr.add_host, cr.delete_host, cr.activate_host, cr.deactivate_host and cr.replace_host+  * organize and add new RPC commands, cr.add_host, cr.delete_host, cr.activate_host, cr.deactivate_host and cr.replace_host 
 +  * remove obselete FIFO commands implementation
  
 ==== cfgt ==== ==== cfgt ====
Line 66: Line 79:
   * https://www.kamailio.org/docs/modules/5.4.x/modules/cfgt.html#cfgt.r.clean   * https://www.kamailio.org/docs/modules/5.4.x/modules/cfgt.html#cfgt.r.clean
   * switch from deprecated /var/run to /run   * switch from deprecated /var/run to /run
 +
 +==== corex ====
 +
 +  * add functions to set socket by name
 +  * new function is_faked_msg()
  
 ==== ctl ==== ==== ctl ====
  
   * switch from deprecated /var/run to /run   * switch from deprecated /var/run to /run
 +
 +==== drouting ====
 +
 +  * update to new keepalive interface, using custom pinging interval per destination
 +
 +==== db_cluster ====
 +
 + * support for insert_async DB API
  
 ==== db_mysql ==== ==== db_mysql ====
Line 86: Line 112:
   * option to set add socket as string in the dst xavp   * option to set add socket as string in the dst xavp
   * new variable $dsv(...) to access attributes related to response code when executing event routes   * new variable $dsv(...) to access attributes related to response code when executing event routes
 +  * add new parameter ds_default_sockname, to set the send socket by name
 +  * add new gateway attribute "obproxy"
 +  * add rpc command dispatcher.hash
  
 ==== dialog ==== ==== dialog ====
  
   * adding dlg.set_state command, which can be used e.g. to force the killing of active dialogs   * adding dlg.set_state command, which can be used e.g. to force the killing of active dialogs
-  * dialog: added dlg.briefing rpc command, list fewer details for the dialog records in memory +  * add dlg.briefing RPC command, list fewer details for the dialog records in memory 
-  * new dlg_reset_property() function is added to disable the previously enabled dialog module behaviour, e.g. stop sending keep-alive OPTIONS messages+  * customizable list of fields for dlg.briefing rpc command, it can take an optional parameter to specify what fields to be add 
 +  * new dlg_reset_property() function is add to disable the previously enabled dialog module behaviour, e.g. stop sending keep-alive OPTIONS messages
   * export dlg_reset_property() to KEMI   * export dlg_reset_property() to KEMI
 +  * add RCP command dlg.dump, an alternative command to output dialogs data to file, far much faster than dlg.list
 +
 +==== dmq ====
 +  * set 202 response for empty_peer_callback() handling
  
 ==== dmq_usrloc ==== ==== dmq_usrloc ====
Line 103: Line 137:
   * exported functions to inc and dec hash table values to KEMI   * exported functions to inc and dec hash table values to KEMI
   * exported function to get timestamp to KEMI   * exported function to get timestamp to KEMI
 +  * new RPC command htable.store, to save the content of a hash table to DB
  
 ==== http_client ==== ==== http_client ====
Line 116: Line 151:
   * send processed logs via UDP   * send processed logs via UDP
  
-==== pv ====+==== lost ====
  
-Added new pseudo-variables:+  * add civic address parsing via xpath, with fallback to point or circle attributes 
 +  * new module parameters to set HeLD request attributes, parameters are exact_type, response_time, and location_type
  
 +==== mqtt ====
 +
 +  * add TLS support
 +  * expose received message QOS level over PV
 +
 +==== permissions ====
 +
 +  * permissions: support to load address records from a text file
 +
 +==== path =====
 +
 +  * new param sockname_mode, socket name is add to Path URI in 'sn' param
 +
 +==== presence ====
 +
 +  * new parameter pres_subs_mode, allow disabling cloning subscription structure for pv use to save run-time memory
 +  * add delete_same_subs module parameter, to enable deleting of subscriptions with the same presence uri and callid
 +  * timer_mode, new module parameter to control what timer process to use
 +  * add support to keep presentity records in memory instead of DB
 +  * add new parameter publ_cache parameter to define caching mode
 +  * add RCP command presence.presentity_list [mode] to print all attributes of the presentity record
 +
 +==== presence_xml ====
 +
 +  * adds option to aggregate xml body with priorities
 +
 +==== pua_dialoginfo ====
 +
 +  * add missing module parameter include_req_uri
 +
 +==== pv ====
 +
 +Add new pseudo-variables:
   * **[[https://www.kamailio.org/wiki/cookbooks/5.4.x/core#xavi_id_-_xavis|$xavi]]**: Similar to XAVPs, but with key names are case insensitive. XAVIs are also stored in transaction context and destroyed when the transaction is terminated.   * **[[https://www.kamailio.org/wiki/cookbooks/5.4.x/core#xavi_id_-_xavis|$xavi]]**: Similar to XAVPs, but with key names are case insensitive. XAVIs are also stored in transaction context and destroyed when the transaction is terminated.
   * **[[https://www.kamailio.org/wiki/cookbooks/5.4.x/core#xavu_id_-_xavus|$xavu]]**: Similar to XAVPs, but with single value items, therefore there are no indexes in the naming format. XAVUs are also stored in transaction context and destroyed when the transaction is terminated.   * **[[https://www.kamailio.org/wiki/cookbooks/5.4.x/core#xavu_id_-_xavus|$xavu]]**: Similar to XAVPs, but with single value items, therefore there are no indexes in the naming format. XAVUs are also stored in transaction context and destroyed when the transaction is terminated.
Line 125: Line 194:
   * new transformations s.encode.base64t and s.decode.base64t, base64 encode/decode with optional trailing padding   * new transformations s.encode.base64t and s.decode.base64t, base64 encode/decode with optional trailing padding
   * new transformation {s.rmsw} - remove whitespaces from value, removes all occurences of ' ', '\t', '\r', '\n'   * new transformation {s.rmsw} - remove whitespaces from value, removes all occurences of ' ', '\t', '\r', '\n'
 +  * KEMI functions for $shv(...) management
 +  * export xavp copy variants to KEMI
 +  * export functions for $var(...) management to KEMI
 +  * add transformations for base64-url encode/decode variants
 +  * add config and kemi functions to print xavu vars
 +  * new config variable $fsn - forced send socket name
 +  * add KEMI functions pvx.xavp_get_keys and pvx.xavp_getd
  
-==== mqtt ====+==== p_usrloc ====
  
-  * add TLS support +  * add matching_mode modparam, to specify the Contact matching 
-  * expose received message QOS level over PV+  * add a new uniq column to support new update modes 
 +  * change "-" for "_" in stats name to be prometheus compliant 
 + 
 +==== ratelimit ==== 
 + 
 +  * increase number of queues and pipes
  
 ==== registrar ==== ==== registrar ====
  
-Added **path** value to xavp_rcd location record+Add **path** value to xavp_rcd location record
  
   * https://www.kamailio.org/docs/modules/5.4.x/modules/registrar.html#registrar.p.xavp_rcd   * https://www.kamailio.org/docs/modules/5.4.x/modules/registrar.html#registrar.p.xavp_rcd
  
-Added **xavp_rcd_mask** parameter to control what values to skip+Add **xavp_rcd_mask** parameter to control what values to skip
  
   * https://www.kamailio.org/docs/modules/5.4.x/modules/registrar.html#registrar.p.xavp_rcd_mask   * https://www.kamailio.org/docs/modules/5.4.x/modules/registrar.html#registrar.p.xavp_rcd_mask
   * control what values to add to xavp_rcd via xavp_rcd_mask parameter   * control what values to add to xavp_rcd via xavp_rcd_mask parameter
   * option to send 423 when expires less than min_expires with the  min_expires_mode parameter   * option to send 423 when expires less than min_expires with the  min_expires_mode parameter
 +  * add use_expired_contacts config param to allow or disallow the usage of the expired contacts
  
 ==== rr ==== ==== rr ====
Line 147: Line 229:
   * exported record_route_preset_one() to KEMI   * exported record_route_preset_one() to KEMI
   * new function rr_next_hop_route(), return true if there is a route header for next hop address   * new function rr_next_hop_route(), return true if there is a route header for next hop address
 +  * new param sockname_mode, socket name is add to Path URI in 'sn' param
 +  * new convenience function loose_route_preloaded()
 +  * export record_route_advertised_address() to KEMI
  
 ==== rtpengine ==== ==== rtpengine ====
Line 153: Line 238:
   * update/fix via-branch=next ID generation, via-branch=next should not use a hard-coded branch index of zero, but instead use the actual branch index from the tm module   * update/fix via-branch=next ID generation, via-branch=next should not use a hard-coded branch index of zero, but instead use the actual branch index from the tm module
   * adds via-branch=auto-next and via-branch=auto-extra for easier processing in scripts   * adds via-branch=auto-next and via-branch=auto-extra for easier processing in scripts
 +  * add support for new T.38 options
 +  * enable handling of PRACK requests
  
 ==== sdpops ==== ==== sdpops ====
  
   * exported sdp with transport variants to KEMI   * exported sdp with transport variants to KEMI
 +
 +==== siputils ====
 +
 +  * contact encoding functions exported to KEMI
 +
 +==== sipcapture ====
 +
 +  * add new capture_bad_msgs modparam, to enable the parsing and capturing of broken SIP messages
  
 ==== sipdump ==== ==== sipdump ====
Line 164: Line 259:
   * KEMI functions to return buf and tag values   * KEMI functions to return buf and tag values
   * KEMI exports to get src/dst ip of the message   * KEMI exports to get src/dst ip of the message
 +
 +==== siptrace ====
 +
 +  * add functionality to duplicate via HEP with any protocol
 +  * the trace_mode can now be used to automatically store traffic to db or mirror via SIP URI
 +  * add parameter trace_init_mode, to control the tracing initialization for the module
 +  * use the send socket also for duplication via SIP
 +  * send_sock_name, new parameter to specify send socket by name
 +  * support for using async-insert to store records to database, new parameter trace_db_mode to control the mode
  
 ==== sqlops ==== ==== sqlops ====
  
-  * exported sql_result_get() to KEMI+  * export sql_result_get() to KEMI 
 +  * add functions to get null result value as empty or zer
  
 ==== tcpops ==== ==== tcpops ====
  
   * new variabale $tcp(key), return attributes related to tcp connection   * new variabale $tcp(key), return attributes related to tcp connection
 +  * add function to control use of outbound tcp connection id, tcp_set_otcpid() and tcp_set_otcpid_flag()
  
 ==== tm ==== ==== tm ====
  
   * add support for dropping messages in local-request event route   * add support for dropping messages in local-request event route
-  * new weight-based call-termination distribution, extended t_load_contacts function. It can be used to define the algorithm to use for ordering the contacts.+  * new weight-based call-termination distribution, extended t_load_contacts function. It can be used to define the algorithm to use for ordering the contacts 
 +  * add new t_clean() script function, as low-level helper to cleanup transactions in certain situations, also export it to KEMI 
 +  * add support for using socket names in UAC 
 +  * new parameter exec_time_check for safety checks on lenghtly callbacks, try to detect when failure callbacks execution take too long and do safety check of the transaction
  
 ==== tls ==== ==== tls ====
Line 185: Line 294:
   * set default tls method (version) to 1+   * set default tls method (version) to 1+
   * add verify_client support parameter   * add verify_client support parameter
 +  * add support for urlencoded cert PVs and select, 
 +    - new PVs: $tls_peer_raw_cert, $tls_peer_urlencoded_cert, $tls_my_raw_cert, $tls_my_urlencoded_cert
 +    - new selects: @tls.peer.raw_cert, @tls.peer.urlencoded_cert, @tls.my.raw_cert, @tls.my.urlencoded_cert
 +  *  add select for tls verified cert chain (requires OpenSSL 1.1+)
 +
 +==== ims_usrloc_pcscf ====
 +
 +  * change "-" for "_" in stats name to be prometheus compliant
  
 ==== ims_ipsec_pcscf ==== ==== ims_ipsec_pcscf ====
Line 214: Line 331:
 ==== jsonrpcs ==== ==== jsonrpcs ====
  
-  * KEMI function to get the rpc command response, shortcut to skip the pv get layer, can be useful for large values+  * KEMI function to get the RPCcommand response, shortcut to skip the pv get layer, can be useful for large values
  
 ==== keepalive ==== ==== keepalive ====
  
-  * add new function del_destination and added cfg functions +  * add new function del_destination and add cfg functions 
-  * added keepalive.add, keepalive.del, keepalive.get and keepalive.flush RPC commands+  * add keepalive.add, keepalive.del, keepalive.get and keepalive.flush RPC commands 
 +  * add custom pinging interval per destination 
 +  * add early start of OPTIONS checking
  
 ==== kex ==== ==== kex ====
  
-  *new rpc command stats.fetchn, get internal statistics with the values represented as numbers+  *new RPC command stats.fetchn, get internal statistics with the values represented as numbers
  
 ==== kemix ==== ==== kemix ====
Line 229: Line 348:
   * exported functions to get dst-uri variants to KEMI   * exported functions to get dst-uri variants to KEMI
   * exported function to get next hop URI to KEMI   * exported function to get next hop URI to KEMI
- +  convenience function KS.is_proto() to test many transport protocols with KEMI 
-==== presence ==== +  * exported get_conid() function to retrieve tcp connection id to KEMI
- +
- new parameter pres_subs_mode, allow disabling cloning subscription structure for pv use to save run-time memory +
- +
-==== presence_xml ==== +
- +
-  * adds option to aggregate xml body with priorities+
  
 ==== nathelper ==== ==== nathelper ====
  
   * add new function set_alias_to_avp   * add new function set_alias_to_avp
 +  * add new parameter nat_addr_mode, to include/exlude reserved addresses in nat_uac_test()
  
 ==== nat_traversal ==== ==== nat_traversal ====
Line 246: Line 360:
   * switch from deprecated /var/run to /run   * switch from deprecated /var/run to /run
   * remove redundant str trim implementation and use the one from core   * remove redundant str trim implementation and use the one from core
 +  * new parameter contact_match, for light URI comparison
 +
 +==== ndb_redis ====
 +
 +  * add sentinel support to reconnection logic
  
 ==== mediaproxy ==== ==== mediaproxy ====
Line 256: Line 375:
   * extended use of mode param for uac_reg_request_to(), to control the matching and authentication mode   * extended use of mode param for uac_reg_request_to(), to control the matching and authentication mode
   * optional param for uac_auth() to specify auth mode, to support password in HA1 format   * optional param for uac_auth() to specify auth mode, to support password in HA1 format
 +
 +==== usrloc ====
 +
 +  * add the ability to send keep alive requests
 +  * add options to do keepalive for natted or udp contacts only, similar to nathelper module
 +  * add internal keepalive support for db only mode
 +  * change "-" for "_" in stats name to be prometheus compliant
  
 ==== userblacklist ==== ==== userblacklist ====
Line 274: Line 400:
   * add two new string handling functions to copy chars and str   * add two new string handling functions to copy chars and str
   * internal flag to mark sip request if there is a route for next hop   * internal flag to mark sip request if there is a route for next hop
 +  * add support functions to encode/decode base64-url
 +  * strutils - add urlencode and urldecode functions
 +  * core parser - new internal flag FL_USE_OTCPID
 +  * new conditional lump types SUBST_RCV_ALL_EX and SUBST_SND_ALL_EX
 +  * functions for light comparison of uri values
  
 ==== Command line arguments ==== ==== Command line arguments ====
Line 295: Line 426:
 ==== Architecture ==== ==== Architecture ====
  
-  * added internal cryptographic algorithm implementation (MD5, SHA, AES, Fortuna PRNG)+  * add internal cryptographic algorithm implementation (MD5, SHA, AES, Fortuna PRNG)
   * moved lib/srutils functions to core/utils   * moved lib/srutils functions to core/utils
   * further migration of many modules to use core SHM_MEM_ERROR and PKG_MEM_ERROR defines   * further migration of many modules to use core SHM_MEM_ERROR and PKG_MEM_ERROR defines
Line 304: Line 435:
   * add option to print callid as attribute in structure json logging   * add option to print callid as attribute in structure json logging
   * log macro to print message without function name (dprint) with LOG_FN(...)   * log macro to print message without function name (dprint) with LOG_FN(...)
 +  * duplicated parameter definition cleanups in many modules
 +  * add description columns and id column to version table
 +  * better support for compilation on NetBSD
 +  * add module prefix to internal functions and structures in many modules
 +  * add core support for xavi and xavu PVs
 +  * add core support to assign names to listen sockets
 +  * KEMI suport for ARRAY and DICT types
  
 ==== kamailio.cfg ==== ==== kamailio.cfg ====
Line 316: Line 454:
  
   * pdbt: switch from deprecated /var/run to /run   * pdbt: switch from deprecated /var/run to /run
 +  * pdbt: add pdb server message check
   * Makefile: add better support for EMACS   * Makefile: add better support for EMACS
   * Makefile: use pgk-config if xml2-config can not be found for certain modules   * Makefile: use pgk-config if xml2-config can not be found for certain modules
Line 323: Line 462:
 ==== kamctl ==== ==== kamctl ====
  
 +  * add trap command output to TXT file, to help with debugging over e-mail or ticket
   * kamctl: switch from deprecated /var/run to /run   * kamctl: switch from deprecated /var/run to /run
 +  * adjustment to RPC fifo file to match default naming
 +  * try to locate RPC fifo file in /var/run/ or /run/ folders, to cope better with old or non-linux systems
  
 ==== kamdbctl ==== ==== kamdbctl ====
Line 329: Line 471:
   * add support for DB creation on MySQL 8   * add support for DB creation on MySQL 8
   * new option DBINITASK to control the steps for db init   * new option DBINITASK to control the steps for db init
 +  * removed kamailio-extensions.xml file from DB schema sources
  
 ==== kamcli ==== ==== kamcli ====
  
 +===== Documentation =====
 +
 +Many fixes were done to the modules, missing parameter were added, wrong parameter or function names fixed and explanation or clarifications added. Furthermore many debug messages in the core and modules were extended, to help during analysing problems or bugs. The full details can be found in the Changelog or with the "git log" command.
 +
 +===== Bugfixes =====
 +
 +Countless bugfixes were implemented for this release in core, tools and modules. Furthermore the code base was scanned with several static analyzers, to detect otherwise hard to find bugs. The full details can be found in the Changelog or with the "git log" command.
features/new-in-5.4.x.txt · Last modified: 2020/07/09 14:00 by henningw