User Tools

Site Tools


This is an old revision of the document!

Kamailio SIP Server (SER) - New Features in v5.0.x

Previous stable version was 4.4.x (released on March, 2016), see what was new in that release at:

This is a draft of new features added in v5.0.x, manually updated, thus not always synchronized with what is new in source code repository.

New Modules







New in Old Modules


  • ability to execute routing blocks written directly in Lua


  • ability to execute routing blocks written directly in Python


  • added option to use SHA-256 encryption algorithm for digest authentication
  • add an option to include an Authentication-Info header in the response to a successful authentication


  • new config variable replace_query
    • Tells if the ODBC replace query is supported by the DB odbc driver
    • Just like insert, but update the row if it exists otherwise insert


  • new rpc function: dlg.terminate_dlg
    • terminates a single dialog, identified by a Call-ID.
    • terminates an ongoing dialog by sending BYE in both directions


  • single digit is now valid in function enum_query
    • is_e164() returns true for a single digit (previously two digits)


  • support for tagging connections and select for sending based on tag
    • evapi_set_tag(tname)
    • evapi_multicast(data, tag)
    • evapi_async_multicast(data, tag)
    • evapi_unicast(data, tag)
    • evapi_async_unicast(data, tag)


  • new core stats
    • RPC request: stats.get_statistics all
    • requests by method
      • core:rcv_requests_invite
      • core:rcv_requests_cancel
      • core:rcv_requests_ack
      • core:rcv_requests_bye
      • core:rcv_requests_info
      • core:rcv_requests_register
      • core:rcv_requests_subscribe
      • core:rcv_requests_notify
      • core:rcv_requests_message
      • core:rcv_requests_options
      • core:rcv_requests_prack
      • core:rcv_requests_update
      • core:rcv_requests_refer
      • core:rcv_requests_publish
    • replies by status code
      • core:rcv_replies_1xx
      • core:rcv_replies_18x
      • core:rcv_replies_2xx
      • core:rcv_replies_3xx
      • core:rcv_replies_4xx
      • core:rcv_replies_401
      • core:rcv_replies_404
      • core:rcv_replies_407
      • core:rcv_replies_480
      • core:rcv_replies_486
      • core:rcv_replies_5xx
      • core:rcv_replies_6xx


  • added parameters to control connect and command timeouts
    • connect_timeout (int)
    • cmd_timeout (int)


  • new module parameter `force_delete`
    • disabled by default
    • enabling this parameter will delete expired presentity records without updating watchers (no NOTIFY)
  • new module parameter `retrieve_order_by`
    • default value is “priority”
    • Used to set the order-by of the db query for fetching the presence records


  • new function pv_evalx(dst, fmt)
    • The fmt string is evaluated twice for exiting variables, the result is stored in dst variable.


  • Add expiry value to the xavp.
    • handy if Kamailio for some reason changes the expiry value (min, max or variations caused by expiry_range)


  • new 'unidirectional' flag in Sipwise rtpengine
    • allows kernelization of one-way streams


  • new module parameters:
    • onhold_bflag, if bflag is set skips parsing SDP and sets onhold
    • server_address, force Contact header address in replies
  • sca_call_info_update(): new to/from URI parameters
    • skips parsing message for To/From header values and uses URI values from parameters


  • new config variable $sdp(body)
    • returns the sdp body as raw string
  • new optional parameter to sdp_remove_line_by_prefix script function
    • sdp_remove_line_by_prefix(string [, mtype])
    • mtype can be provided to apply the operations only to the streams matching m=mtype


  • new pseudo variables
    • $pcv(orig) - returns orig-ioi from P-Charging-Vector header
    • $pcv(term) - returns term-ioi from P-Charging-Vector header

New in Core

  • print tos value if socket option for it cannot be set
  • skip unusable network interfaces
    • no IP addr associated
    • address family AF_PACKET


A new framework (named kemi - kamailio embedded interface) was added, allowing to writing routing blocks in embedded languages such as Lua, JavaScript or Python:


  • log_prefix_mode
    • If set to 1, then the log prefix is evaluated before/after each config action
    • needs to be set when the log_prefix has variables that are different based on the context of config execution
      • e.g., $cfg(line))
  • latency_cfg_log
    • Log message with the duration of executing request route or reply route is printed to syslog
  • mcast
    • Specify interface to join multicast group for multicast listen address


Memory Managers



  • rr module parameter enable_full_lr now defaults to 0
  • no more lr=on in Record-Route
  • use t_precheck_trans() to catch retransmissions faster
  • drop silently traffic from scanners
  • added option to block 401/407 from downstream




  • now interacts with Kamailio via a fifo file using jsonrpcs module
    • CTLENGINE is RPCFIFO by default
    • RPCFIFOPATH has to be set to the fifo file created by jsonrpcs module
  • kamctl rpc command is available for sending raw jsonrpc commands
    • see documentation for all RPC methods
    • the prefix s: or i: can be used to enforce type string or int for parameters
      • by default forwards number cli parameters as number type in jsonrpc commands
  kamctl rpc jsonrpc.echo abc 123
  kamctl rpc jsonrpc.echo s:abc i:123
  kamctl rpc jsonrpc.echo s:888 i:123
  kamctl rpc core.version


  • new command line tool
  • kamcli is aiming at being a modern and extensible alternative to the shell script kamctl
  • communicates to Kamailio via jsonrpcs module
features/new-in-5.0.x.1488187130.txt.gz · Last modified: 2017/02/27 10:18 by miconda