features:new-in-3.2.x
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
features:new-in-3.2.x [2011/10/18 20:13] – [textops] miconda | features:new-in-3.2.x [2011/10/19 20:11] (current) – [rtpproxy] fixed "INVITE with sdp" to "INVITE without SDP" 212.230.46.89 | ||
---|---|---|---|
Line 5: | Line 5: | ||
**The release date for version 3.2.0: October 18, 2011**. | **The release date for version 3.2.0: October 18, 2011**. | ||
- | **NOTE: this page is not yet up-to-date with all new features in v3.2.0. Check back soon, it is updated right now, it should take just a bit. This message will be removed when the update is finished.** | + | Full commits log for release 3.2.0 is available at: |
+ | |||
+ | * http://www.kamailio.org/ | ||
===== Configuration File ===== | ===== Configuration File ===== | ||
Line 19: | Line 21: | ||
* TCP connection lifetime is set over one hour to cope better with devices behind NAT connected over TCP or TLS | * TCP connection lifetime is set over one hour to cope better with devices behind NAT connected over TCP or TLS | ||
* main request routing block name switched to **request_route** in order to be easy to refer to it. Note that **route** is still valid name for main request routing block. | * main request routing block name switched to **request_route** in order to be easy to refer to it. Note that **route** is still valid name for main request routing block. | ||
+ | * load debugger module for WITH_DEBUG - set cfgtrace parameter to 1 in this case | ||
===== New Modules ===== | ===== New Modules ===== | ||
Line 31: | Line 34: | ||
* database connector for SQLite | * database connector for SQLite | ||
+ | * good option to use for small (or embedded) SIP servers, as alternative to big DB servers such as MySQL or Postgres | ||
* README File: http:// | * README File: http:// | ||
Line 41: | Line 45: | ||
* IPv4 and IPv6 related functions for config file | * IPv4 and IPv6 related functions for config file | ||
+ | * among implemented functions: is_ipv4(ip), | ||
* README File: http:// | * README File: http:// | ||
Line 46: | Line 51: | ||
* json parser for configuration file | * json parser for configuration file | ||
+ | * get the values from a JSON document | ||
+ | * example: | ||
+ | <code c> | ||
+ | json_get_field(" | ||
+ | xlog(" | ||
+ | </ | ||
* README File: http:// | * README File: http:// | ||
==== jsonrpc-c ==== | ==== jsonrpc-c ==== | ||
- | * JSON-RPC client over netstrings | + | * JSON-RPC client over tcp/netstrings |
+ | * send notifications to a JSON-RPC server | ||
+ | * invoke execution of a JSON-RPC to a server | ||
* README File: http:// | * README File: http:// | ||
==== ndb_redis ==== | ==== ndb_redis ==== | ||
* connector to Redis no-SQL database engine | * connector to Redis no-SQL database engine | ||
+ | * uses hiredis library | ||
+ | * exports function to send commands to redis and a new pseudo-variable class to access the reply: $redis(key) | ||
* README File: http:// | * README File: http:// | ||
Line 60: | Line 75: | ||
* Support for RFC 3680 in the presence architecture of Kamailio | * Support for RFC 3680 in the presence architecture of Kamailio | ||
+ | * handle PUBLISH requests with reg-info content | ||
+ | * notify watcher with updates of reg-info records | ||
* README File: http:// | * README File: http:// | ||
==== pua_reginfo ==== | ==== pua_reginfo ==== | ||
- | * Publish Registration | + | * publish registration |
* README File: http:// | * README File: http:// | ||
Line 79: | Line 96: | ||
* module to control the content of the SDP payload from configuration file | * module to control the content of the SDP payload from configuration file | ||
- | * e.g.,: remove codecs | + | * spd_remove_codecs_by_id(list) - remove the codecs by their numeric IDs given in a comma separated list as parameter |
+ | * spd_remove_codecs_by_name(list) - remove the codecs by their names given in a comma separated list as parameter | ||
+ | * spd_keep_codecs_by_id(list) - keep the codecs by their numeric IDs given in a comma separated list as parameter | ||
+ | * spd_keep_codecs_by_name(list) - keep the codecs by their names given in a comma separated list as parameter | ||
+ | * sdp_print(level) - print the parsed sdp structure to the debug ' | ||
+ | * sdp_with_media(type) - return true if the sdp has ' | ||
* README File: http:// | * README File: http:// | ||
Line 85: | Line 107: | ||
* SIP traffic capturing server extension for Homer project | * SIP traffic capturing server extension for Homer project | ||
+ | * save to database mirrored traffic from other SIP server instances - mirroring can be done by siptrace module | ||
* README File: http:// | * README File: http:// | ||
Line 140: | Line 163: | ||
</ | </ | ||
+ | * db_insert_mode can be set to 1 in order to use INSERT DELAYED when adding the acc records to database | ||
Line 165: | Line 189: | ||
* export of inter-module API (available through Lua) | * export of inter-module API (available through Lua) | ||
+ | * option to skip checking version table | ||
+ | * new parameter ' | ||
+ | * useful when connecting to a different database to fetch the password | ||
==== auth_radius ==== | ==== auth_radius ==== | ||
Line 192: | Line 219: | ||
* dp_translate() returns -2 (instead of -1) if dp with given id does not exist. | * dp_translate() returns -2 (instead of -1) if dp with given id does not exist. | ||
+ | * added rpc commands | ||
+ | * dialplan.reload - to reload the records from database | ||
+ | * dialplan.translate - to translate a string using a specific dialplan id | ||
+ | |||
| | ||
==== dispatcher ==== | ==== dispatcher ==== | ||
Line 197: | Line 228: | ||
* export of inter-module API (available through Lua) | * export of inter-module API (available through Lua) | ||
* new event routes that are called when destinations go on/off-line | * new event routes that are called when destinations go on/off-line | ||
+ | * event_route[dispatcher: | ||
+ | * event_route[dispatcher: | ||
+ | * added RPC commands - new RPC commands to replace the MI ones | ||
+ | ==== domain ==== | ||
+ | |||
+ | * added rpc commands to reload and dump domains | ||
+ | ==== htable ==== | ||
+ | |||
+ | * option to save content of htable to db at shutdown - new ' | ||
+ | * if dbmode=1, the content of hash table will be saved back to database table when the sip server is stopped | ||
+ | * default value is 0 - no sync back to database table | ||
+ | * example: | ||
+ | <code c> | ||
+ | modparam(" | ||
+ | </ | ||
+ | * new attribute ' | ||
+ | * initval can set init integer value for hash table keys, meaning that if the key is not set, the init value is returned by $sht(htable=> | ||
+ | * useful for hash tables holding counters - the value can default to 0, avoiding extra check for $null value | ||
+ | * added two new PVs | ||
+ | * $shtinc(htable=> | ||
+ | * $shtdec(htable=> | ||
+ | * both return the new value of the item | ||
+ | * they work only with items having integer values | ||
+ | * options to store expires value of items in database | ||
==== kex ==== | ==== kex ==== | ||
Line 205: | Line 260: | ||
* you can see how much pkg each process is eating and how much is still available | * you can see how much pkg each process is eating and how much is still available | ||
* should be useful to track pkg memory leaks and/or trigger alerts when there is no more pkg available | * should be useful to track pkg memory leaks and/or trigger alerts when there is no more pkg available | ||
+ | * added setdebug(level) - can change the debug level per process | ||
+ | * added resetdebug() - set back the debug level to the global parameter ' | ||
+ | * added mi command clear_statistics - return the values and reset the counters for statistics | ||
+ | |||
==== lcr ==== | ==== lcr ==== | ||
Line 242: | Line 301: | ||
==== presence_xml ==== | ==== presence_xml ==== | ||
* new exported functions to enable the online/ | * new exported functions to enable the online/ | ||
+ | * pres_check_basic() enables you to find out whether a users basic status matches the string you provide. | ||
+ | * pres_check_activities() enables you to find out whether any of user's listed activities matches the string you provide. | ||
+ | |||
+ | ==== pua ==== | ||
+ | |||
+ | * added new modparam check_remote_contact | ||
==== pv ==== | ==== pv ==== | ||
Line 251: | Line 316: | ||
* $sndfrom(id) points to local socket to be used for sending | * $sndfrom(id) points to local socket to be used for sending | ||
* $rmid - request method id | * $rmid - request method id | ||
+ | * $mt - return sip message type | ||
+ | * the value is 1 if the sip message is request | ||
+ | * the value is 2 if the sip message is reply | ||
+ | * $Tb - startup time available in a pseudo-variable (boottime) | ||
+ | * $rz - returns r-uri scheme | ||
+ | * possible values: sip, sips, tel and tels | ||
+ | * r-uri scheme parsing error should be reflected by value: none | ||
* new transformations: | * new transformations: | ||
Line 256: | Line 328: | ||
* {s.sql} - output the pvar as valid SQL value. < | * {s.sql} - output the pvar as valid SQL value. < | ||
* {s.replace,< | * {s.replace,< | ||
- | * {s.prefixes[,< | + | * {s.prefixes[,< |
+ | <code c> | ||
+ | " | ||
+ | " | ||
+ | | ||
+ | </ | ||
* new functions: | * new functions: | ||
* is_int() checks if pvar argument contains integer value. | * is_int() checks if pvar argument contains integer value. | ||
+ | |||
+ | ==== regex ==== | ||
+ | |||
+ | * pcre_match_group() allows pseudo-variable in group parameter | ||
+ | * example: | ||
+ | <code c> | ||
+ | pcre_match_group(" | ||
+ | </ | ||
==== registrar ==== | ==== registrar ==== | ||
Line 270: | Line 355: | ||
* support for resource-list indices that reference other resource-list XML documents (including XPath within documents) | * support for resource-list indices that reference other resource-list XML documents (including XPath within documents) | ||
* new exported function to allow re-subscription to a list to be initiated from the configuration file | * new exported function to allow re-subscription to a list to be initiated from the configuration file | ||
+ | * added a new exported function: rls_update_subs() - this new function can be called from the Kamailio configuration file to force the RLS module to refresh its back-end subscriptions. | ||
==== rr ==== | ==== rr ==== | ||
Line 280: | Line 366: | ||
==== rtpproxy ==== | ==== rtpproxy ==== | ||
- | * force_rtp_proxy function was removed | + | * force_rtp_proxy function was removed, you can use rtpproxy_offer() and rtpproxy_answer() |
+ | * new function rtpproxy_manage() | ||
+ | * auto-pilot function to handle rtp proxy session management | ||
+ | * it can take same kind of parameters as rtpproxy_offer() | ||
+ | * embeds the functionality of rtpproxy_offer(), | ||
+ | * if INVITE with SDP, then do rtpproxy offer | ||
+ | * if INVITE without SDP, when tm is loaded, mark transaction with internal flag FL_SDP_BODY to know that the 1xx and 2xx are for rtp answer | ||
+ | * if ACK with SDP, then do rtpproxy answer | ||
+ | * if BYE or CANCEL, then do unforce rtpproxy | ||
+ | * if reply to INVITE with code >= 300 do unfrce rtp proxy | ||
+ | * if reply with SDP to INVITE having code 1xx and 2xx, then do rtpproxy answer if the request had SDP or tm is not loaded, otherwise do rtpproxy offer | ||
+ | * aliased rtpproxy_destroy() to unforce_rtp_proxy() | ||
==== sanity ==== | ==== sanity ==== | ||
Line 286: | Line 383: | ||
* new parameter autodrop to control automatic dropping of broken messages | * new parameter autodrop to control automatic dropping of broken messages | ||
* setting it to 0 is good for logging purposes in config file and exiting from there | * setting it to 0 is good for logging purposes in config file and exiting from there | ||
+ | |||
+ | ==== siptrace ==== | ||
+ | |||
+ | * trace_to_database configuration parameter - to control whether to write to database or not and just mirror traffic | ||
+ | * use x-headers to add fromip, toip, method, time and direction in the message body (using X-* headers). This allows to transmit them using duplicate_uri from one kamailio to an other. | ||
+ | * store milliseconds part of the time in database | ||
==== siputils ==== | ==== siputils ==== | ||
* Added set_uri_user(uri, | * Added set_uri_user(uri, | ||
* Function tel2sip() replaced by tel2sip(uri, | * Function tel2sip() replaced by tel2sip(uri, | ||
+ | * Added is_request() returns true if the SIP message is a request | ||
+ | * Added is_reply() returns true if the SIP message is a reply | ||
+ | * useful to check in sub-routes that can be executed from both request and reply routes | ||
+ | |||
+ | ==== snmpstats ==== | ||
+ | |||
+ | * control exporting registrar records | ||
+ | * exporting of large location database may result in out of shared memory, as well as when the records are not pulled | ||
+ | * new parameter export_registrar was added to enable/ | ||
==== sqlops ==== | ==== sqlops ==== | ||
* xavp support. New function sql_xquery() stores the query result in an xavp. | * xavp support. New function sql_xquery() stores the query result in an xavp. | ||
* BIGINT support. Native support when sql_xquery is used, transformed to string for sql_query(). | * BIGINT support. Native support when sql_xquery is used, transformed to string for sql_query(). | ||
+ | * new PV $sqlrows(con) - return affected rows of previous query | ||
==== textops ==== | ==== textops ==== | ||
Line 303: | Line 416: | ||
* new parameter ' | * new parameter ' | ||
* the module can bind to sanity to perform parsing checks before proceeding to encoding/ | * the module can bind to sanity to perform parsing checks before proceeding to encoding/ | ||
+ | |||
+ | ==== tm ==== | ||
+ | |||
+ | * allow nested backup of avp lists when sending local requests | ||
==== tmx ==== | ==== tmx ==== | ||
Line 310: | Line 427: | ||
* $T(name) - new class of pseudo-variables for accessing transaction attributes: | * $T(name) - new class of pseudo-variables for accessing transaction attributes: | ||
* internal index, label, the branch index, reply code | * internal index, label, the branch index, reply code | ||
+ | * two helper functions to detect route block type | ||
+ | * t_is_failure_route() - return true if it is a failure_route execution | ||
+ | * t_is_branch_route() - return true if it is a branch_route execution | ||
+ | * useful to check in sub-routes executed from different points of config | ||
+ | * added t_reply_callid MI command | ||
+ | * $T(reply_type) to solve ambiguity of received or local replies | ||
+ | * it returns 1 in failure route if the reply was local generated (e.g., timeout), otherwise is 0. If there is no transaction, | ||
==== uac ==== | ==== uac ==== | ||
Line 323: | Line 447: | ||
==== xcap_server ==== | ==== xcap_server ==== | ||
- | * Support | + | * added oma user-profile and pres-content (avatar) support |
+ | * support | ||
* org.openmobilealliance.user-profile | * org.openmobilealliance.user-profile | ||
* org.openmobilealliance.pres-content | * org.openmobilealliance.pres-content | ||
* org.openmobilealliance.search | * org.openmobilealliance.search | ||
- | * Support | + | * support |
+ | * ability to insert new nodes in xcap docs | ||
+ | |||
+ | ==== xlog ==== | ||
+ | |||
+ | * new module parameter log_facility | ||
+ | * allow to specify syslog facility for messages printed by xlog module | ||
+ | * xlog messages can be diverted now to special file via syslog conf | ||
==== xhttp ==== | ==== xhttp ==== | ||
Line 336: | Line 468: | ||
===== New in Core ===== | ===== New in Core ===== | ||
+ | ==== Config Structure ==== | ||
+ | |||
+ | * request_route { ... } can be used instead of main route { ... } | ||
+ | * reply_route { ... } can be used instead of main onreply_route { ... } | ||
+ | * ' | ||
+ | * caching support for pv spec parsing | ||
==== Preprocessor directives ==== | ==== Preprocessor directives ==== | ||
Line 345: | Line 483: | ||
**#!** and **!!** can be used as start of preprocessor directives | **#!** and **!!** can be used as start of preprocessor directives | ||
- | ==== import_file | + | === import_file === |
Attempt to include a file, but if it is not found, do not throw error like **include_file**. | Attempt to include a file, but if it is not found, do not throw error like **include_file**. | ||
+ | ==== Parameters ==== | ||
+ | |||
+ | * corelog - control the log level for non-critical core error messages | ||
+ | * pv_buffer_size - size in bytes for internal PV buffer (default 1024) | ||
+ | * pv_buffer_slots - home many internal PV buffers (default 10) | ||
+ | * sql_buffer_size - set the size of SQL buffer (default 64k) | ||
+ | * auto_bind_ipv6 - auto-bind or not to IPv6 addresses (default 1 - bind to IPv6) | ||
+ | |||
+ | ==== Functions ==== | ||
+ | |||
+ | * added functions remove_branch(index) and clear_branches() | ||
==== Config Reload Framework ==== | ==== Config Reload Framework ==== | ||
* support for multiple cfg group instances | * support for multiple cfg group instances | ||
- | * add/ | + | * add/ |
+ | * @cfg_selected.group added - @cfg_selected.< | ||
+ | * @cfg_get supports nested calls - @cfg_get.< | ||
+ | * @cfg.get.< | ||
+ | * @cfg.get.< | ||
+ | * @cfg.get.< | ||
==== libsrdb1 ==== | ==== libsrdb1 ==== | ||
Line 365: | Line 520: | ||
* core events when pkg usage changes | * core events when pkg usage changes | ||
+ | * option for short status dumping | ||
+ | * pkg mem size configurable form the cmd line | ||
+ | * The pkg mem size used can be configured by using the " | ||
+ | <code c> | ||
+ | kamailio -M 8 -f test.cfg # start with 8mb of pkg memory | ||
+ | </ | ||
+ | | ||
+ | |||
+ | |||
+ | ==== STUN ==== | ||
+ | |||
+ | * ser_stun update to RFC 5389 | ||
+ | * Removing checking/ | ||
+ | * Update some attribute values according to new spec | ||
+ | |||
+ | ==== RPC Commands ==== | ||
+ | |||
+ | * added rpc command core.psx | ||
+ | * similar to core.ps but prints the details in RPC structure along with process index, like: | ||
+ | <code c> | ||
+ | sercmd> core.psx | ||
+ | { | ||
+ | IDX: 0 | ||
+ | PID: 73408 | ||
+ | DSC: attendant | ||
+ | } | ||
+ | { | ||
+ | IDX: 1 | ||
+ | PID: 73409 | ||
+ | DSC: udp receiver child=0 sock=127.0.0.1: | ||
+ | } | ||
+ | </ | ||
===== New in Documentation ===== | ===== New in Documentation ===== |
features/new-in-3.2.x.1318968809.txt.gz · Last modified: 2011/10/18 20:13 by miconda