This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
features:new-in-devel [2016/02/28 15:02] miconda |
features:new-in-devel [2019/07/30 13:19] henningw add tm and async changes |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Kamailio SIP Server | + | ====== Kamailio SIP Server - New Features in Devel Version ====== |
- | **Current devel version will be numbered | + | **Current devel version will be numbered |
<fc #0000FF> | <fc #0000FF> | ||
- | **Previous devel version was 4.3.x (released on June, 2015), see what was new in that release at:** | + | **Previous devel, current stable, |
</fc> | </fc> | ||
- | * <fc # | + | * <fc # |
<fc # | <fc # | ||
Line 12: | Line 12: | ||
===== New Modules ===== | ===== New Modules ===== | ||
- | ==== cfgt ==== | + | ==== app_lua_sr |
- | | + | Old **sr** module exported to Lua scripting. |
- | | + | |
- | ==== crypto ==== | + | * https:// |
- | * cryptographic functions for use in config file | + | ==== kemix ==== |
- | * http:// | + | |
- | ==== http_async ==== | + | KEMI specific extensions. |
- | * async http queries using curl library | + | * https://www.kamailio.org/ |
- | * http:// | + | |
- | ==== http_client | + | ==== rtp_media_server |
- | * http queries using curl library | + | Embedded RTP and media processing functionalities for Kamailio, like playing media or bridging in a B2BUA manner. Includes support for different codecs (including Opus). |
- | * http:// | + | |
- | ==== log_custom ==== | + | * https:// |
- | * send log messages to custom backend | + | ==== secfilter ==== |
- | * http:// | + | |
- | ==== log_systemd ==== | + | Filters to allow/block using whitelists/ |
- | * send log messages to systemd journal | + | * https://www.kamailio.org/ |
- | * http:// | + | |
- | ==== smsops | + | ==== xhttp_prom |
- | * sms operations | + | Generates suitable metrics |
- | * http:// | + | |
- | ==== statsc ==== | + | * https:// |
- | * statistics collector providing reports | ||
- | * http:// | ||
- | ===== New in Old Modules ===== | + | ===== New in existing |
- | ==== acc ==== | + | ==== acc_json |
- | * new **acc_prepare_always** parameter | + | Add support for leg_info fields |
- | ==== acc_radius ==== | + | |
- | + | ||
- | | + | |
- | + | ||
- | ==== app_lua ==== | + | |
- | + | ||
- | * export registrar.lookup_to_dset to app_lua interface | + | |
- | * export many sdpops functions to LUA | + | |
==== async ==== | ==== async ==== | ||
- | * module timer processes based on workers parameter | + | New functionality to sleep for milli-seconds and also schedule a asynchronous route execution with milli-seconds delay |
- | ==== carrierroute ==== | + | * https:// |
+ | * https:// | ||
- | * addind db_load_description parameter | + | ==== cnxcc ==== |
- | * toggle on/off loading in memory the description column in the carrierroute/ | + | |
- | ==== cdp ==== | + | Added a new param in the cnxcc_set_max_credit() function to set the connect cost of a call. |
- | * added class of auth session to know more info about auth session - for example: ims_qos can now report Rx session for Reg or for media | + | * https://www.kamailio.org/docs/ |
- | * CER/CEA retry if send/receive FD disappeared | + | |
- | * evaluate the supported_vendor_id-AVP during CER/CEA | + | |
- | * load balancing timer has millisecond resolution | + | |
- | ==== cfgutils | + | ==== dialog |
- | * sleep() | + | Add new rpc commands dlg.list_match |
- | ==== cnxcc ==== | + | * https:// |
+ | * https:// | ||
- | * locks re-entrant for simplifying | + | Add new parameter keep_proxy_rr to loop BYE through proxy. When in use, sending locally generated in-dialog requests will loop back to the proxy with a proper Record-Route header, including any parameters. |
- | ==== corex ==== | + | * https:// |
+ | ==== dispatcher | ||
- | * added file_read() and file_write() | + | * Add new rpc functions, to add and remove destinations to the in-memory dispatcher list. |
- | * file_read(fpath, | + | * https:// |
- | * file_write(fpat, content) - write content of parameter | + | * https:// |
- | * added corex.pkg_summary command | + | * Add a new flag 16 (1<<4) to the cfg syntax for destinations with host not having A/AAAA record. |
- | * dump pkg usage summary to syslog for a specific pid or process index | + | * https://www.kamailio.org/ |
- | < | + | * Add a new parameter reload_delta to limit the frequency of rpc reload commands to try to avoid races of parallel reload operations. |
- | kamcmd corex.pkg_summary pid 12345 | + | |
- | | + | |
- | </code> | + | |
- | ==== ctl ==== | + | ==== dialplan |
- | * increased default buffers size for rpc responses | + | Add reload_delta parameter to make the rate limit of maximum allowed dialplan reload configurable. |
- | * binrpc_max_body_size = 32 | + | |
- | * binrpc_struct_max_body_size = 8 | + | |
- | ==== db_text ==== | + | * https:// |
- | * support 'order by' in raw query | + | ==== evrexec ==== |
- | ==== debugger ==== | + | Added rpc command evrexec.run to run an event_route: |
- | * add support for static and dynamic, module specific, logging facility | + | * https:// |
- | * new dbg_sip_msg() config function, which prints how the sip message would look like if it were to be sent out at that point in config | + | |
- | ==== dialog | + | ==== imc ==== |
- | * re-entrant mutex for dialogs hash table slots | + | Extend module functionality significantly, |
- | * run event_route[dialog: | + | |
- | * make dialog context available in event route tm: | + | |
- | * new parameter db_skip_load | + | |
- | ==== dispatcher | + | ==== ims_ipsec_pcscf |
- | * relative weight distribution added - it is possible | + | * Add IPv6 support |
- | * added new probing_mode=3 to always probe flagged gateways | + | * Additional initial TCP support and support for multiple TCP connections were added. |
+ | * https:// | ||
- | ==== dmq_usrloc | + | ==== ims_registrar_pcscf |
- | * implement deleted contact replication | + | Add support for multiple TCP connections |
- | * new param sync - control sync' | + | |
- | * default 1 - require sync' | + | |
- | ==== domain ==== | + | * https:// |
- | * allow ' | + | ==== ims_usrloc_pcscf ==== |
- | ==== drouting ==== | + | Add support for multiple TCP connections to the ims_usrloc_pcscf module. |
- | * support for symbols "# | + | * https:// |
- | ==== evapi ==== | + | ==== ims_isc |
- | * implemented receive buffering per connected client | + | Add functionality to a add-on to third party registration in S-CSCF. The feature assumes two new flags in HSS database, where additional to the " |
- | ==== htable ==== | + | * https:// |
- | * improved error message when loading from database | + | ==== ims_usrloc_scscf ==== |
- | * htable.dump - added the type of the value to the result | + | |
- | ==== ims_auth ==== | + | Add-on to third party registration in S-CSCF to the ims_usrloc_scscf module. |
- | * added option to set destination host for MAR requests | + | * https:// |
- | * allow different qop setting for INVITE | + | |
- | ==== ims_charging | + | ==== ims_registrar_scscf |
- | * added Multiple-Services Indicator | + | Add-on to third party registration in S-CSCF to the ims_registrar_scscf module. |
- | * allow ro session id to be used from cfg file as avp | + | |
- | ==== ims_qos ==== | + | * https:// |
- | * make Release-Reason from QoS configurable | + | ==== mqueue ==== |
- | * option to add Extra-Header, | + | |
- | * added Rx-Specific-Action AVPs to work with some PCRFs | + | |
- | * new mod param terminate_dialog_on_rx_failure - terminate_dialog_on_rx_failure this parameter determines if a dialog is torn down if a media Rx session is terminated | + | |
- | ==== ims_registrar_pcscf ==== | + | Add a new rpc command mqueue.fetch |
- | * added functionality to unREGISTER a contact, eg. based on a failed network ping | + | * https://www.kamailio.org/ |
- | * set received host, proto and port when searching for pcontact | + | |
- | ==== ims_usrloc_scscf | + | ==== pv ==== |
- | * added counters for reporting hashtable usage - collision slot count for contacts and subscriptions | + | * New pseudo-variable $rcv(key), available inside event_route[core: |
- | * implemented overwrite oldest contact behaviour | + | * https:// |
+ | * New pseudo-variable $TV(Fn) - formatted time with microseconds YYYY-MM-DD HH: | ||
+ | * https:// | ||
- | ==== janssonrpc-c | + | ==== janssonrpcc |
- | * allow null json error property | + | Add new parameter " |
- | ==== jsonrpc-c ==== | + | |
- | + | ||
- | | + | |
- | + | ||
- | ==== kazoo ==== | + | |
- | + | ||
- | * support alternative federated exchanges | + | |
- | * allow multiple simultaneous servers | + | |
- | * add async query feature - suspend the transaction on send and continue on return or timeout | + | |
==== kex ==== | ==== kex ==== | ||
- | * support VERSION_NODATE and VERSION_DATE for reproducible builds | + | New rpc command mod.mem_statsx, |
- | * per module memory statistics when in debugging mode | + | |
- | * return details about memory used by each module via rpc commands | + | |
- | ==== lcr ==== | + | * https:// |
- | * added priority_ordering module parameter - allows ordering of matched gateways only by priority and weight | + | ==== presence ==== |
- | ==== mtree ==== | + | A new rpc command presence.updateWatchers |
- | * allow for larger (max 64) prefix values to be used (e.g., case of uuid, ipv6) | + | * https://www.kamailio.org/ |
- | ==== nathelper | + | ==== registrar |
- | * support filter contacts by server_id | + | New parameter lookup_filter_mode to control what filters should be applied for lookup(...) operations. Filter values are specified via filed of xavp_cfg. |
- | ==== p_usrloc ==== | + | * https:// |
- | * added path and +instance support | + | ==== rr ==== |
- | ==== pdb ==== | + | Add new return value for preloaded route set to loose_route(). Now it is possible to detect from the script if a preloaded Route header was removed that pointed at the local proxy. |
- | * new protocol between pdb_server and kama pdb module | + | * https:// |
- | ==== permissions | + | ==== rls ==== |
- | * match trusted rules considering priority and regexp over r-uri | + | Add a new rpc command rls.update_subs. |
- | * two new columns to set priority of the rule as well as regular expression matching over r-uri | + | |
- | ==== presence_xml ==== | + | * https:// |
- | * added optional param force_dummy_presence | + | ==== rtpengine ==== |
- | * module parameter to send empty presence notify body when there isn't any record in presentity | + | |
- | ==== pua_reginfo ==== | + | * Introduce additional hashing algorithm SHA1 over callid for better distribution among nodes. |
+ | * https:// | ||
+ | * Add play_media() and stop_media() functions, also includes addition of the $media_duration pseudo-variable, | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * Add start_forwarding() and stop_forwarding() functions. | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * Add support for trickle ICE SDP fragments, add support for explicit load balancing options and add support for via-branch=extra option. | ||
- | * added support for custom params as contact parameters (e.g. < | + | ==== sdpops ==== |
- | ==== pv ==== | + | Added new sdp_get_ddress_family() function to extract the IP address family from the SDP body |
- | * **pv_var_to_xavp** script function to copy $var values to $xavp | + | * https:// |
- | * transformation to remove all non-numeric parts of a string | + | |
- | * add auth digest pseudo variables | + | |
- | * $adn - auth nonce | + | |
- | * $adc - auth cnonce | + | |
- | * $adr - auth response | + | |
- | * $ado - auth opaque | + | |
- | * pv_var_to_xavp() - copy script variables values to xavps | + | |
- | * added $utime and $utimef pv's to retrieve time in UTC | + | |
- | * $utime is the UTC equivalent to $time for localtime | + | |
- | * $utimef is the UTC equivalent to $timef for localtime | + | |
- | ==== registrar | + | ==== siptrace |
- | * add **contact** | + | Add transaction |
- | * set xavp_rcd on registered() | + | |
- | * export lookup_to_dset with uri to config | + | |
- | * allow registered() in any route | + | |
- | ==== rr ==== | + | * https:// |
- | * add enable_double_rr_always option | + | ==== sl ==== |
- | ==== rtppengine ==== | + | * Add new pseudo-variables: |
+ | * https:// | ||
+ | * Add configuration parameter to add path and flags to redirected contacts. | ||
+ | * https:// | ||
- | * new fifo command, namely nh_ping_rtpp, | + | ==== sqlops ==== |
- | * try the next media relay available if the limit reached reply is received | + | |
- | * unset " | + | |
- | * new read_sdp_pv parameter - this parameter allows to specify a script var or AVP for rtpengine to get the SDP from, instead of the SIP message body | + | |
- | * hash table to keep the selected nodes | + | |
- | * added rtpengine_allow_op modparam - when the param is enabled, allow current sessions to finish and deny new sessions for manually deactivated rtpengine nodes via kamctl i.e. " | + | |
- | ==== sipcapture ==== | + | Add a new parameter connect_mode, |
- | * insert From URI domain, To URI domain and request URI domain to database | + | * https:// |
- | * added homer5 functionality to sipcapture module | + | |
- | * accept a list of headers for callid_aleg_header | + | |
- | * added async support for storing in asynchronous mode if supported by database backend | + | |
- | ==== sst ==== | + | ==== textops |
- | * add **refresher** parameter in order to follow RFC 4028 | + | Add a new function regex_substring(itext, |
- | ==== statsd ==== | + | |
- | + | ||
- | | + | |
- | + | ||
- | ==== tcpops ==== | + | |
- | + | ||
- | * keepalive functions enabled on BSD | + | |
- | * add tcp_conid_state function to check connection state | + | |
- | + | ||
- | ==== textopsx ==== | + | |
- | + | ||
- | * if no param is given to keep_hf(re), | + | |
==== tls ==== | ==== tls ==== | ||
- | * option to match TLS client config profile based on server_id | + | * Add support for unique identifier PVs and select: $tls_peer_subject_uid and $tls_my_subject_uid, |
- | * server_id can be any string that uniquely identifies a client config profile, overriding the attempt to match on ip:port (+sni). This makes it easier to select the desired config profile, because the port is hard to guess for stream connections | + | * https://www.kamailio.org/ |
- | * prameter xavp_cfg has to be enabled | + | * https:// |
+ | * Add workaround for new OpenSSL 1.1, preloaded library. This is a workaround for OpenSSL >= 1.1 which uses internal locking | ||
==== tm ==== | ==== tm ==== | ||
- | * use xavps for t_load_contacts/ | + | * Added t_get_status_code() function to return |
- | * execute | + | * https:// |
- | * enable drop in onsend_route for tm replies | + | * Add configuration parameter |
- | * support | + | * https:// |
+ | * Removal of obselete delete_timer parameter - it was not used since a long time | ||
==== tmx ==== | ==== tmx ==== | ||
- | * added $T(ruid) - return current branch ruid attribute | + | Add a new function t_drop([rcode]) |
- | ==== tsilo ==== | + | |
- | + | ||
- | | + | |
- | * t_store(...) accepts uri as parameter | + | |
- | * ts_append_to() can take uri as parameter | + | |
- | * removed usrloc dependency | + | |
- | * added use_domain parameter | + | |
==== uac ==== | ==== uac ==== | ||
- | * uac.reg_dump returns an array rpc result | + | * New modparam reg_gc_interval, |
+ | * https:// | ||
+ | * The uac_replace_from/ | ||
+ | * The uac_replace_from/ | ||
- | ==== usrloc | + | ==== websocket |
- | * support filter by server_id at get_all_ucontacts | + | Added check mechanism based on tcp connection |
- | * new module option to support preload using server_id as filter | + | |
- | * new matching mode: CALLID_ONLY | + | |
- | * new param to skip non-local location record - yf set, kamailio will skip record if socket value doesn' | + | |
- | ==== utils ==== | + | * https:// |
- | * added optional parameter for setting additional http headers | + | ===== New in Core ===== |
- | * option to trim leading and trailing white spaces | + | |
- | * new parameter http_response_mode to control what response part is returned | + | |
- | * if http_response_mode=0, only the first line is returned | + | |
- | * if http_response_mode=1, all the response is returned | + | |
- | ==== websocket | + | ==== Command line arguments |
- | * added support for SIP message fragmentation | + | Adding |
- | * websocket connections are created with a BUF_SIZE (64K) buffer used for concatenating frames | + | |
- | * continuation frames (fragments) are supported for the SIP sub-protocol | + | |
- | ==== xlog ==== | + | * add domain aliases with --alias |
+ | * set advertised address to listen sockets speficied with -l socket/ | ||
+ | * set server id with --server-id | ||
+ | * set a subst, substdef or substdefs preprocessor expression with --subst, --substdef or --substdefs | ||
- | * convenience functions for various log levels | + | More information: |
- | * xinfo(), xnotice(), xwarn(), xerr(), xbug(), xcrit(), xalert() | + | |
- | + | ||
- | ===== New in Core ===== | + | |
==== Interpreter ==== | ==== Interpreter ==== | ||
- | * new feature | + | Many extensions |
- | * cast operator (int) converts hex strings as well - in addition to dec string | + | |
- | * name of the structure exported by a module can be prefixed with module name | + | |
- | * added framework to allow replacing logging to syslog | + | |
- | * this enables a module to replace all logging to syslog with another logging mechanism | + | |
- | * it is not enabled when log_stderror=yes or the system is detected as __SUNPRO_C | + | |
==== Parameters ==== | ==== Parameters ==== | ||
- | * new parameter | + | * New global |
- | * could help saving cpu usage on vms with immediate interruptions triggered | + | * https:// |
- | * added parameters log_engine_type and log_engine_data | + | * Introduce new configuration parameter tcp_accept_haproxy parameter. When active, inbound TCP connections are expected |
- | * can be used to specify what logging engine to be used and its initialization data | + | * https:// |
- | * see readme of log_custom module for a same of usage | + | * Added latency_limit_cfg global parameter to print execution time for configuration script only if it exceeds this value. It is printed to latency_cfg_log level, another |
+ | * https:// | ||
+ | * https:// | ||
==== Functions ==== | ==== Functions ==== | ||
+ | |||
+ | * New rpc command core.psa - to print attributes stored in process table, similar to core.psx, but also prints the rank and status fields | ||
==== Memory Managers ==== | ==== Memory Managers ==== | ||
- | * display | + | Refactoring and unification of memory allocation error logging infrastructure. Completed in the core, major modules were migrated as well. The #define are called PKG_MEM_ERROR, |
- | * shared | + | |
- | * private | + | ==== Architecture ==== |
+ | |||
+ | * Extend internal IPv4 and IPv6 parsing functions | ||
+ | * Create Contacts header with path vector as Route header. When Kamailio is functioning as a registrar sends a 302 redirect, the registered contacts are sent inside the Contact header. If a contact as a path vector, that path should become a Route header in the INVITE | ||
+ | * Add DB_TABLE_VERSION_ERROR(table) error helper #define to DB1 API and migrate (almost) all modules that use version tables to it. This unify the logging and error behavior | ||
==== kamailio.cfg ==== | ==== kamailio.cfg ==== | ||
- | | + | Changes to the default kamailio.cfg |
- | * skip learning mode, advertised media ip is routable | + | |
+ | * detect sipvicious as scanner | ||
+ | * do sanity check for sip responses | ||
+ | * no connect for forwarding requests withing dialog | ||
+ | | ||
+ | * explicitely set the tcp/tls connections upper limits | ||
===== Tools ===== | ===== Tools ===== | ||
+ | |||
+ | Added tool to generate code for KEMI modules to misc/ | ||
==== kamcmd ==== | ==== kamcmd ==== | ||
- | |||
- | * support VERSION_NODATE and VERSION_DATE for reproducible builds | ||
==== kamctl ==== | ==== kamctl ==== | ||
- | * added mongodb schema files | + | * Added subcommand to print the server version using rpc command: kamctl srv version |
- | * custom json format specifying structure of collections/ | + | * Added subcommand to delete older expired records from database table: kamctl ul dbclean [< |
- | * version-create.mongo - a script with mongo commands | + | * Added acc initdb command |
+ | |||
+ | ==== kamdbctl ==== | ||
+ | |||
+ | * Added verification before database reinit | ||
+ | * Warn that drop command will indeed drop the database. | ||
+ | |||
+ | ==== kamcli ==== |