User Tools

Site Tools


features:new-in-4.1.x

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
features:new-in-4.1.x [2013/11/15 14:19]
miconda [dialog]
features:new-in-4.1.x [2013/12/04 11:10] (current)
miconda [Kamailio SIP Server (SER) - New Features in v4.1.x]
Line 1: Line 1:
 ====== Kamailio SIP Server (SER) - New Features in v4.1.x ====== ====== Kamailio SIP Server (SER) - New Features in v4.1.x ======
  
-**First release in this series is to be numbered 4.1.0 and it is planned to be released in by end of November 2013**.+**First release in this series is numbered 4.1.0 released on December 04, 2014**.
  
 <fc #0000FF> <fc #0000FF>
Line 36: Line 36:
   * http://kamailio.org/docs/modules/devel/modules/gzcompress.html   * http://kamailio.org/docs/modules/devel/modules/gzcompress.html
  
 +==== ims_charging ====
 +
 +
 +  * IMS charging module for Diameter-Ro-Operations
 +  * http://kamailio.org/docs/modules/devel/modules/ims_charging.html
 ==== mohqueue ==== ==== mohqueue ====
  
Line 60: Line 65:
   * http://kamailio.org/docs/modules/devel/modules/stun.html   * http://kamailio.org/docs/modules/devel/modules/stun.html
 ===== New in Old Modules ===== ===== New in Old Modules =====
 +
 +
 +==== acc ====
 +
 +  * new parameter time_mode
 +    * store additional time values in time_attr and time_exten attributes/db columns
 +    * if time_mode==1, save timestamp in time_attr and microsecs in time_exten
 +    * if time_mode==2, then time_attr store the seconds.miliseconds
 +    * if time_mode==0 (default), then it is like now, only timestamp stored
 +    * time_attr value can be set via parameter with same name - it represents syslog value or db table column
 +    * for db accounting, when time_mode==1, the type of column has to be int, and for time_mode==2, the type of column has to be double
 +    * features implemented only for syslog and db accounting
 +    * new parameter acc_time_format - specify the format to print time as string for acc_time_mode=3 (using localtime) and acc_time_mode=4 (using gmtime)
 +      * default value is "%Y-%m-%d %H:%M:%S"
 +  * option to write dialog-based cdrs to database
 +    * new module parameter cdrs_table has to be set and classic db accounting enabled at compile time and db_url set
 +    * cdr_log_enable - new parameter to turn off writing cdrs to syslog, cdr_enable being now used as top level control flag for both cdrs to syslog or db
  
  
Line 71: Line 93:
   * avp_check re operation can now use a pseudo variable as second parameter.   * avp_check re operation can now use a pseudo variable as second parameter.
   * avp_check with xavp as second parameter can now be used with [*] index on the second key.   * avp_check with xavp as second parameter can now be used with [*] index on the second key.
 +  * allow xavp as parameter where avp is allowed
  
 ==== cdp ==== ==== cdp ====
Line 81: Line 104:
     * check_route_exists() checks if a routing block exists in the script.     * check_route_exists() checks if a routing block exists in the script.
  
 +==== corex ====
 +
 +  * new pv $cfg(key) - return attributes for config file
 +    * $cfg(line) - the line of the current action.
 +    * $cfg(name) - the name of the current conf file
 +    * example: append_to_reply("P-Cfg-Line: $cfg(line)\r\n");
 ==== db_mysql ==== ==== db_mysql ====
  
Line 100: Line 129:
     * options to enable/disable per module log level as well as set per module log level at runtime.     * options to enable/disable per module log level as well as set per module log level at runtime.
     * dbg.reset_msg: resets the msgid ( $mi ).     * dbg.reset_msg: resets the msgid ( $mi ).
 +  * new parameter cfgpkgcheck to do pkg memory check before each action
  
 ==== dialog ==== ==== dialog ====
Line 105: Line 135:
   * SDP can be passed to MI/RPC dlg_bridge command   * SDP can be passed to MI/RPC dlg_bridge command
   * added timer process to clean unconfirmed dialogs older than 5min   * added timer process to clean unconfirmed dialogs older than 5min
 +  * decode alias parameter from contact address and use it as dst uri - makes dialog module to work with set_contact_alias() as first hop after a nat router
  
 ==== dispatcher ==== ==== dispatcher ====
Line 110: Line 141:
   * new parameter to specify the pv where to store attrs for matched address in ds_is_from_list()   * new parameter to specify the pv where to store attrs for matched address in ds_is_from_list()
     * attrs_pvname can be set to get attributes of matched address in config file     * attrs_pvname can be set to get attributes of matched address in config file
 +  * allow pv in ds_is_from_list(setid) parameter
 ==== htable ==== ==== htable ====
  
Line 118: Line 150:
     * sht_lock("htable=>key") and sht_unlock("htable=>key")     * sht_lock("htable=>key") and sht_unlock("htable=>key")
     * useful to update existing items without additional locks     * useful to update existing items without additional locks
 +  * lifted the limit for max number of slots, now is 2^31
 +  * added rpc command htable.stats - print stats about htables: name, number of slots, number of items, max number of items per slot, min number of items per slot
 +  * dmq integration
 +
 +
 +
 +==== ipops ====
 +
 +  * dns_sys_match_ip(hostname, ipaddr) - do dns query for the hostname and compare the result to see if is a match with ipaddr
 +  * dsn_int_match_ip(hostname, ipaddr) - function that uses the internal resolver to match a hostname with an ip (similar operation like 'scr_ip=="hostname"')
 +  * new function dns_query(hostname, pvid) - store the result of dns query in a variable $dns(pvid=>key)
 +    * dns query is using getaddrinfo()
 +    * $dns(pvid=>key) - new pv allowing to navigate through the result of a dns query
 +    * key can be:
 +      * count - number of addresses
 +      * ipv4 - set to 1 if at least one ipv4 address (otherwise 0)
 +      * ipv6 - set to 1 if at least one ipv6 address (otherwise 0)
 +      * addr[index] - the address as string from position index in the list (0 based indexing)
 +      * type[index] - the type of address from position index in the list (0 based indexing), the value is 4 for ipv4 and 6 for ipv6
 +      * example:
 +<code c>
 +    if(dns_query("test.com", "xyz"))
 +    {
 +    xlog("===== number of addresses: $dns(xyz=>count)\n");
 +    xlog("===== ipv4 address found: $dns(xyz=>ipv4)\n");
 +    xlog("===== ipv6 address found: $dns(xyz=>ipv6)\n");
 +    $var(i) = 0;
 +    while($var(i)<$dns(xyz=>count)) {
 +    xlog("===== #[$var(i)] type ($dns(xyz=>addr[$var(i)])) addr [$dns(xyz=>addr[$var(i)])]\n");
 +    $var(i) = $var(i) + 1;
 +    }
 +    }
 +</code>
  
 ==== memcached ==== ==== memcached ====
Line 129: Line 194:
  
   * mtree.reload rpc command   * mtree.reload rpc command
 +  *  added 'multi' param to mtree definition - new 'multi' param makes it possible to store both integer and string typed mtrees into single db table
 ==== nathelper ==== ==== nathelper ====
  
   * new option - natping_disable_bflag can be set on a per-registration basis to disable NAT pings completely   * new option - natping_disable_bflag can be set on a per-registration basis to disable NAT pings completely
   * removed natping_proceses limit   * removed natping_proceses limit
 +  * set_contact_alias() new function for adding alias parameter to contact uri
 +    * similar to add_contact_alias(), but this works like fix_nated_contact(), in the way that new contact uri is immediately visible to other modules (e.g., dialog, presence)
 +  * udpping_from_path - enable sending UDP pings with raw sockets from Path address
 +
  
  
Line 161: Line 231:
   * added $_s(format) variable - evaluate the format as a dynamic string ($var(x) = "sip:" + $rU + "@" + $fd; is equivalent of: $var(x) = $_s(sip:$rU@$fd);)   * added $_s(format) variable - evaluate the format as a dynamic string ($var(x) = "sip:" + $rU + "@" + $fd; is equivalent of: $var(x) = $_s(sip:$rU@$fd);)
   * added transformations for url encode/decode   * added transformations for url encode/decode
 +  * param transformation can (optionally) specify what the parameter delimiter is
  
 ==== registrar ==== ==== registrar ====
Line 169: Line 240:
   * set_q_override API function - override the value of the q parameter from the Contact header in subsequent calls to the save() function for the current request   * set_q_override API function - override the value of the q parameter from the Contact header in subsequent calls to the save() function for the current request
   * regid_mode parameter - control if REGISTER contact regid (if present) is used when REGISTER request is saved even if request does not indicate support for outbound   * regid_mode parameter - control if REGISTER contact regid (if present) is used when REGISTER request is saved even if request does not indicate support for outbound
 +  * option to take the socket from an xavp - child named "socket" of xavp named by xavp_cfg parameter
  
 ==== rr ==== ==== rr ====
Line 197: Line 269:
   * table param for sip_capture() function   * table param for sip_capture() function
   * allow customization for X-CID header   * allow customization for X-CID header
 +  * added support for multiple capture modes
 ==== siputils ==== ==== siputils ====
  
Line 213: Line 286:
  
   * enable usage of msg_apply_changes() for sip replies   * enable usage of msg_apply_changes() for sip replies
 +
 +==== tls ====
 +
 +  * config param can now specify a file or directory
 +  * extended supportd tls methods - TLSv1.1 and TLSv1.2 (from openssl 1.0.1e on) added to the internal list
 ==== tm ==== ==== tm ====
  
Line 227: Line 305:
     * if 1, the rcv socket is used, if not it depends on mhomed - when that is 0, the first socket is used, otherwise will be selected based on routing table     * if 1, the rcv socket is used, if not it depends on mhomed - when that is 0, the first socket is used, otherwise will be selected based on routing table
     * default is 0     * default is 0
 +  * new function t_set_disable_internal_reply(0|1) to disable|enable internal reply option per transaction
 +  * new function t_use_uac_headers()
 +    * set internal flags to tell tm to use UAC side for building headers for local generated requests (ACK, CANCEL) - useful when changing From/To headers using other functions than uac_replace_[from|to]()
 +
  
 ==== tmx ==== ==== tmx ====
Line 239: Line 321:
     * if both attributes above are set and the request is challenged with 401/407, then the request is resent with auth header     * if both attributes above are set and the request is challenged with 401/407, then the request is resent with auth header
   * ability to set Call-Id through $uac_req(callid)   * ability to set Call-Id through $uac_req(callid)
 +  * $uac_req(sock) - new attribute to set local send socket for generated requests
 +    * $uac_req(sock) = "udp:127.0.0.1:5060";
  
 ==== usrloc ==== ==== usrloc ====
Line 256: Line 340:
   * added two new rpc commands ul.db_users and ul.db_contacts - for accessing number of different AoRs and contacts in a location table   * added two new rpc commands ul.db_users and ul.db_contacts - for accessing number of different AoRs and contacts in a location table
   * new command ul.db_expired_contacts tells number of expired contacts   * new command ul.db_expired_contacts tells number of expired contacts
 +  * detect lost tcp connnections on timer and set associated contact as expired
 +    * new module parameter to control this feature: handle_lost_tcp
 +
 +
 +==== utils ====
 +
 +  * support for sending POST-Requests to http_query() method
  
 ==== websocket ==== ==== websocket ====
Line 262: Line 353:
   * new function ws_close() - enables immediate closure of a WebSocket connection from the configuration file.   * new function ws_close() - enables immediate closure of a WebSocket connection from the configuration file.
  
 +==== xhttp ====
 +
 +  * added transformation to break a URL into "path" and "querystring"
 ===== New in Core ===== ===== New in Core =====
  
Line 273: Line 367:
   * removed syn_branch functionality for calculating Via branch parameter   * removed syn_branch functionality for calculating Via branch parameter
   * allow c++ style of one line comments (i.e., / / comment ...) - can make easier the read of config files with defines and comments   * allow c++ style of one line comments (i.e., / / comment ...) - can make easier the read of config files with defines and comments
 +  * execute event_route[core:receive-parse-error] block on error of initial sip message parsing - note that the SIP message is broken in this case, but it gets access to source and local socket addresses (ip, port, proto, af) as well as the whole message buffer and its size
 +  * store current executed cfg action in a global variable - can be retrieved by module to access name of config file and the line
 +  * handle pv comparison with $null as when 'defined' is used
 +  * respect order field in NAPTR, as required by RFC 2915
 +    * the beaviour is controlled by core parameter dns_naptr_ignore_rfc
 +    * default is 1, preserving current behaviouf to ignore rfc requirements (for backward compatibility)
 +
  
  
Line 301: Line 402:
     * 'newcmd' has to be replaced with the name of the command     * 'newcmd' has to be replaced with the name of the command
     * the file must include cmd_newcmd() function which is executed with the parameters after the command name     * the file must include cmd_newcmd() function which is executed with the parameters after the command name
 +  * shortcut command to do q query to a database based on key and value
 +    * kamctl db smatch table key value - return the record from table that has column key matching the value as string (quoted value)
 +    * kamctl db nmatch table key value - return the record from table that has column key matching the value as non-quoted
 +    * examples:
 +<code>
 +    kamctl db smatch subscriber username test
 +    kamctl db nmatch subscriber id 123
 +</code>
 +
 +  * added commands to set extra columns in subscriber table
 +    * useful to deal with columns added for load_credentials of auth_db module
 +      * 'sets' - sets a column with string value
 +      * 'setn' - sets a column with numeric value
  
  
 ==== kamdbctl ==== ==== kamdbctl ====
  
-  * new command 'add-tables <gid>to create only specific table grouped under same <gid> name+  * new command add-tables 
 +    * creates only tables that are groupped under same id, thus have the sql script in a file 
 +    * syntax: kamdbctl add-tables <gid> 
 +    * there has to be a <gid>-create.sql script, eg: kamdbctl add-tables lcr
  
features/new-in-4.1.x.1384521568.txt.gz · Last modified: 2013/11/15 14:19 by miconda