User Tools

Site Tools


features:new-in-5.5.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
Previous revision
Next revision Both sides next revision
features:new-in-5.5.x [2021/05/01 09:50]
henningw
features:new-in-5.5.x [2021/05/01 11:18]
henningw
Line 11: Line 11:
  
 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 analyzing problems or bugs. The full details can be found in the release Changelog or with the "git log" command. 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 analyzing problems or bugs. The full details can be found in the release Changelog or with the "git log" command.
 +
 +A few parameters and also modules were renamed in this release. For details please refer to the module documentation .
  
 ===== Bugfixes ===== ===== Bugfixes =====
Line 23: Line 25:
  
   * https://www.kamailio.org/docs/modules/5.5.x/modules/sworker.html   * https://www.kamailio.org/docs/modules/5.5.x/modules/sworker.html
 +
 +==== lrkproxy ====
 +
 +New rtp relay module, use kernel based forwarding controlled via an external application
 +
 +  * https://www.kamailio.org/docs/modules/5.5.x/modules/lrkproxy.html
 +
 +==== jwt ====
 +
 +New module providing json web token generation and validation functions
 +
 +  * https://www.kamailio.org/docs/modules/5.5.x/modules/jwt.html
 +
 +==== stirshaken ====
 +
 +New module adding support to implement STIR-Shaken authentication and verification functions
 +
 +  * https://www.kamailio.org/docs/modules/5.5.x/modules/stirshaken.html
 +   
 +==== lwsc ====
 +
 +New module adding websocket client connector for interaction with external system, not for usual SIP forwarding
 +
 +  * https://www.kamailio.org/docs/modules/5.5.x/modules/lwsc.html
  
 ===== New in existing Modules ===== ===== New in existing Modules =====
Line 32: Line 58:
   * new parameter acc_extra_nullable to set NULL for variables that are $null   * new parameter acc_extra_nullable to set NULL for variables that are $null
   * adapt database scheme to support for acc_extra_nullable and cdr_extra_nullable   * adapt database scheme to support for acc_extra_nullable and cdr_extra_nullable
 +
 +==== acc_json ====
 +
 +  * add parameter to accept pre-encoded json values
 +
 +==== app_lua ====
 +
 +  * improve support for functions with many parameter
 +
 +==== app_python3 ====
 +
 +  * improve thread handling related to deprecated APIs
 +
 +==== app_jsdt ====
 +
 +  * duktape interpreter upgraded to v2.6.0
  
 ==== auth_radius ==== ==== auth_radius ====
Line 40: Line 82:
  
   * fix async_ms_route and export it to kemi   * fix async_ms_route and export it to kemi
 +
 +==== carrierroute ====
 +
 +  * replace existing warning mechanism related to carrier/domain probabilities
  
 ==== cfgutils ==== ==== cfgutils ====
Line 52: Line 98:
  
   * add crypto_hmac_sha256() function   * add crypto_hmac_sha256() function
 +  * add two new parameters to provide interoperability with existing crypto libraries
  
 ==== corex ==== ==== corex ====
  
-  * add rpc command shm.info +  * add rpc command shm.info and shm.stats 
-  * add rpc command shm.stats+  * add is_socket_name(sockname) config function
  
 ==== ctl ==== ==== ctl ====
  
   * skip handling rpc commands if kamailio is in shutdown phase   * skip handling rpc commands if kamailio is in shutdown phase
 +
 +==== cplc ====
 +
 +  * permanent contacts are not skipped by lookup anymore
 +  * add new redirect and add ignore3xx parameter
 +  * rpc command and documentation improvements
 +
 +==== db_postgres ====
 +
 +  * added parameter to control postgresql database connection parameters
  
 ==== dmq ==== ==== dmq ====
Line 66: Line 123:
   * new parameter notification_channel to set the channel id for peer notifications   * new parameter notification_channel to set the channel id for peer notifications
   * use more standard terms in documentation   * use more standard terms in documentation
 +  * add support for additional transport protocols for DMQ, like TCP or TLS
 +  * add support to specify a notification address multiple times, to be able to specify multiple servers in the configuration
 +  * new function dmq_process_message(), similar to dmq_handle_message(), but processes the dmq message immediately
 +  * add dmq.remove rpc command
  
 ==== dmq_usrloc ==== ==== dmq_usrloc ====
Line 102: Line 163:
  
   * add http_client_get() function to do explicit GET request with headers (and body)   * add http_client_get() function to do explicit GET request with headers (and body)
 +  * improve http_client_request to include default clientcert, clientkey etc..
 +  * http_client_request (api) content-type header support, including a content-type argument implemented as new function 
  
 ==== http_async_client ==== ==== http_async_client ====
Line 107: Line 170:
   * set curl memory callbacks in module initialization   * set curl memory callbacks in module initialization
   * add http_time pseudovariable   * add http_time pseudovariable
 +  * disable HTTP/2 multiplexing
 +  * fix build with older versionss of libcurl
 +  * add curl_follow_redirect parameter
  
 ==== imc ==== ==== imc ====
Line 115: Line 181:
  
   * use correct default User-Equipment-Info-Type AVP format   * use correct default User-Equipment-Info-Type AVP format
 +  * export functions to kemi
  
 ==== ims_usrloc_scscf ==== ==== ims_usrloc_scscf ====
Line 148: Line 215:
 ==== jsonrpcs ==== ==== jsonrpcs ====
  
-  * exported dispatch() function to kemi+  * export dispatch() function to kemi
  
 ==== kemix ==== ==== kemix ====
  
-  * exported function get_rcvadvip() and get_rcvadvport() +  * export function get_rcvadvip() and get_rcvadvport() 
-  * exported functions to get socket string and name+  * export functions to get socket string and name
   * add functions to get contact header uri   * add functions to get contact header uri
-  * exported functions to get define values+  * export functions to get define values 
 +  * export get_srcuri() to kemi
  
 ==== kex ==== ==== kex ====
Line 173: Line 241:
  
   * print to stderror if sending log message fails   * print to stderror if sending log message fails
 +
 +==== lost ====
 +
 +  * add Geolocation header value list support
 +  * new features and attributes for LoST redirect, dynamic HELD url resolving and LoST NAPTR
 +
  
 ==== nathelper ==== ==== nathelper ====
  
   * fix_nated_sdp added support for a=rtcp param RFC3605   * fix_nated_sdp added support for a=rtcp param RFC3605
 +  * improve logging
  
 ==== ndb_redis ==== ==== ndb_redis ====
Line 182: Line 257:
   * fix cluster support   * fix cluster support
   * logging improvements   * logging improvements
 +  * add result check when reconnecting
 +
 +==== mohqueue ====
 +
 +  * add support for ptime matching
  
 ==== misc_radius ==== ==== misc_radius ====
Line 196: Line 276:
   * add rpc mqueue.sizes to return queue sizes   * add rpc mqueue.sizes to return queue sizes
   * add more rpc features   * add more rpc features
 +
 +==== path ====
 +
 +  * add option to set received parameter name
  
 ==== permissions ==== ==== permissions ====
  
-  * exported allow_trusted() to kemi+  * export allow_trusted() to kemi
   * enforce limit in reload interval time, add reload_delta parameter to configure rate limit   * enforce limit in reload interval time, add reload_delta parameter to configure rate limit
  
Line 206: Line 290:
   * add rpc function pike.top, support for case insensitive match of parameter   * add rpc function pike.top, support for case insensitive match of parameter
   * add pike_check_ip(ipaddr), check the parameter ipaddr in the pike tree   * add pike_check_ip(ipaddr), check the parameter ipaddr in the pike tree
 +
 +==== pipelimit ====
 +
 +  * added pl_active() - return true if pipe is active
  
 ==== pua ==== ==== pua ====
Line 211: Line 299:
   * update_version_puadb() use pres_id to select record   * update_version_puadb() use pres_id to select record
   * fix send_publish() behavior on PUA_DB_ONLY   * fix send_publish() behavior on PUA_DB_ONLY
 +
 +==== pua_dialoginfo ====
 +
 +  * add publish_dialog_req_within parameter
 +  * add callee_entity_when_publish_disabled parameter
 +  * new parameter attribute_display to configure display name setting
 +  * skip requests that do not control call state
  
 ==== pv ==== ==== pv ====
Line 220: Line 315:
   * new variable $Rn - return receiving socket name   * new variable $Rn - return receiving socket name
   * new variable $defn(name), return the value of a define converted to number   * new variable $defn(name), return the value of a define converted to number
 +  * add $fsp, return send socket port, or 0 if $fs not set
 +  * new transformations {s.after,char} and {s.before,char}
 +  * new transformation class urialias, encode/decode uri alias values (addr~port~proto)
  
 ==== p_usrloc ==== ==== p_usrloc ====
Line 235: Line 333:
   * support new codec flags, adds explicit support for codec-set and codec-except.   * support new codec flags, adds explicit support for codec-set and codec-except.
   * add CRC32 hash algorithm for message hashing   * add CRC32 hash algorithm for message hashing
-  * query round-trip-time per call leg +  * query round-trip-time per call leg 
 +  * improve IPv6 handling for database mode and in other situations 
 +  * improve node fallback if node ran out of ports 
 +  * improve node connection for any skipped nodes due to dns or connection issues on kamailio startup
  
 ==== rr ==== ==== rr ====
Line 256: Line 357:
   * add secsipid_check_identity_pubkey(pubkeyVal) function to check the identity header validity with a public key   * add secsipid_check_identity_pubkey(pubkeyVal) function to check the identity header validity with a public key
   * new function secsipid_get_url(url, ovar), convenience function to get the content of an URL and store the result   * new function secsipid_get_url(url, ovar), convenience function to get the content of an URL and store the result
 +  * improve build process by using pkg-config
 +  * redesign to use per-process API functions
 +  * make it possible to verify certificates
  
 ==== sl ==== ==== sl ====
Line 264: Line 368:
  
   * use proper length for concatenated SMS according to TS 23.040, section 9.2.3.16   * use proper length for concatenated SMS according to TS 23.040, section 9.2.3.16
 +  * fix parsing of validity period
 +  * improvements in decode_3gpp_sms() and pv_sms_body()
  
 ==== sipdump ==== ==== sipdump ====
Line 273: Line 379:
  
   * exec event_route[siptrace:msg] on message replication with core events   * exec event_route[siptrace:msg] on message replication with core events
 +  * fallback to udp if send sock is not set
  
 ==== sqlops ==== ==== sqlops ====
Line 282: Line 389:
   * correct behaviour for append_hf, adds header after last header occurrence   * correct behaviour for append_hf, adds header after last header occurrence
   * added functions to manipulate the message body in the exported api   * added functions to manipulate the message body in the exported api
 +  * add ends_with() function
 +  * add search_str(), similar to search(), but performs the regex match over the parameter
 +  * added str_find and str_ifind() functions to find a string inside another one
  
 ==== topoh ==== ==== topoh ====
Line 291: Line 401:
 ==== topos ==== ==== topos ====
  
-  * update to-tag and rr on reply even to-tag is already set+  * update to-tag and record-route on reply even to-tag is already set
   * store branch record before dialog record   * store branch record before dialog record
 +  * added rr_update modparam, to control if record-route should be updated for requests within dialog
 +  * handle 100 response completely, as they might be needed from other modules
 +  * add functionality to set a variable host part for the Contact header
 +  * use a common xavu variable instead of different AVPs to control Contact header creation
 +  * uniform processing for requests during early dialog, requests that are handled during 1xx state, like PRACK, UPDATE, BYE
 +
 +==== topos_redis ====
 +
 +  * do record-route update for requests within dialog based of flags
 +  * support SUBSCRIBE dialogs
  
 ==== tls ==== ==== tls ====
Line 298: Line 418:
   * support compilation without deprecated OpenSSL APIs   * support compilation without deprecated OpenSSL APIs
   * export function KSR.tls.cget(aname) to kemi   * export function KSR.tls.cget(aname) to kemi
 +  * add ca_path config option to configure tls certificate paths
 +  * add tls_set_connect_server_id(srvid) function, set the server id of the tls profile to be used by next client connect
 +  * don't use OpenSSL < 1.0.2 fallback on version 1.1+
  
 ==== tm ==== ==== tm ====
Line 308: Line 431:
   * export t_relay_to_<proto>(host, port) functions to kemi   * export t_relay_to_<proto>(host, port) functions to kemi
   * correct 200 OK processing by proxy after a final non-2xx reply   * correct 200 OK processing by proxy after a final non-2xx reply
 +  * implemented t_uac_wait_block rpc command
 +  * new parameter reply_relay_mode, default is 1, new behavior
  
 ==== tmx ==== ==== tmx ====
Line 330: Line 455:
   * logging and documentation improvements   * logging and documentation improvements
   * new rpc command uac.reg_unregister to unregister records   * new rpc command uac.reg_unregister to unregister records
 +
 +==== uac_redirect ====
 +
 +  * make default q-value configurable, default value is the existing one
 +
 +==== userblacklist ====
 +
 +  * renamed to userblocklist module
  
 ==== usrloc ==== ==== usrloc ====
Line 340: Line 473:
   * set last keepalive value to current time on new records   * set last keepalive value to current time on new records
   * also send keepalive over ws and wss connections   * also send keepalive over ws and wss connections
 +  * new parameter load_rank, allow to set the rank of the child to load the location records, default is current behavior
 +
 +==== xhttp ====
 +
 +  * add kemi funtion to return $hu, http uri
  
 ==== xhttp_server ==== ==== xhttp_server ====
Line 348: Line 486:
  
   * add support for histogram metrics   * add support for histogram metrics
 +
 +==== xmlrpc ====
 +
 +  * use <nil/> for null string values
  
 ===== New in Core ===== ===== New in Core =====
Line 354: Line 496:
   * several build infrastructure improvements for MacOS with clang compiler   * several build infrastructure improvements for MacOS with clang compiler
   * support for gcc 10.x compiler in build infrastructure   * support for gcc 10.x compiler in build infrastructure
-  * add a global flag in shared memory to detect server shutdown 
   * build improvements for FreeBSD   * build improvements for FreeBSD
   * remove internal abort() calls in certain lump handling related functions   * remove internal abort() calls in certain lump handling related functions
   * improve http/2 support, support also requests, internal refactoring   * improve http/2 support, support also requests, internal refactoring
   * logging improvements for core utility functions, DB1 API and other   * logging improvements for core utility functions, DB1 API and other
-  * relocation and refactoring on core ip addr handling code 
-  * Zero terminate str copies made with pkg_str_dup() and shm_str_dup() 
-  * Refactor tcp flags to enum, add more typedefs 
-  * Improvements in DNS support for NAPTR records 
-  * add helper function to parse all contact headers to parser 
-  * add functionality to delegate sip processing to a group of workers 
-  * improve signal handling from system 
  
 ==== SIP parser ==== ==== SIP parser ====
Line 375: Line 509:
  
   * new command line parameter --cfg-print to output the config file by evaluating includes ifdefs, subst and define pre-processor directive   * new command line parameter --cfg-print to output the config file by evaluating includes ifdefs, subst and define pre-processor directive
 +  * add --atexit=val cli parameter, to skip atexit callbacks execution from external libraries, default is existing behavior
  
-==== Interpreter ====+==== Config interpreter ====
  
-  * exported core route function to kemi+  * export core route function to kemi
   * new preprocessor directive #!defenv ID=ENVVAR, define an ID to the value of an environment variable with the name ENVVAR, also possible to use #!defenv ENVVAR   * new preprocessor directive #!defenv ID=ENVVAR, define an ID to the value of an environment variable with the name ENVVAR, also possible to use #!defenv ENVVAR
   * new event_route[core:pre-routing], executed before running config script for SIP messages, if received from the network     * new event_route[core:pre-routing], executed before running config script for SIP messages, if received from the network  
 +  * add $envn(name) - return environment variable as int number
 +  * add selval(evalexpr, valexp1, valexpr2) to return second or third parameter depending on first parameter evaluation
 +  * new core directive modparamx() alternative, where all its parameters are evaluated for config script variables
  
-==== Parameters ====+==== Config parameters ====
  
   * add sip_parser_log core parameter to log parser error with a certain log level   * add sip_parser_log core parameter to log parser error with a certain log level
Line 390: Line 528:
   * add local_rport parameter, similar to add_local_rport() but set globally   * add local_rport parameter, similar to add_local_rport() but set globally
   * new parameter async_workers_group to define groups of async worker processes   * new parameter async_workers_group to define groups of async worker processes
 +  * new parameters to enable waiting for child one worker initialization
  
-==== Functions ====+==== Internal functions ====
  
   * add utility helper functions to search variants of str in another str   * add utility helper functions to search variants of str in another str
   * add parser wrapper function to parse str header name   * add parser wrapper function to parse str header name
   * add kemi function hdr.match_content(hname, op, mval, hidx)   * add kemi function hdr.match_content(hname, op, mval, hidx)
 +  * add helper function to parse all contact headers
 +  * add functionality to delegate sip processing to a group of workers
   * add tcp helper function to send data over ws/wss connection   * add tcp helper function to send data over ws/wss connection
   * add utility helper function to search a token before an end pointer   * add utility helper function to search a token before an end pointer
 +  * add xavu_serialize_fields function
 +  * add functions to shm-duplicate str in a block
 +  * add module version control function
  
 ==== Memory Managers ==== ==== Memory Managers ====
  
-  *  define mem_counter struct in meminfo for all memory managers+  * define mem_counter struct in meminfo for all memory managers 
 +  * synchronize tlsf malloc with upstream version 3.1 
 +  * debugging output improvements
  
 ==== Architecture ==== ==== Architecture ====
Line 407: Line 553:
   * 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
   * add CAP_CHOWN capability to Kamailio systemd service files to allow chown needed for some modules   * add CAP_CHOWN capability to Kamailio systemd service files to allow chown needed for some modules
 +  * add a global flag in shared memory to detect server shutdown
 +  * relocation and refactoring on core ip addr handling code
 +  * Zero terminate str copies made with pkg_str_dup() and shm_str_dup()
 +  * Refactor tcp flags to enum, add more typedefs
 +  * Improvements in DNS support for NAPTR records
 +  * improve signal handling from system
 +  * increase network interface handling buffer from 8kb to 32kb, improve logging
 +  * improve automatic binding for IPv6 addresses
 +  * new option BUILD_NEW_LOCAL_VIA to recreate the local via
 +  * improve to tag suffix generation to use more input values for randomness
  
 ==== kamailio.cfg ==== ==== kamailio.cfg ====
Line 417: Line 573:
   * pdbt: use more relaxed permission when creating files   * pdbt: use more relaxed permission when creating files
   * misc/tools/kemi: lua tools useful for using Kamailio with KEMI Lua scripts   * misc/tools/kemi: lua tools useful for using Kamailio with KEMI Lua scripts
 +  * support for fuzzing integration based on oss-fuzz
 +  * use github worker for continous integration instead of travis-ci
  
 ==== kamcmd ==== ==== kamcmd ====
Line 422: Line 580:
 ==== kamctl ==== ==== kamctl ====
  
-  * aaa+  * option for rpc command to replace tokens in parameters 
 +  * use tm.t_uac_wait_block rpc for ping command 
 +  * added srv debug subcommand to control server debug level
  
 ==== kamdbctl ==== ==== kamdbctl ====
Line 428: Line 588:
   * proper id format for dbtext records   * proper id format for dbtext records
   * increased contact_addr_len entity to 255, e.g. for IMS use-cases   * increased contact_addr_len entity to 255, e.g. for IMS use-cases
 +  * db scheme updates to usrbloclist and topos modules
  
 ==== kamcli ==== ==== kamcli ====
  
features/new-in-5.5.x.txt · Last modified: 2021/05/05 16:22 by miconda