Current devel version will be numbered 6.0.0 and it is planned to be released in late 2024 or early 2025.
Previous devel, current stable, version was 5.8.x (released during the spring of 2024), see what was new in that release at:
This is a draft of new features added in devel version, manually updated, thus not always synchronized with what is new in source code repository.
The increment of the first version number reflects several important updates,
among them: multi-threaded option for UDP receiving, option for specifying a range
of ports to listen to, support for expressions with variables for most of the module
functions parameters, support to use cmake
to compile and install Kamailio.
- enhanced version of IMS QoS implementatio
- https://www.kamailio.org/docs/modules/devel/modules/ims_qos_npn.html
- HTTP2 server module implementation
- https://www.kamailio.org/docs/modules/devel/modules/nghttp2.html
- presence support for Device FeatureKey Synchronization
- https://www.kamailio.org/docs/modules/devel/modules/presence_dfks.html
- evaluation of template files with config variables
- https://www.kamailio.org/docs/modules/devel/modules/pvtpl.html
- htable storage for topology stripping (topos) module
- https://www.kamailio.org/docs/modules/devel/modules/topos_htable.htmlß
- initial support for free-threading Python
- removed of legacy modules
- initial support for free-threading Python
- exported
async_tkv_emit()
function - added parameter mode
- new function
auth_algorithm(...)
to dynamically override algorithm
- lock family functions got another optional key parameter to generate the hash id. See #3808 or cfgutils docs for details
- added dns_file modparam
- functions to manage iflags can get 0..63 parameter value
- new function forward_uac()
- added forward_uac_uri(vuri) function
- added $atkv(name) variable
- added busy timeout param to improve concurrency
- dropped support for dlg_flag parameter
- added dlg_mode parameter
- new function dlg_set_state(newstate) - set the state for a dialog
- added dlg_update_state() function
- algorithm DS_ALG_OVERLOAD set to 64 to be able to used as a flag
- new set of attributes for overload control (oc)-based routing (RFC7339)
- new flag 32 to not send ping to destination
- new rpc command dispatcher.oclist
- more fields to $dsg(...) related to overload control
- function to fetch by group id and uri
- exported api for aes128 functions
- added
ew
(end-with) operator for delete items functions - added
in
operator for rm functions
- function to do http request with method parameter
- new function http_client_request_v2pk(...)
- option to store http response headers
- added variable $httprhdr(name) - get response header value
- added http_client_response_headers_set(mode)
- added http_client_response_headers_clear()
- added Milenage, AES-128 (Rijndael) and auth_vector local generation
- new av_mode parameter
- function to set ims auth data
- added trust_bottom_via parameter
- improved TLS support in ipsec_forward()
- use the function with ports range for listen sockets
- added trust_bottom_via parameter
- added ignore_contact_rxproto_check
- made matching of username in contact conditional
- added PTR query support
- added modparam init_without_kafka
- added modparam log_without_overflow
- added modparam metadata_timeout
- exported statistics for total/err messages
- added interceptor for broker state
- expose access to pkg stats
- added forward support with path replacement
- added update/delete based on uniq
- made 'timeout' runtime configurable
- allow_register_include_port(), the permissions module got a new function, which extends a functionality for checking contacts (locations) allowed to be registered. With a newer function one has a possibility to include Contact URI port into this check. See #3846 or permissions docs for details.
- added
natnum
property, containing the nationally formatted number, to pv
- continue on one notify sending failure
- support as-feature-event
- use_uuid optional parameter to generate pres_id using libuuid via uuid module
$K(IP4)
and$K(IP6)
- support SDP style for address family- transformation to escape/unescape
cr
lf
- added
$sdp(m0:raw)
- get all lines of the first m= stream - aliased
$sdp(raw)
to$sdp(body)
- added
$sdp(m0:b:AS)
,$sdp(m0:b:RR)
and$sdp(m0:b:RS)
- added
$ctu
- return contact header uri - added
$cts
- contact header star status - new transformation
{s.rmhdws}
- new transformation
{s.rmhlws}
- support all spaces separator for
{s.select}
- added
xavp_xparams_explode(params, sep, xname)
- new variables for common escaped characters
- several new
$E...
variables for punctuation signs
- kamailio init will not fail if rabbitmq connection doesn't work. The module will try to reconnect when rabbitmq_publish() or rabbitmq_publish_consume() are called in the config.
- added flags processing on the daemon side
- added param write_sdp_pv_mode
- add "active" field to rtpengine.show as alternate of "disabled"
- disable aggressive redetection by default
- added timer to ping rtpengine instances
- export subscribe operation functions
- from_uri_avp to_uri_avp module parameters adding the possibility of define what is the URI value for To and/or From instead of the values coming from the SIP message.
- added contact_fallback parameter
- added $sdp(m0:rtp:port) - port of first media stream
- added $sdp(o:ip) - origin ip
- added $sdp(m0:rtcp:port) - rtcp port of first media stream
- added $sdp(c:af) - address family of first media connection
- function to parse path for sdp content
- new function to verify identity value with options
- use advertise address if set for trace mode 1 callbacks
- added parameter data_mode
-
sip_p_charging_vector() Once a new PCV has been generated by 'g' or 'f' the PCV cannot be changed again. The icid-generated-at parameter of a generated PCV will now be set to the sending interface IP address The function now returns a status value about what was done.
-
$pcv(status) New pseudo-variable parameter. Returns whether the PCV header was successfully parsed, deleted, newly generated or other. See #3929 or siputils for details.
-
added function is_sip()
-
added is_http() function
-
added function to trigger parsing all SIP headers
- added log_buf_size param for logging raw queries
- new connect mode to limit the amount of connections
- new variables to get active connection attributes
- $tcp(aconid), $tcp(ac_si), $tcp(ac_sp)
- new function subst_v(...)
- added msg_changed_route(rname)
- OpenSSL 3 support of provider keys (replaces ENGINE)
- new option to set the password for private key
- added key_password_mode modparam
- added cseq number field to uac_req structure
- compile define E2E_CANCEL_HOP_BY_HOP turned into modparam e2e_cancel_hop_by_hop
- new parameter headers_mode
- emit event route on cancel
- new function t_cell_append_branches(tindex, tlabel)
- made configurable the code and reason for generating timeout response
- reply_408_code and reply_408_reason params
- added ts_append_branches(uri)
- added reload_delta parameter
- added field for cseq number for $uac_req(...)
- exported two new functions for remote UAC registering/unregistering and rpc for registering
- export pkg stats
- new uptime statistics
- new xhttp_prom_tags parameter
- evaluate prefix for kemi functions
Modules considered obsolete and not maintained have been moved to:
The list of archived modules:
- auth_identity
- app_lua_sr
- app_sqlang
- app_mono
- db_cassandra
- osp
- print_lib
Should one still be needed, it can be copied in src/modules/
folder and then
compiled and installed as usual, provided it was still compiling it the previous
series 5.8.x.
- select - support for ws and wss inside select_ip_port()
- fixup helpers for functions with strings and output variable params
- dprint - include time in stderr json log
- new udp receiver mode - one multi-threaded process
- cfg socket struct - option to bind to a range of sockets
- fixup - many new helper functions
- improved URN parsing according to RFC8141
- new internal flags to skip adding received/rport in incoming via
- added support for socket names as command line parameter
- added possibility to set the structured log function
- option to skip auto-bind on ipv6 local link
- socket - added agname field to bind structure
- added agname to sockets list rpc command output
- udp - option to group multithreaded receivers by group
- allow '/' in database URL passwords
- added other 4xx reply error count stats
- replaced INT_PARAM => PARAM_INT
- added fixup-free functions to many exported functions by modules
- this enable using variables for their parameters
- added event_route[core:modinit-before]
- main - async framework to execute type-key-value events
- tcp - emit async type-key-value event for read error
- added SPDX identifiers to code files
- parameter to set async_tkv_evcb
- new core parameter
udp_receiver_mode
- turn UDP receiving to multi-threading for all listen sockets - added
agname
field to bind structure - per socket option to do UDP multi-threading receiving - new core parameter
async_tkv_gname
- specify the async group to processtype-key-value
events - new core parameter
async_tkv_evcb
- name of event route or kemi callback fortype-key-valye
processing
- CMake compilation and installation support
- multi-threaded UDP receiving mode
- several shared memory structures no longer destroyed individually at shut down
- internal libraries are directly linked to the core
- load
dlgs
module to get dialog stats via rpc - example for
udp_reciever_mode
parameter - do record route for
REFER
- added
tcp_accept_iplimit
config example - set
tls_threads_mode
to 2
- support to compile and install with cmake
- host/port configurable for root user connections
- support for tcp transport for jsonrpc
- cmd_pipelimit: command to reset the pipe
- cmd_acc: provide rate_group parameter for rates generate command
- cmd_acc: added command to list missed calls records
- cmd_acc: added command to print acc reports
- cmd_acc: added report for top destinations and original destinations
- cmd_acc: new command method-stats to print sip methods statistics