User Tools

Site Tools


This is an old revision of the document!

Kamailio SIP Server (SER) - New Features in 5.2.0

Previous stable version was 5.1.x, 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.

New Modules





New in Old Modules


  • use acc.time_mode to save cdrs in gmt time


  • LUAJIT variable to build agains LuaJIT compiler


  • implemented rpc command to list kemi functions
    • kamctl rpc app_python.api_list
  • rpc command to reload the routing script


  • rpc command cfg.get can accept only the group name to list all its vars


  • functions to manage extended flags
    • setxflag(idx), resetxflag(idx), isxflagset(idx)
    • idx can be between 0 and 63
  • added set_send_socket() and set_recv_socket()
    • options to set send and recv sockets with parameters containing variables
  • added set_source_address() function


  • create projection field to set the list of returned column


  • added function dlg_db_load_callid(val)
    • load dialog from database based on callid parameter
  • added h_id_start and h_id_step parameters
    • allow to control how internal dialog hash id is generated to avoid overlapping values across many instances of kamailio
  • added dlg_db_load_extra() function
    • load dialogs from database that are not yet in memory of current kamailio instance


  • add methoded to reinit state for all destinations in group
  • allow 'all' to update all destinations in group via RPC
  • added ds_list_exists() as alias to ds_list_exist()


  • support for as NATed source


  • new transformation to access json fields
  • new function json_get_string() to return string value without quotes


  • allow variable for flags parameter of fix_nated_sdp(), add_rcv_param(), nat_uac_test()


  • new function phonenum_match_cn(…)
    • match a phone number within a specific country provided by country code two letter


  • dmq integration - replication of presentity updates over DMQ
    • adds ruid column for matching across cluster
    • new parameter enable_dmq


  • added pua.send_publish rpc command
    • send a PUBLISH request without waiting for response


  • new parameter force_send_socket
    • if set to 1, the socket is also forced for single rr


  • added aggressive_redetection param
  • setting tos value for the control commands - new parameter “control_cmd_tos”
  • added support for DTLS transports - added ability to explicitly request DTLS transports:
  • explicitly handle new option flags (transcoding)


  • added function to get connection id based on target host:port
    • tcp_get_connid(hostport, pvname)
    • connection id is set in pvar paraemter


  • added support for OpenSSL engine and private keys in HSM
    • add support for OpenSSL engine and loading private keys from HSM
    • for when kamailio is a TLS edge proxy and needs to use HSM
    • currently we initialize the engine in worker processes as PKCS#11 libraries are not guaranteed to be fork() safe
    • new config params
      • engine: name the OpenSSL engine
      • engine_config: an OpenSSL config format file used to bootstrap engines
      • engine_algorithms: list of algorithms to delegate to the engine
    • tested with Gemalto SafeNet Luna (AWS CloudHSM) with RSA and EC private keys TLSv1.2 and PFS cipher suites


  • new function msg_set_buffer(…) to kemi framework
  • is_audio_on_hold() returns hold type
    • 1 - RFC2543 hold type (the connection IP is set to null IP)
    • 2 - RFC3264 hold type (inactive or sendonly attr)
  • added function append_body_part_hex(…)
    • add a new part to the body, with its content provided in hexa (it is converted to decimal before appending)


  • make processing of event routes for local requests reentrant
  • rpc tm.t_uac_start option to work with From and To headers only


  • added t_flush_xflags() function


  • partition column name can be set via modparam
  • new parameter rm_expired_delay - set how many seconds to delay the removal of an expired record (DB_ONLY mode)
  • execute cleanup by server_id

New in Core

  • new module exports interface
    • unified from Kamailio and SER module exports interfaces
  • locking - added api functions for recursive lock sets
  • added xflags field to sip_msg_t - holds extended flags - 64 new flags in addition to the old 32 flags


  • kemi - more core functions exported to kemi framework
  • kemi - added KSR.is_method_in(“mflags”)
    • check if current method matches one listed in the flags
    • flags are: I (INVITE), A (ACK), B (BYE), C (CANCEL), R (REGISTER),


  • KSR.is_method_in(“IABC”)
  • kemi - renamed KSR.drop() to KSR.set_drop()


  • new parameters to control the size of pv cache
    • pv_cache_limit - the limit how many pv declarations in the cache after which an action is taken. Default value is 2048
    • pv_cache_action - specify what action to be done when the size of pv cache is exceeded. If 0, print an warning log message when the limit is exceeded. If 1, warning log messages is printed and the cache systems tries to drop a $sht(…) declaration. Default is 0
  • aliased global param ip_free_bind to ip_nonlocal_bind - match better with linux system control option
  • new parameter kemi.onsend_route_callback
    • allow setting the name of the function to be called by kemi framework as equivalent of onsend_route {}
    • default value: ksr_onsend_route
    • set to empty string or “none” to skip the execution of this kemi callback
  • new parameter kemi.reply_route_callback
    • set the name of kemi callback function to be executed on receiving a sip reply (equivalent of reply_route)
    • default: ksr_reply_route
    • set to empty or “none” to skip execution of this callback
  • new parameter route_locks_size
    • if set, kamailio creates a group of recursive locks used to sync on execution of request_route and reply_route based on hashing ID of Call-ID header. In other words, if a message has triggered the execution of request_route or reply_route, any other message with the same Call-ID waits until the other one finishes the execution.
  • new parameter kemi.event_route_callback
    • set the name of kemi function to be executed for core event route equivalent
    • default value is not set (no callback function name). If set to “none”, it is also not executed.
    • callback function receives a string parameter with the name of the event
    • execute kemi event callback for “core:worker-one-init”


  • core functions exported to kemi interface

Memory Managers



  • added log_prefix parameter to print call-id, cseq, message type during SIP message processing
  • do not relay to foreign network if auth is not enabled




  • default PID_FILE set to /var/run/kamailio/
  • kamdbctl - remove not working db migrate command


  • support to generate tls.cfg from database table
  • packaged for debian and ubuntu distributions

Testing Framework

features/new-in-5.2.x.1543303651.txt.gz · Last modified: 2018/11/27 08:27 by miconda