This is an old revision of the document!
First release in this series is numbered 4.4.0, released on March 30, 2016. Previous version was 4.3.x (released on June 10, 2015), see what was new in that release at: * http://www.kamailio.org/wiki/features/new-in-4.3.x ===== New Modules ===== ==== cfgt ==== * reports config execution for unit test evaluation * http://kamailio.org/docs/modules/devel/modules/cfgt.html ==== crypto ==== * cryptographic functions for use in config file * http://kamailio.org/docs/modules/devel/modules/crypto.html ==== http_async_client ==== * async http queries using curl library * http://kamailio.org/docs/modules/devel/modules/http_async_client.html ==== http_client ==== * http queries using curl library * http://kamailio.org/docs/modules/devel/modules/http_client.html ==== ims_dialog ==== * rename of dialog_ng * http://kamailio.org/docs/modules/devel/modules/ims_dialog.html ==== log_custom ==== * send log messages to custom backend * http://kamailio.org/docs/modules/devel/modules/log_custom.html ==== log_systemd ==== * send log messages to systemd journal * http://kamailio.org/docs/modules/devel/modules/log_systemd.html ==== smsops ==== * sms operations for sip messages * http://kamailio.org/docs/modules/devel/modules/smsops.html ==== statsc ==== * statistics collector providing reports * http://kamailio.org/docs/modules/devel/modules/statsc.html ===== New in Old Modules ===== ==== acc ==== * new acc_prepare_always parameter to allow preparation of the request no matter if the acc_prepare_flag is set at the moment of the transaction creation. See sr-user discussion ==== acc_radius ==== * added radius time mode parameter: rad_time_mode - format can be set to seconds.microseconds ==== app_lua ==== * export registrar.lookup_to_dset to app_lua interface * export many sdpops functions to LUA ==== async ==== * module timer processes based on workers parameter === auth_radius === * append_realm_to_username parameter - allows the unmolested digest username to be passed to RADIUS in the User-Name attribute ==== carrierroute ==== * addind db_load_description parameter * toggle on/off loading in memory the description column in the carrierroute/carrierfailureroute database tables. This reduces the shared memory used by the module ==== cdp ==== * 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 * CER/CEA retry if send/receive FD disappeared * evaluate the supported_vendor_id-AVP during CER/CEA * load balancing timer has millisecond resolution ==== cfgutils ==== * sleep() and usleep() accept vars as parameter ==== cnxcc ==== * locks re-entrant for simplifying the upper layer APIs ==== corex ==== * added file_read() and file_write() functions * file_read(fpath, var) - read content of a text file into a variable * file_write(fpat, content) - write content of parameter to a text file * added corex.pkg_summary command * dump pkg usage summary to syslog for a specific pid or process index <code> kamcmd corex.pkg_summary pid 12345 kamcmd corex.pkg_summary idx 1 </code> ==== ctl ==== * increased default buffers size for rpc responses * binrpc_max_body_size = 32 * binrpc_struct_max_body_size = 8 * support for u specifier (unsigned int) ==== db_text ==== * support 'order by' in raw query * flexibility for column type comparison - compare DB1_STR, DB1_STRING, DB1_BLOB as equal * add support for replace - implements replace with update/insert * implemented raw query for UPDATE/DELETE/REPLACE ==== debugger ==== * add support for static and dynamic, module specific, logging facility * 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 * added mi commands for module level/facility setters * added rpc commands for module level/facility setters ==== dialog ==== * re-entrant mutex for dialogs hash table slots * run event_route[dialog:end] in case of dialog termination by interface commands * make dialog context available in event route tm:local-request * new parameter db_skip_load to skip loading dialogs on startup * safety bump of cseq for bye if prack was involved in call setup ==== dialog_ng ==== * renamed to ims_dialog ==== dispatcher ==== * relative weight distribution added - it is possible to assign “rweight” (relative weight) param to each host in destination group. rweight is in the integer range from 1 to 100 * added new probing_mode=3 to always probe flagged gateways * ds_timer_mode - new param to specify the timer proc * if set to 0 (default), main timer is used * if set to 1, secondary timer is used * rpc command dispatcher.ping_active * manage global pinging state (send or not the keepalive to destinations) * kamcmd dispatcher.ping_active 0 - don't send keepalive requests * kamcmd dispatcher.ping_active 1 - send keepalive requests * default value is 1 ==== dmq_usrloc ==== * implement deleted contact replication * new param sync - control sync'ing all contacts at startup * default 1 - require sync'ing of all contacts at startup, set to 0 to disable * support for throttling sync of all usrloc records * batch_size and batch_usleep parameters can control how many records can be sent out at once, after that sleep for batch_usleep microseconds before sending the next batch ==== domain ==== * allow 'type' field in domain_attrs to be a DB1_BIGINT, makes it work with MySQL views on 64bit systems ==== drouting ==== * support for symbols “#*+” in drouting trees ==== evapi ==== * implemented receive buffering per connected client ==== htable ==== * improved error message when loading from database * htable.dump - added the type of the value to the result * allow specifying column names per hash table * at least two columns must be specified, first is the one corresponding to key_name * the values of following columns are concatenated with a comma delimiter * columns can be specified with cols attribute in htable definition and they must be enclosed in quotes in order to be a valid sip parameter value and be separated by comma * don't sync back to db when cols per htable is set <code> modparam(“htable”, “htable”, “a⇒size=4;dbtable=a;cols='key_name,val1,val2,val3'”) </code> ==== ims_auth ==== * added option to set destination host for MAR requests * allow different qop setting for INVITE ==== ims_charging ==== * added Multiple-Services Indicator * allow ro session id to be used from cfg file as avp * added the possibility to omit the rating-group * added ability to send vendor-specific charge information * added ability to retrieve the Diameter-Status-Code for the Charging-Session ==== ims_qos ==== * make Release-Reason from QoS configurable * option to add Extra-Header, in case QoS fails during a session * 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 ==== * added functionality to unREGISTER a contact, eg. based on a failed network ping * set received host, proto and port when searching for pcontact ==== ims_registrar_scscf ==== * new function to pass extra argument to lookup (ue_type) - useful if looking for a specific type of UE ie VoLTE vs SIP for example ==== ims_usrloc_scscf ==== * added counters for reporting hashtable usage - collision slot count for contacts and subscriptions * implemented overwrite oldest contact behaviour * added support for UE types required by registrar ==== janssonrpc-c ==== * allow null json error property in rpc response ==== jsonrpc-c ==== * add max_conn_attempt parameter to control max number of reconnections ==== 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 ==== * support VERSION_NODATE and VERSION_DATE for reproducible builds * per module memory statistics when in debugging mode * return details about memory used by each module via rpc commands ==== lcr ==== * added priority_ordering module parameter - allows ordering of matched gateways only by priority and weight ==== mtree ==== * allow for larger (max 64) prefix values to be used (e.g., case of uuid, ipv6) * allow specifying column names per tree * at least two columns must be specified, first is the one corresponding to tprefix * if more than two, then the values of those columns are concatenated with a comma delimiter * columns can be specified with cols attribute in mtree definition and they must be enclosed in quotes in order to be a valid sip parameter value and be separated by comma <code> modparam(“mtree”, “mtree”, “name=mt;dbtable=mtree;cols='tprefix,tvalue1,tvalue2'”) </code> ==== nathelper ==== * support filter contacts by server_id ==== p_usrloc ==== * added path and +instance support ==== pdb ==== * new protocol between pdb_server and kama pdb module ==== permissions ==== * match trusted rules considering priority and regexp over r-uri * two new columns to set priority of the rule as well as regular expression matching over r-uri * max_subnets - new parameter * specify the max size for address subnets array, default value: 512 * if there are more subnet records in address tables than the value of max_subnets, increase it ==== presence ==== * added presence:notify-reply event * implemented $notify_reply for handling in presence:notify-reply event * added flags, user_agent columns to active_watchers * extended $subs to other subscription properties ==== presence_xml ==== * added optional param force_dummy_presence * module parameter to send empty presence notify body when there isn't any record in presentity ==== pua_dialoginfo ==== * support for sending “Trying” state for callee * implemented callee_trying parameter in pua_dialoginfo which causes a “Trying” state to be sent for both the caller and callee when a new dialog is created ==== pua_reginfo ==== * added support for custom params as contact parameters (e.g. <unknown-param name=“+g.oma.sip-im”></unknown-param>) ==== pv ==== * pv_var_to_xavp script function to copy $var values to $xavp * 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 * $snd(sproto) returns sending protocol as string ==== registrar ==== * add contact and received values to xavp_rcd * set xavp_rcd on registered() * export lookup_to_dset with uri to config * allow registered() in any route * send 400 response if the reg-id value is invalid ==== rr ==== * add enable_double_rr_always option ==== rtpengine ==== * new fifo command, namely nh_ping_rtpp, which pings the given proxy or all proxies, and if a proxy does not respond, disable it temporarily * try the next media relay available if the limit reached reply is received * unset “don't fragment” ip header flag * 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. “disabled(permanent)” nodes * added setid_default modparam - option to change the default set id. * if setid_avp is configured, the active set used is the avp value. * if setid_avp is not configured, the active set used is setid_default value * added kamctl nh_reload_rtpp - mi command to allow reload from database node table ==== sipcapture ==== * insert From URI domain, To URI domain and request URI domain to database * 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 * new parameter topoh_unmask - if set to 1, call-id will be unmasked using topoh module api ==== siptrace ==== * new parameter trace_mode * if set to 1, is using the SREV_NET_DATA_SEND event for sending HEP packets to sipcapture server for packets sent to the network ==== sipt ==== * added ability to check charging indicator ==== siputils ==== * exported $pcv(name) variable for P-Charging-Vector header and sip_p_charging_vector() function * $pcv(all) = whole field * $pcv(value) = icid-value field (see RFC3455 section 5.6) * $pcv(genaddr) = icid-generated-at field (see RFC3455 section 5.6) ==== sst ==== * add refresher** parameter in order to follow RFC 4028