Table of Contents
Kamailio SIP Server and SER - New Features in Devel Version
Current devel version will be numbered 3.3.0 and it is planned to be released before mid summer 2012.
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
app_mono
- new module for embedded execution of managed code, like C#
db_cassandra
- new module offering a connector to Cassandra DB server
db_cluster
- new module offering a generic database clustering
msrp
- new module offering an embedded MSRP relay (RFC4975 and RFC4976)
presence_profile
- new module for managing UA configuration via SIMPLE extensions
tmrec
- new module for matching time recurrences in config file. Definitions of recurrences are based on Internet Calendaring and Scheduling Core Object Specification (Calendar COS - RFC 2445).
xhttp_rpc
- new module to execute RPC commands via embedded HTPP server
New in Old Modules
app_lua
- more SIP server internal functions exported as native Lua functions, among them, functions from modules such as:
- cfgutils (lock, unlock)
- sqlops (sql_xquery)
- msilo
- siputils
- textops
- pua_usrloc
- rls
- alias_db
- uac
- mqueue
- tmx
db_postgres
- affected_rows() DB API now supported
dialog
- new event routes
- event_route[dialog:start] - executed when dialog starts (200 ok for initial INVITE)
- event_route[dialog:end] - executed when dialog is ended (BYE or dialog timeout)
- event_route[dialog:failed] - executed when initial INVITE fails (>300 reply)
- new parameters
- send_bye - set sending BYE flag for all dialogs automatically
- wait_ack - wait for ACK to be sent after a negative reply for initial INVITE
- dialog profiles and internal flags are stored to db and loaded upon restart
dialplan
- new matching operator - fnmatch (match_op=2)
- match using shell-like patterns
dispatcher
- refactored dispatcher destination states
- states: active, trying, inactive, disabled
- probing is a mode that can be set for active and inactive states
- added outbound_proxy modparam for use with dispatcher pings
domain
- added new function 'lookup_domain' that in addition to checking if domain is local, adds attributes of local domain into AVPs
- domain attributes are stored in new table 'domain_attrs'
- removed support for db only mode and, as consequence, removed 'db_mode' module variable
lcr
- gateways with special LCR instance id 0 belong to all normal LCR instances
- added 'lcr.defunct_gw' rpc command
mi_rpc
- added MI command to run RPC commands
msilo
- extra headers in MESSAGE requests now stored in the silo
- added storage of extra SIP headers from AVP when m_store() is called
mtree
- added 'mt_allow_duplicates' module variable
pdt
- new functions:
- pd_translate(sdomain, rmode)
- new rpc commands:
- pdt.reload - reload database records in cache
permissions
- transport protocol argument of allow_trusted() function call can now have value “any” meaning that any transport protocol is acceptable
presence
- support for polite-block in pres_auth_status() exported function
pua
- added DB only mode to PUA. Useful for scaling presence/RLS across multiple servers.
pv
- new transformation class line
- {line.count}
- {line.at,pos}
- {line.sw,match}
- new string tranformations
- {s.trim}
- {s.ltrim}
- {s.rtrim}
- {s.rm,match}
- support of URN parsing (e.g.: urn:service:sos.fire)
- $ru= “urn:service:sos.fire”
- $rz= “urn” (scheme)
- $rU= “service”
- $rd= “sos.fire”
- new pseudo variables
- $dic = Diversion header “counter” parameter value
registrar
- option to set max contact per REGISTER (via xavp)
- handle GRUU extension (RFC5627)
rls
- added DB only mode to RLS. Useful for scaling RLS across multiple servers
- new modparam to not perform back-end subscriptions to non-local presentities
- rls_presentity table can be stored in a different DB to other RLS tables
- new modparam to limit the number of back-end subscribes for each RLS subscribe dialog
rr
- added new record_route_advertised_address() exported function
- detect GRUU addresses and don't match 'myself' for them
rtimer
- execute route blocks on micro-second timer base
sdpops
- new functions
- sdp_with_codecs_by_id(“codecs”)
- sdp_with_codecs_by_name(“codecs”)
- sdp_remove_media(“type”)
- old functions
- functions for keeping only a set of codecs can take a second parameter to filter the matching on certain media type
sl
- new event_route[sl:local-response] that allows inspection of locally generated (configuration file or code) stateless responses. This includes HTTP responses (enable new core option http_reply_hack if you are using this event_route and HTTP)
textops
- new function: in_list(subject, list, separator)
textopsx
- new function: keep_hf(expr)
- remove all the non-mandatory headers that don't match expr
- new function: fnmatch(value, match, flags)
- match using shell-like patters based on C fnmatch(…)
tls
- new parameters:
- renegotiation - enable/disable TLS cipher renegotiation
tm
- $snd() structure filled in for event_route[tm:local-request]
- new event_route[tm:local-response] that allows inspection of locally generated (configuration file or code) transaction stateful responses
usrloc
- save unique string ID for each contact (ruid column)
- handle +sip.instance parameter from GRUU extension (rfc 5627)
xlog
- xlog(facility,log-level,message) allows to log messages with dedicated syslog facility
New in Core
Database Enhancements
- bitwise AND operation added to DB queries
- ability to specify DB connections as non-pooled in DB URLs
Global Parameters
fork_delay
- number of usecs to wait before forking a process
http_reply_hack
- does what the old HTTP_REPLY_HACK compile-time option did
- defaults to no (disabled)
- enable this if you use the new event_route[sl:local-response] and the embedded HTTP server module
latency_limit_action
- time in micro seconds - if the execution of a config action takes longer than it, a log message is printed
latency_limit_db
- time in micro seconds - if the execution of a database query takes longer than it, a log message is printed
latency_log
- log level to print latency log messages
max_while_loops
- setting to 0 means infinite loops are allowed in configuration file (you still get a warning on start-up)
socket workers
- set the number of worker processes to handle traffic on specific listen sockets
tcp_clone_rcvbuf
- enable or disable cloning of received data on TCP connections to allow safe updates directly inside the incoming buffer
tls_max_connections
- limit the number of active tls connections
New RPC Commands
core.tcp_list
- list active TCP connections
core.aliases_list
- list local name aliases (matching myself)
core.sockets_list
- list local listen sockets