About

About.Version-2-2-0 History

Hide minor edits - Show changes to markup

March 31, 2016, at 09:38 AM by 85.204.8.247 -
Added lines 52-54:

CLUSTERER module (new)

  • The new clusterer allows you to group multiple OpenSIPS nodes in a cluster in order to share the same information in your entire platform. This module can be used by the dialog module to replicate dialog profiles to other nodes, or by the usrloc module to share contact information across multiple nodes.
Deleted lines 107-109:

CLUSTERER module

  • The new clusterer allows you to group multiple OpenSIPS nodes in a cluster in order to share the same information in your entire platform. This module can be used by the dialog module to replicate dialog profiles to other nodes, or by the usrloc module to share contact information across multiple nodes.
March 31, 2016, at 09:28 AM by 85.204.8.247 -
Changed line 107 from:
  • The new clusterer allows you to group multiple OpenSIPS nodes in a cluster in order to share the same information in your entire platform.
to:
  • The new clusterer allows you to group multiple OpenSIPS nodes in a cluster in order to share the same information in your entire platform. This module can be used by the dialog module to replicate dialog profiles to other nodes, or by the usrloc module to share contact information across multiple nodes.
March 31, 2016, at 09:24 AM by 85.204.8.247 -
Changed lines 64-66 from:
to:

PROTO_WSS module (new)

The Secure WebScoket module allows HTTPS enabled browsers to make or receive VoIP calls using the WebSocket protocol through a secure, TLS encrypted channel.

Added lines 189-191:

PROTO_WS module

  • The WebSocket protocol module has been added client support. This allows OpenSIPS to connect to a different WebSocket server and relay SIP messages towards it.
Deleted lines 236-238:

WS module

  • The WebSocket protocol module has been added client support. This allows OpenSIPS to connect to a different WebSocket server and relay SIP messages towards it.
March 31, 2016, at 12:09 AM by 109.102.83.252 -
Changed line 170 from:

NET_TCP module

to:

NET_TCP module

Added lines 182-185:

PROTO_TLS module

  • fix the CRLF ping-pong regression by adding the new module parameters tls_crlf_pingpong and tls_crlf_drop
  • new tls_max_msg_chunks parameter - the maximum number of chunks that a SIP message is expected to arrive via TLS.
March 31, 2016, at 12:02 AM by 109.102.83.252 -
Added lines 169-171:

NET_TCP module

  • tcp_accept_aliases is now by default set to on/enabled
March 30, 2016, at 11:48 PM by 109.102.83.252 -
Added lines 144-145:

EMERGENCY module

  • added support for subscriber / notify functions.
March 30, 2016, at 11:44 PM by 109.102.83.252 -
Added lines 125-127:

DIALPLAN module

  • new dp_show_partiton MI command to list all the details on the defined partitions.
March 30, 2016, at 11:16 PM by 109.102.83.252 -
Added lines 69-71:

EVENT_FLATSTORE module (new)

The module provides a logging facility for different events, triggered through the OpenSIPS Event Interface, directly from the OpenSIPS script. The module logs the events along with their parameters in regular text files.

March 30, 2016, at 11:12 PM by 109.102.83.252 -
Added line 38:
  • new xlog_default_level parameter to configure the default logging level for all xlog() prints.
March 30, 2016, at 11:08 PM by 109.102.83.252 -
Added lines 105-108:

DB_MYSQL

  • new parameter max_db_queries to define how many time a DB query should be retried.
  • new parameter max_db_retries to define how many attempts should be perform in setting the DB connection.
March 30, 2016, at 11:05 PM by 109.102.83.252 -
Added lines 105-107:

DB_POSTGRES

  • new parameter max_db_queries to define how many time a DB query should be retried.
March 30, 2016, at 04:00 PM by 85.204.8.247 -
Added lines 209-211:

WS module

  • The WebSocket protocol module has been added client support. This allows OpenSIPS to connect to a different WebSocket server and relay SIP messages towards it.
March 30, 2016, at 01:11 PM by 85.204.8.247 -
Added lines 94-96:

CACHEDB_REDIS

  • the connect_timeout parameter has been added to control the connection time to a Redis server. This prevents OpenSIPS from blocking indefinitely until the Redis server times out.
Changed line 209 from:

to:

March 30, 2016, at 10:42 AM by 109.102.83.252 -
Changed lines 19-20 from:
  • support for locking debugging - compile with DBG_LOCK (from menuconfig for example) and each lock will stored information regarding the place from where the lock was acquired (file, function, line) - this is useful when debugging deadlocks.
to:
Changed line 40 from:
  • add support for debugging locks (-DDBG_LOCK)
to:
  • support for locking debugging - compile with DBG_LOCK (from menuconfig for example) and each lock will stored information regarding the place from where the lock was acquired (file, function, line) - this is useful when debugging deadlocks.
Deleted lines 206-239:

Devel Plan 2.2 release (TODO list)

ImportanceModuleDescription
xxxxTMeven if decide to "go stateful" very early in your script (via t_newtran), all changes you do later over the request (in request route, branch route, failure route) must be updated/pushed into transaction and remembered at later processing
xxxDIALOGNew events for dialog matched, terminated, etc
xxxDIALOGcontrol profiles/variables DB storage - specify whether we want to ever dump the profies/variables in the DB or only on shutdown. Rethink the current design to see if is the best.
xxxUSRLOCdistributed storage via a NoSQL DB
xxxDIALOGdistributed storage via a NoSQL DB
xxxDIALOGbe able to end all dialogs belonging to a certain profile (MI only)
xxxSIPCAPTURETCP support
xxxRTPProxyadd ICE support for rtpproxy
xxxEvent Interfaceadd ZeroMQ support for Event Interface
xxxcoresend function (including from TM) should return a dedicated ret code to indicate network errors (failure in sending)
xxxcorefix insert_new_lump()/append_new_lump() logic throughout lumps_len()
xxxcoreonce fixed, replace all single anchor_lump()+insert_new_lump_{before,after}() calls with the simpler insert_new_lump() call
xxxnewIntegrate OpenSIPS with libpurple library for IM and Presence
xxTLS coreadd an internal API for TLS management to allow registration of certificates ; a new module to allow TLS certificates provisioning via DB (per domain, per IP, etc)
xxDROUTINGAllow the option to call do_routing with a particular number, but to propagate downstream a different number ( useful for number portability scenarios )
xxTMallow dynamic number of branches per transaction (on demand)
xxStatistics Interfacereplace the BIG LOCK (if other arch than i386) with multiple shared locks (to protect the values)
xxnewnew cachedb_virtual modules, similar to db_virtual, but for NoSQL databases
xxdb_virtualOpensips should be able to start even if db_virtual was not able to connect to all databases. So long as it can connect to at least 1 it should still work
xxB2BSupport for attended transfers on B2BUA
xxevent_datagramInstead of pushing events in text/plan format, to have also the options to pack the event in a json format -> easier to parse by the receiver
xxnewsupport for RFC5626 - Managing Client-Initiated Connections in SIP
xnewnew module mi_stream to provide MI interaction via connection oriented links (TCP or fifo)
xnewRFC6140 Registration for Multiple Phone Numbers
xAVPOPSRegexp based filter for avp_db_load - what AVPs to be loaded
xcoreBe able to specify multiple keys with the "cache_fetch" MI command
xcoreHandle OpenSIPS variable expansion within the format string of assert()
xscriptConsider implementing the "continue" and "break" keywords inside while and for-each
xcachedb coreAllow results to be written in any PV (not just $avp)
xscriptInteger operators: make "+=" and "-=" work!
March 30, 2016, at 10:40 AM by liviu -
Changed line 14 from:
  • debug MI command renamed to log_level (same functionality, input and output)
to:
  • debug MI command was renamed to log_level (same functionality, input and output)
Changed line 22 from:
  • debug global parameter renamed to log_level global parameter (same behavior and values)
to:
  • debug global parameter was renamed to log_level global parameter (same behavior and values)
Changed line 143 from:
  • mi_xmlrpc_ng_root module parameter renamed as http_root
to:
  • mi_xmlrpc_ng_root module parameter was renamed to http_root
March 30, 2016, at 10:33 AM by 85.204.8.247 -
Added lines 96-98:

CLUSTERER module

  • The new clusterer allows you to group multiple OpenSIPS nodes in a cluster in order to share the same information in your entire platform.
March 29, 2016, at 11:56 PM by 109.102.83.252 -
Changed line 159 from:
  • integrated with the clusterer module for pipes sharing. The sharing is not done anymore via a NoSQL database, but directly between OpenSIPS instances (via BIN protocol encapsulated in Clusterer module). New parameters were added to control the clustering : accept_pipes_timeout(the time between two successive incoming packets) and repl_pipes_auth_check (ip authentication check for incoming packets)
to:
  • integrated with the clusterer module for pipes sharing. The sharing is not done anymore via a NoSQL database, but directly between OpenSIPS instances (via BIN protocol encapsulated in Clusterer module). New parameters were added to control the clustering : replicate_pipes_to(the cluster ID where to to share the pipes), accept_pipes_from(the cluster ID of the incoming sharing traffic), accept_pipes_timeout(the time between two successive incoming packets), repl_pipes_auth_check (ip authentication check for incoming packets) and repl_timer_interval (how often the pipe information should be shared within the cluster)
March 29, 2016, at 11:42 PM by 109.102.83.252 -
Added lines 157-159:

RATELIMT module

  • integrated with the clusterer module for pipes sharing. The sharing is not done anymore via a NoSQL database, but directly between OpenSIPS instances (via BIN protocol encapsulated in Clusterer module). New parameters were added to control the clustering : accept_pipes_timeout(the time between two successive incoming packets) and repl_pipes_auth_check (ip authentication check for incoming packets)
March 29, 2016, at 11:36 PM by 109.102.83.252 -
Deleted line 105:
March 29, 2016, at 11:36 PM by 109.102.83.252 -
Changed line 105 from:
  • integrated with the clusterer module for dialog state replication and dialog profile sharing. The sharing is not done anymore via a NoSQL database, but directly between OpenSIPS instances (via BIN protocol encapsulated in Clusterer module).
to:
  • integrated with the clusterer module for dialog state replication and dialog profile sharing. The sharing is not done anymore via a NoSQL database, but directly between OpenSIPS instances (via BIN protocol encapsulated in Clusterer module). New parameters were added to control the clustering : accept_replicated_profile_timeout(the time between two successive incoming packets) and auth_check (ip authentication check for incoming packets)
March 29, 2016, at 11:24 PM by 109.102.83.252 -
Added line 105:
  • integrated with the clusterer module for dialog state replication and dialog profile sharing. The sharing is not done anymore via a NoSQL database, but directly between OpenSIPS instances (via BIN protocol encapsulated in Clusterer module).
March 29, 2016, at 11:12 PM by 109.102.83.252 -
Added line 19:
  • support for locking debugging - compile with DBG_LOCK (from menuconfig for example) and each lock will stored information regarding the place from where the lock was acquired (file, function, line) - this is useful when debugging deadlocks.
March 29, 2016, at 11:06 PM by 109.102.83.252 -
Added lines 187-189:

UAC module

  • CSEQ is properly increased during the authentication process.
March 29, 2016, at 10:52 PM by 109.102.83.252 -
Added line 192:
  • integrated with the clusterer module for contacts replication. The parameter replicate_contacts_to points now to a cluster ID, instead to a list of destinations.
March 29, 2016, at 02:19 PM by 109.102.83.252 -
Changed lines 176-177 from:
  • hep packet manipulation - version 3 only - since the new, chunk based, design of the hep protocol, packet manipulation is now available from the script; hep_get(), hep_set() and hep_del() functions give you the posibility to add new chunks, modify old ones, read their value and also remove them; still you have to know the data type of the header when reading it, since that is not

possible only with the means provided by the protocol;

to:
  • hep packet manipulation - version 3 only - since the new, chunk based, design of the hep protocol, packet manipulation is now available from the script; hep_get(), hep_set() and hep_del() functions give you the possibility to add new chunks, modify old ones, read their value and also remove them; still you have to know the data type of the header when reading it, since that is not possible only with the means provided by the protocol;
March 29, 2016, at 12:45 PM by ionutionita92 -
Changed lines 75-76 from:
  • all flags used for accounting have been removed and replaced with do_accounting() and drop_accounting() functions - read more in the official announcement
to:
  • do_accounting - function through which one can enable all accounting types at once(database, aaa, syslog, event interface, diameter) in multiple ways: if no parameters used normal accounting shall be made else one can enable cdr, missed calls and failed transaction accounting; the function also allows setting the accounting table for database accounting type;
  • drop_accounting - disable accounting types and flags set with do_accounting(); if no parameter provided all accounting shall be stopped; if only the type is provided all acounting for that type shall be stopped; if all flags are dropped(cdr, missed, failed) with the second parameter, normal accounting will still be enabled;
  • read more in the official announcement and the documentation
Changed lines 167-168 from:
  • New module design - all the flags and parameters for different types of tracing have now been replaced with only one parameter called trace_id
to:
  • trace_id - tracing destinations can be defined using this parameter(database, sip duplication, hep duplication) via a generic uri; it also allows nesting multiple types of tracing under the same trace_id;
  • capture_on improvement - the flag can now enable/disable trace_ids via mi; if no parameter used it shall affect all the trace_ids; by default it is enabled for all the ids
  • sip_trace has a new design - the function can now trace on multiple levels - message tracing, transaction tracing(tm module) and dialog tracing(dialog module); transaction aware tracing can also be made in stateless mode(internally generated replies are traced);
  • read the docs and the official announcement for more information;
Changed lines 173-176 from:
  • improved hep support - uses proto_hep module to provide support for all hep protocols
  • hep_route - parameter which defines a special route through which hep related messages should go
  • hep_proxy - posibilty to route hep packets the same way sip messages are routed
  • hep chunk manipulation - posibility to add, remove and modify hep chunks for hep version 3
to:
  • integration with proto_hep - sipcapture now uses proto_hep for communication; the receiving interface for hep messages has to be set up using the module;
  • hep_route - hep packets manipulation became much simpler; now one can define a special route through which all messages coming through hep defined interfaces should go; if none is used, sip_capture shall automatically be called for all the packets; setting sip, which is also the default behavior, will pass the packets through the main request route;
  • hep proxy - OpenSIPS can now act as a full hep proxy; one can set the destination uri and call hep_relay() function; the routing is being made the same way tm module does it, leaving you with the option to use the whole routing logic already available;
  • hep packet manipulation - version 3 only - since the new, chunk based, design of the hep protocol, packet manipulation is now available from the script; hep_get(), hep_set() and hep_del() functions give you the posibility to add new chunks, modify old ones, read their value and also remove them; still you have to know the data type of the header when reading it, since that is not

possible only with the means provided by the protocol;

  • read the docs and the official announcement for more information;
March 29, 2016, at 11:32 AM by ionutionita92 -
March 28, 2016, at 11:18 PM by 109.102.83.252 -
Added line 36:
  • new memgroup global parameter for configurable statistics about shared memory usage ; groups of modules can be defined in the .cfg file that would lead to statistics being generated with the number of fragments, used memory and real-used memory by those modules. The global fragments statistics now show the number of fragments allocated and in use.
March 28, 2016, at 11:04 PM by 109.102.83.252 -
Changed line 73 from:
  • added millisecond precision for the duration of generated CDRs - a new field ms_duration is populated by the module when CDR-based accounting is done
to:
  • added millisecond precision for the duration of generated CDRs - a new field ms_duration is populated by the module when CDR-based accounting is done
March 28, 2016, at 11:00 PM by 109.102.83.252 -
Changed lines 100-101 from:
  • added Re-INVITE in-dialog pinging support
to:
  • added Re-INVITE in-dialog pinging support; controlled via the new "R" and "r" flags available to create_dialog() as well as the new reinvite_ping_interval module parameter. It properly handle late negociation between endpoints, it ensure SDP persistency ( DB and BIN replication ), it ensure compatibility with topology hiding, it has support for whitelist or blacklist logic ( terminate call for 481 and 408 timeout, or terminate call for anything else other than 200 and 491 ).
March 28, 2016, at 10:51 PM by 109.102.83.252 -
Added lines 48-50:

DB_SQLITE module (new)

New DB module to provides SQLite backend support for OpenSIPS.

March 28, 2016, at 10:49 PM by 109.102.83.252 -
Added lines 55-58:

PROTO_HEP module (new)

Provides support for all hep protocols - HEPv1/2 and HEPv3. It concentrate all the HEP protocol related operations (async send and receive via TCP). The siptrace and sipcapture modules do require this module in order to perform the HEP read/write operations.

Deleted lines 145-147:

PROTO_HEP module

  • provides support for all hep protocols - HEPv1/2 and HEPv3
March 28, 2016, at 10:40 PM by 109.102.83.252 -
Added line 35:
  • new $cfg_file, $cfg_line script variables to return the name of the config file and the line inside the file.
March 28, 2016, at 10:27 PM by 109.102.83.252 -
Changed lines 17-18 from:
  • memory dump via SIGUSR1 is now possible when also using the HP_MALLOC or F_MALLOC memory managers
to:
  • the memory dump for Q_MALLOC gives you the list of used memory chunks (and the list of free memory chunks as previously)
  • memory dump via SIGUSR1 is now possible when also using the HP_MALLOC or F_MALLOC memory managers (listing the used memory chunks)
March 28, 2016, at 10:25 PM by 109.102.83.252 -
Added line 17:
  • memory dump via SIGUSR1 is now possible when also using the HP_MALLOC or F_MALLOC memory managers
March 28, 2016, at 10:23 PM by 109.102.83.252 -
Changed line 90 from:
  • added Re-INVITE in-dialog pinging support - TBD
to:
  • added Re-INVITE in-dialog pinging support
March 28, 2016, at 09:52 PM by 109.102.83.252 -
Added lines 75-78:

B2B_SCA

  • the parameter table_name moved to default value b2b_sca (from sca)
March 28, 2016, at 09:51 PM by liviu -
Changed line 30 from:
  • ViM syntax highlighting for OpenSIPS 2.2+ config script
to:
  • ViM syntax highlighting for OpenSIPS config script
March 28, 2016, at 09:50 PM by liviu -
Changed line 30 from:
  • ViM syntax highlighting for OpenSIPS config script
to:
  • ViM syntax highlighting for OpenSIPS 2.2+ config script
March 28, 2016, at 07:02 PM by liviu -
Changed line 22 from:
  • script flags and functions have been removed (simplicity reasons, logic can be rewritten)
to:
  • script flags and functions have been removed
March 28, 2016, at 07:01 PM by liviu -
Changed line 22 from:
  • script flags and functions have been removed for simplicity reasons
to:
  • script flags and functions have been removed (simplicity reasons, logic can be rewritten)
March 28, 2016, at 07:00 PM by liviu -
Added line 22:
  • script flags and functions have been removed for simplicity reasons
March 28, 2016, at 06:57 PM by liviu -
Changed line 40 from:
  • logging improvements on out-of-memory errors, DB errors, parsing errors, memory logging
to:
  • logging improvements on out-of-memory errors, DB errors, TCP errors, parsing errors, memory logging
March 28, 2016, at 06:56 PM by liviu -
Changed line 16 from:
  • auto-correction of timer drifting - correlate and keep in sync the internal timer with the OS timer
to:
  • auto-correction of timer drifting - correlate and keep the internal timer in sync with the OS timer
March 28, 2016, at 06:53 PM by liviu -
Changed line 40 from:
  • improvements to: out-of-memory errors, DB errors, parsing errors, memory logging
to:
  • logging improvements on out-of-memory errors, DB errors, parsing errors, memory logging
March 28, 2016, at 06:50 PM by liviu -
Changed line 40 from:
  • error reporting improvements: out-of-memory errors, DB errors, parsing errors, etc.
to:
  • improvements to: out-of-memory errors, DB errors, parsing errors, memory logging
March 28, 2016, at 06:49 PM by liviu -
Added line 40:
  • error reporting improvements: out-of-memory errors, DB errors, parsing errors, etc.
March 28, 2016, at 06:43 PM by liviu -
Added lines 95-97:

DB_VIRTUAL module

  • added async raw query support
March 28, 2016, at 06:34 PM by liviu -
Added line 91:
  • the partitions parameter can now be given as a multi-line string
March 28, 2016, at 06:30 PM by liviu -
Changed line 36 from:
  * three allocators: F_MALLOC, QM_MALLOC, HP_MALLOC. Any of them can be run in troubleshooting mode with -DDBG_MALLOC. (although we recommend only doing this with QM_MALLOC)
to:
  * three allocators: F_MALLOC, QM_MALLOC, HP_MALLOC. Any of them can be run in troubleshooting mode with -DDBG_MALLOC
March 28, 2016, at 06:28 PM by liviu -
Added lines 35-39:
  • overall allocator rework
    • three allocators: F_MALLOC, QM_MALLOC, HP_MALLOC. Any of them can be run in troubleshooting mode with -DDBG_MALLOC. (although we recommend only doing this with QM_MALLOC)
    • reworked QM_MALLOC memory fragment dump output - it is now much more human-friendly
    • fixed and made F_MALLOC work in debug mode again, since it remains one the best troubleshooting options in high-traffic environments
    • improved menuconfig allocator selection (less error-prone)
March 28, 2016, at 06:22 PM by liviu -
Changed line 47 from:

The amount OpenSIPS script code required in order to use it is minimal, with only a few module parameters, a scripting variable used to access the data and the optional possibility of triggering SQL->NoSQL transfers externally, through the MI interface.\\

to:

The amount OpenSIPS of script coding it requires is minimal, with only a few module parameters, a scripting variable used to access the data and the optional possibility of triggering SQL->NoSQL transfers externally, through the MI interface.\\

March 28, 2016, at 06:21 PM by liviu -
Changed line 47 from:

The amount OpenSIPS script code required in order to use it is minimal, with only a few module parameters, a scripting variable used to access the data and the optional possibility of triggering SQL->NoSQL transfers externally, through the MI interface.

to:

The amount OpenSIPS script code required in order to use it is minimal, with only a few module parameters, a scripting variable used to access the data and the optional possibility of triggering SQL->NoSQL transfers externally, through the MI interface.\\

March 28, 2016, at 06:20 PM by liviu -
Deleted lines 48-52:

OpenSIPS 2.2 switched to TCP transport for BIN interface. (the UDP transport for BIN showed significant package loss under high traffic even in a private network, being unable to meet the requirements for a high-traffic data exchange between multiple OpenSIPS).
Even more, the TCP transport in BIN engine takes advantage of the Asynchronous Reactor, avoiding any potential blocking on reading/writing to the BIN connections.
The old UDP transport support from OpenSIPS core was dropped.
See module documentation

March 28, 2016, at 06:20 PM by liviu -
Added lines 40-49:

OpenSIPS 2.2 switched to TCP transport for BIN interface. (the UDP transport for BIN showed significant package loss under high traffic even in a private network, being unable to meet the requirements for a high-traffic data exchange between multiple OpenSIPS).
Even more, the TCP transport in BIN engine takes advantage of the Asynchronous Reactor, avoiding any potential blocking on reading/writing to the BIN connections.
The old UDP transport support from OpenSIPS core was dropped.
See module documentation

SQL_CACHER module (new)

This new module allows you to cache an arbitrary number of tables from your preferred SQL database into the OpenSIPS-supported cache database of your choice. The amount OpenSIPS script code required in order to use it is minimal, with only a few module parameters, a scripting variable used to access the data and the optional possibility of triggering SQL->NoSQL transfers externally, through the MI interface. See the module documentation

March 28, 2016, at 06:03 PM by liviu -
Changed line 33 from:

OpenSIPS testing / development

to:

OpenSIPS troubleshooting / development

March 28, 2016, at 06:02 PM by liviu -
Added lines 32-34:

OpenSIPS testing / development

  • add support for debugging locks (-DDBG_LOCK)
March 28, 2016, at 05:58 PM by liviu -
Added line 28:
  * {s.trim}, {s.triml}, {s.trimr} - string trimming transformations
March 28, 2016, at 05:56 PM by liviu -
Added line 30:
  • for-each statement: add support for $json iterators
March 28, 2016, at 05:52 PM by liviu -
Added line 28:
  • ViM syntax highlighting for OpenSIPS config script
March 28, 2016, at 05:42 PM by liviu -
Changed lines 23-27 from:
  • '''new string transformations:
    • {s.width}''' - truncates or expands the input to the given len
    • {s.b64encode}''' - represents binary input data into ASCII
    • {s.b64decode}''' - decodes Base64 input
    • {s.xor}''' - encodes the input by XOR'ing with a key
to:
  • new string transformations:
    • {s.width} - truncates or expands the input to the given len
    • {s.b64encode} - represents binary input data into ASCII
    • {s.b64decode} - decodes Base64 input
    • {s.xor} - encodes the input by XOR'ing with a key
March 28, 2016, at 05:42 PM by liviu -
Changed lines 23-27 from:
  • new string transformation: {s.width} - truncates or expands the input to the given len
to:
  • '''new string transformations:
    • {s.width}''' - truncates or expands the input to the given len
    • {s.b64encode}''' - represents binary input data into ASCII
    • {s.b64decode}''' - decodes Base64 input
    • {s.xor}''' - encodes the input by XOR'ing with a key
March 28, 2016, at 04:57 PM by liviu -
Added line 13:
  • default DB engine for MySQL was moved from MyISAM to InnoDB
Deleted lines 14-15:
  • default DB engine for MySQL was moved from MyISAM to InnoDB
  • add support for folded strings in the config file (multi line strings). Now you can have a multi-chunk (even multi line folded) string as parameter to a script function
Added lines 23-24:
  • new string transformation: {s.width} - truncates or expands the input to the given len
  • add support for folded strings in the config file (multi line strings). Now you can have a multi-chunk (even multi line folded) string as parameter to a script function
March 28, 2016, at 04:54 PM by liviu -
Changed lines 13-19 from:
  • new log_level global parameter to replace debug global parameter (same behavior and values)
  • new log_level MI command to replace debug MI command (save functionality, input and output)
  • new $log_level script variable to replace the setdebug() script function (save functionality and input)
  • new debug_mode parameter to replace the outdated fork parameter.
  • global parameters user/uid and group/gid were removed (use the command line options for these settings).
  • default DB engine for MySQL was moved from MyISAM to InnoDB.
  • add support for folded strings in the config file (multi line strings). Now you can have a multi-chunk (even multi line folded) string as parameter to a script function.
to:
  • debug MI command renamed to log_level (same functionality, input and output)
  • default DB engine for MySQL was moved from MyISAM to InnoDB
  • add support for folded strings in the config file (multi line strings). Now you can have a multi-chunk (even multi line folded) string as parameter to a script function
Changed lines 17-23 from:
  • auto-correction of timer drifting - correlate and keep in sync the internal timer with the OS timer.
to:
  • auto-correction of timer drifting - correlate and keep in sync the internal timer with the OS timer

OpenSIPS script

  • debug global parameter renamed to log_level global parameter (same behavior and values)
  • new $log_level script variable to replace the setdebug() script function (same functionality and input)
  • new debug_mode parameter to replace the outdated fork parameter
  • global parameters user/uid and group/gid were removed (use the command line options for these settings)
March 28, 2016, at 04:02 PM by liviu -
Added lines 119-121:

REST_CLIENT module

  • New function: rest_append_hf() - add custom HTTP headers before performing REST actions. Details about the function can be found in the module doc.
Changed line 180 from:
xscriptInteger operators: make "+=" and "-=" work!
to:
xscriptInteger operators: make "+=" and "-=" work!
March 28, 2016, at 12:24 PM by 78.97.93.96 -
Added line 21:
  • auto-correction of timer drifting - correlate and keep in sync the internal timer with the OS timer.
March 28, 2016, at 12:21 PM by 78.97.93.96 -
Added lines 98-101:

OSP module

  • new module parameters for STIR support : request_date_avp, sdp_fingerprint_avp, identity_signature_avp, identity_algorithm_avp, identity_information_avp, identity_type_avp, identity_canon_avp
  • new function for STIR support setrequestdate()
March 28, 2016, at 12:02 PM by 78.97.93.96 -
Added lines 85-88:

MATHOPS module

  • additional operations are available now addition (+), subtraction/negation (-), multiplication (*), division (/), exponentiation (^) and modulus (%)
  • additional C math functions abs (calls to fabs), acos, asin, atan, ceil, cos, cosh, exp, floor, ln (calls to log), log (calls to log10), sin, sinh, sqrt, tan, tanh
March 28, 2016, at 11:53 AM by 78.97.93.96 -
Added line 130:
  • domain DB column is now by default NULL (to save DB space) versus empty string.
March 25, 2016, at 09:07 PM by 109.102.83.252 -
Added lines 100-102:

PROTO_TCP module

  • parameter tcp_async is now by default on !
March 25, 2016, at 09:04 PM by 109.102.83.252 -
Added lines 94-96:

PIKE module

  • new pike_rm MI command to unblock a detected IP address.
March 25, 2016, at 09:00 PM by 109.102.83.252 -
Added line 20:
  • when dns_try_ipv6 is set, try to resolve first as IPv6 (AAA record) instead of IPv4 (A record)
March 25, 2016, at 08:52 PM by 109.102.83.252 -
Added lines 48-50:

CFGUTILS module

  • new asynchronous sleep() and usleep() functions. OpenSIPS will not block anymore while performing a sleep operation.
March 25, 2016, at 08:47 PM by 109.102.83.252 -
Added line 19:
  • add support for folded strings in the config file (multi line strings). Now you can have a multi-chunk (even multi line folded) string as parameter to a script function.
March 25, 2016, at 08:41 PM by 109.102.83.252 -
Added lines 68-69:
  • new no_concurrent_reload module parameter (boolean, default off) to prevent multiple data reloads in the same time (from multiple processes). If you have a large routing set (millions of rules/prefixes), you should consider disabling concurrent reload as they will exhaust the shared memory (by reloading into memory, in the same time, multiple instances of routing data).
March 25, 2016, at 08:35 PM by 109.102.83.252 -
Added line 18:
  • default DB engine for MySQL was moved from MyISAM to InnoDB.
March 25, 2016, at 07:51 PM by 109.102.83.252 -
Changed lines 35-36 from:
  • all flags used for accounting have been removed and replaced with do_accounting() and drop_accounting() functions
to:
  • all flags used for accounting have been removed and replaced with do_accounting() and drop_accounting() functions - read more in the official announcement
Added lines 67-69:

EVENT_RABBITMQ module

  • new sync_mode module parameter to switch to asynchronous sending of the rabbitmq messages - when an event is raised in synchronous mode (sync_mode is set ON) the triggering process waits for the status of the operation from the actual worker process.
March 25, 2016, at 07:29 PM by 109.102.83.252 -
Added lines 49-51:

DB_TEXT module

  • new dbt_reload MI function to force the reload of the cached tables from disk. Depending on parameters it could be a whole cache or a specified database or a single table. If any table cannot be reloaded from disk - the old version preserved and error reported.
March 25, 2016, at 07:26 PM by 109.102.83.252 -
Changed line 69 from:
  • new flag for lb_start() function to pick a random destinations with equal load, if multiple destinations selected. This could help to offload an excessive load from first destination and distribute load in situations when calls duration is near to zero (like failed calls) and counts in resources are almost always zero and does not reflect an actual calls flow.
to:
  • lb_start() / load_balance() has new flag s to pick a random destinations within equal loads, if multiple destinations selected. This could help to offload an excessive load from first destination and distribute load in situations when calls duration is near to zero (like failed calls) and counts in resources are almost always zero and does not reflect an actual calls flow.
March 25, 2016, at 07:21 PM by ionutionita92 -
Added lines 81-83:

PROTO_HEP module

  • provides support for all hep protocols - HEPv1/2 and HEPv3
Added lines 93-98:

SIPCAPTURE module

  • improved hep support - uses proto_hep module to provide support for all hep protocols
  • hep_route - parameter which defines a special route through which hep related messages should go
  • hep_proxy - posibilty to route hep packets the same way sip messages are routed
  • hep chunk manipulation - posibility to add, remove and modify hep chunks for hep version 3
Changed line 147 from:
xscriptInteger operators: make "+=" and "-=" work!
to:
xscriptInteger operators: make "+=" and "-=" work!
March 25, 2016, at 07:18 PM by 109.102.83.252 -
Deleted lines 72-73:
  • XML wise formating - the MI content is split (nodes and attributes) and encapsulated in XML tags. Instead of the long and monolithic string response, now the module provides a proper exploded XML tree; that means the result no longer requires the client to do any custom parsing (beside simple XML parsing, of course).
  • params xml node is not anymore mandatory in the XML request (if no parameters are actually provided to the command). This ensures backward compatibility with the outdated mi_xmlrpc module
Changed lines 74-76 from:
  • mi_xmlrpc_ng_format_version module parameter renamed as format_version
to:
  • new format_version module parameter to control if the XMLRPC output should be or not XML wise formating - the MI content is split (nodes and attributes) and encapsulated in XML tags. Instead of the long and monolithic string response, now the module provides a proper exploded XML tree; that means the result no longer requires the client to do any custom parsing (beside simple XML parsing, of course). Default value is 1 (do XML wise formating) and not 0 (no formating, be backward compatible).
  • params xml node is not anymore mandatory in the XML request (if no parameters are actually provided to the command). This ensures backward compatibility with the outdated mi_xmlrpc module
March 25, 2016, at 07:12 PM by 109.102.83.252 -
Added lines 75-76:
  • mi_xmlrpc_ng_root module parameter renamed as http_root
  • mi_xmlrpc_ng_format_version module parameter renamed as format_version
March 25, 2016, at 07:03 PM by ionutionita92 -
Changed lines 35-36 from:
to:
  • all flags used for accounting have been removed and replaced with do_accounting() and drop_accounting() functions
Added lines 84-86:

SIPTRACE module

  • New module design - all the flags and parameters for different types of tracing have now been replaced with only one parameter called trace_id
March 25, 2016, at 03:00 PM by 109.102.83.252 -
Changed line 12 from:

Logging (core)

to:

OpenSIPS core

Deleted lines 15-16:

Debugging (core)

Changed lines 17-18 from:

BIN Interface (core)

to:
  • global parameters user/uid and group/gid were removed (use the command line options for these settings).
BIN Interface
March 25, 2016, at 02:56 PM by 109.102.83.252 -
Added line 53:
  • new profile_end_dlgs MI command to terminate all the dialogs for a profile (a value may be also provided).
March 25, 2016, at 02:22 PM by 109.102.83.252 -
Added lines 40-42:

AVPOPS module

  • the avp_db_query function returns string "<null>" into multi-fields query for a fields with NULL DB value - this helps keeping the data consistency in multi-row queries, like index n in AVPs will hold the values in row n.
March 25, 2016, at 01:41 PM by 109.102.83.252 -
Added line 53:
  • new parameter full to the ds_list MI command. This new optional parameter additionally print the weight, priority and description for the listed destinations.
March 25, 2016, at 01:19 PM by 109.102.83.252 -
Changed line 82 from:
  • allow retransmissions and wait for reply/timeout on canceled branches - do not do anything about branches with no received reply; better continue the retransmission hoping to get something back; if still not, we will generate the 408 Timeout based on FR timer; this helps with better coping with missed/lated provisional replies in the context of canceling the transaction (see more in the commit log.
to:
  • allow retransmissions and wait for reply/timeout on canceled branches - do not do anything about branches with no received reply; better continue the retransmission hoping to get something back; if still not, we will generate the 408 Timeout based on FR timer; this helps with better coping with missed/lated provisional replies in the context of canceling the transaction (see more in the commit log).
March 25, 2016, at 01:19 PM by 109.102.83.252 -
Added lines 82-83:
  • allow retransmissions and wait for reply/timeout on canceled branches - do not do anything about branches with no received reply; better continue the retransmission hoping to get something back; if still not, we will generate the 408 Timeout based on FR timer; this helps with better coping with missed/lated provisional replies in the context of canceling the transaction (see more in the commit log.
March 25, 2016, at 12:52 PM by 109.102.83.252 -
Added line 49:
  • allow unset_dlg_profile(profile,[value]) to be used from REQUEST route too.
March 25, 2016, at 12:33 PM by 109.102.83.252 -
Added lines 43-45:

CPL-C module

  • module is renamed to cpl_c without any additional changes.
March 25, 2016, at 12:30 PM by 109.102.83.252 -
Changed line 6 from:

Migration from 2.1.x to 2.2.0

to:
March 25, 2016, at 12:12 PM by 109.102.83.252 -
Added lines 36-39:

ALIAS_DB module

  • allow alias_db_find in STARTUP route
  • the functions alias_db_find and alias_db_lookup accept now in the table parameter any combination of variables and strings.
March 25, 2016, at 11:31 AM by 109.102.83.252 -
Changed line 18 from:
to:
March 25, 2016, at 11:31 AM by 109.102.83.252 -
Added lines 16-18:

Debugging (core)

March 24, 2016, at 09:09 PM by 109.102.83.252 -
Added lines 11-15:

Logging (core)

  • new log_level global parameter to replace debug global parameter (same behavior and values)
  • new log_level MI command to replace debug MI command (save functionality, input and output)
  • new $log_level script variable to replace the setdebug() script function (save functionality and input)
March 24, 2016, at 08:27 PM by 109.102.83.252 -
Added lines 34-36:

DISPATCHER module

  • new ds_probing_list module parameter allows OpenSIPS to ping/probe only some certain groups of destinations. This optional parameter contains the list of groups (by ID) to be probe; if missing, all groups are probed (it is backward compatible)
March 24, 2016, at 08:14 PM by 109.102.83.252 -
Added lines 61-62:

TM module

  • the behavior for the auto 100 Giving a try reply changed. Instead of sending this reply when performing the SIP relay (usually at the end of the processing), now is done when entering in stateful mode (the SIP transaction is created), usually when t_newtran is called directly from script or indirectly via other functions (like load_balancing, b2b, osp, etc). Now, the 100 reply may be sent quite early in the script, reducing the changes of retransmissions. Also an consistent behavior is achieved now - same 100 reply is automatically sent when doing t_relay() and t_newtran()+t_relay() in script.
March 24, 2016, at 07:52 PM by 109.102.83.252 -
Added lines 37-39:

DROUTING module

  • wildcard support for partitions - when using partitions, the lookup-kind functions (do_routing(), is_from_gw(), goes_to_gw()) accept now a wildcard for the name of the partition - this means the search will be done in all the existing partitions, instead of a single one. This allows you to search prefixes or gateways in all partitions, when you do not have any information to help identifying the right partition to look into.
March 24, 2016, at 07:46 PM by 109.102.83.252 -
Added line 43:
  • lb_is_destination accepts as port parameter a static value, rather than variables only - lb_is_destination("$si","0") is also a valid call now.
March 24, 2016, at 07:42 PM by 109.102.83.252 -
Added line 46:
  • params xml node is not anymore mandatory in the XML request (if no parameters are actually provided to the command). This ensures backward compatibility with the outdated mi_xmlrpc module
March 24, 2016, at 07:39 PM by 109.102.83.252 -
Changed line 12 from:

BIN Interface

to:

BIN Interface (core)

Changed lines 27-30 from:
  • added millisecond precision for the duration of generated CDRs
to:
  • added millisecond precision for the duration of generated CDRs - a new field ms_duration is populated by the module when CDR-based accounting is done

B2B_ENTITIES module

  • fixed the handling for nested requests by properly implementing "491 Pending" support.
March 24, 2016, at 07:35 PM by 109.102.83.252 -
Added lines 44-46:

NATHELPER module

  • stateful pinging for nathelper - each SIP OPTIONS ping reply can now be matched using the branch from the VIA header. Using the new contact_id feature, this allows us to remove the contacts that don't respond to a certain amount of pings, releasing memory and also improving contact search performances, location table size and also memory consumption. You can read the documentation here. Read paragraph two of the Overview section to understand how to use this feature.
Added lines 54-56:

TOPOLOGY HIDING module

  • the contacts in the final 3xx replies (for initial INVITEs) are not hided any more - this allow SIP redirects (3xx based) to work through the TH module.
Deleted lines 59-61:

NATHELPER module

  • stateful pinging for nathelper - each SIP OPTIONS ping reply can now be matched using the branch from the VIA header. Using the new contact_id feature, this allows us to remove the contacts that don't respond to a certain amount of pings, releasing memory and also improving contact search performances, location table size and also memory consumption. You can read the documentation here. Read paragraph two of the Overview section to understand how to use this feature.
October 14, 2015, at 12:16 PM by vladpaiu -
Added lines 26-31:

ACC module

  • added millisecond precision for the duration of generated CDRs

DIALOG module

  • added Re-INVITE in-dialog pinging support - TBD
Deleted line 65:
xxxxDIALOGre-INVITE based in-dialog pinging (with proper SDP handling)
September 25, 2015, at 03:13 PM by rvlad_patrascu -
Added lines 20-24:

EVENT_VIRTUAL module (new)

The event_virtual module provides a solution for detecting the failure of events delivery and for doing the failover. Even more, beside failure handling, the module addresses the issue of load balancing (or dispatching) for events across multiple backends.
Shortly, the new event_virtual module provides the possibility to create virtual backends for the OpenSIPS Event Interface. A virtual backend can aggregate multiple real backends (transport protocols that are implemented by different OpenSIPS modules) such as: event_xmlrpc, event_rabbitmq etc. The main advantage brought by this module is that when an event is triggered, the virtual module pushes the event to the read backends with different policies (parallel, failover, round-robin) which can be specified in the virtual subscription socket.
See module documentation

September 22, 2015, at 05:06 PM by ionutionita92 -
Changed lines 46-48 from:
to:

URI module

  • del_uri_param function - enables you to remove a parameter from SIP URI taking the key name as argument. All parameters from URI are parsed and, if found, the parameter with the given key is removed. If the parameter is not being found or the URI contains no parameters you shall be notified. Docs here
September 08, 2015, at 05:14 PM by ionutionita92 -
Changed lines 44-45 from:
to:

NATHELPER module

  • stateful pinging for nathelper - each SIP OPTIONS ping reply can now be matched using the branch from the VIA header. Using the new contact_id feature, this allows us to remove the contacts that don't respond to a certain amount of pings, releasing memory and also improving contact search performances, location table size and also memory consumption. You can read the documentation here. Read paragraph two of the Overview section to understand how to use this feature.
August 24, 2015, at 06:30 PM by 89.120.101.121 -
Added lines 12-14:

BIN Interface

For detecting incompatibilities at BIN level, a version field was added to the header of the protocol to stop errors from occurring when two OpenSIPS instances with different version of the protocol exchange BIN messages. So please note that BIN in 2.2 is not backward compatible !

Changed lines 16-18 from:

OpenSIPS 2.2 switched to TCP transport for BIN interface. (the UDP transport for BIN showed significant package loss under high traffic even in a private network, being unable to meet the requirements for a high-traffic data exchange between multiple OpenSIPS). Even more, the TCP transport in BIN engine takes advantage of the Asynchronous Reactor, avoiding any potential blocking on reading/writing to the BIN connections. The old UDP transport support from OpenSIPS core was dropped.

to:

OpenSIPS 2.2 switched to TCP transport for BIN interface. (the UDP transport for BIN showed significant package loss under high traffic even in a private network, being unable to meet the requirements for a high-traffic data exchange between multiple OpenSIPS).
Even more, the TCP transport in BIN engine takes advantage of the Asynchronous Reactor, avoiding any potential blocking on reading/writing to the BIN connections.
The old UDP transport support from OpenSIPS core was dropped.\\

Deleted lines 19-22:

The old UDP transport support was dropped,

August 24, 2015, at 06:28 PM by 89.120.101.121 -
Added lines 11-20:

PROTO_BIN module (new)

OpenSIPS 2.2 switched to TCP transport for BIN interface. (the UDP transport for BIN showed significant package loss under high traffic even in a private network, being unable to meet the requirements for a high-traffic data exchange between multiple OpenSIPS). Even more, the TCP transport in BIN engine takes advantage of the Asynchronous Reactor, avoiding any potential blocking on reading/writing to the BIN connections. The old UDP transport support from OpenSIPS core was dropped. See module documentation

The old UDP transport support was dropped,

August 24, 2015, at 06:21 PM by 89.120.101.121 -
Deleted lines 11-17:

LOAD BALANCER module

  • new flag for lb_start() function to pick a random destinations with equal load, if multiple destinations selected. This could help to offload an excessive load from first destination and distribute load in situations when calls duration is near to zero (like failed calls) and counts in resources are almost always zero and does not reflect an actual calls flow.

LDAP module

  • async ldap_search() - since ldap library has built-in support for async operations, ldap_search can be called at time t, and function result can be checked at t + x time. Also, in the resume route you can also call ldap_result() to retrieve the results from the ldap server. Full documentation here
Added lines 14-22:

LDAP module

  • async ldap_search() - since ldap library has built-in support for async operations, ldap_search can be called at time t, and function result can be checked at t + x time. Also, in the resume route you can also call ldap_result() to retrieve the results from the ldap server. Full documentation here

LOAD BALANCER module

  • new flag for lb_start() function to pick a random destinations with equal load, if multiple destinations selected. This could help to offload an excessive load from first destination and distribute load in situations when calls duration is near to zero (like failed calls) and counts in resources are almost always zero and does not reflect an actual calls flow.

MI_XMLRPC_NG

  • XML wise formating - the MI content is split (nodes and attributes) and encapsulated in XML tags. Instead of the long and monolithic string response, now the module provides a proper exploded XML tree; that means the result no longer requires the client to do any custom parsing (beside simple XML parsing, of course).
August 24, 2015, at 06:07 PM by 89.120.101.121 -
Changed lines 11-32 from:

REGISTRAR lookup() force lookup on all branches flag

A new flag for lookup() function has been added which allows you to force lookup() function to expand not only the RURI to contacts, but also all the AORs that can be found inside branches. The flag is called r from bRanch lookup and you can readFull documentation here

Async authentification and accounting functions for RADIUS module

radius_send_auth and radius_send_acct functions can now be used asynchronously. In order to do this, one must patch the radius library, because, for the moment, they do not offer async support. You have a full tutorial about how to do this here.

Async ldap_search

ldap_search function is now async in version 2.2 . Since ldap library has built-in support for async operations, ldap_search can be called at time t, and function result can be checked at t+x time. Also, in the resume route you can also call ldap_result() to retrieve the results from the ldap server. Full documentation here

Usrloc contact_id

Each contact created using usrloc module now has a unique identifier called contact_id which dramatically improves the performance mostly when using databases. The contact_id also stands as UNIQUE PRIMARY KEY for the location table which holds all the contacts. The performance improvement comes from the fact that now, when a contact is searched/deleted/updated, a numerical index shall be used instead of a string. Moreover, finding a contact in memory shall take less time since the identifier holds inside indexes that makes moving through data structures a less time consuming operation.

Combine multiple deletes in a single query for usrloc module when timer is called

Since we now have the contact_id to identify a contact, we can easily combine multiple database delete requests into a single query based on this identifier. You also have the max_contact_delete parameter to specify how many delete requests shall be put together inside a single query.

to:

LOAD BALANCER module

  • new flag for lb_start() function to pick a random destinations with equal load, if multiple destinations selected. This could help to offload an excessive load from first destination and distribute load in situations when calls duration is near to zero (like failed calls) and counts in resources are almost always zero and does not reflect an actual calls flow.

LDAP module

  • async ldap_search() - since ldap library has built-in support for async operations, ldap_search can be called at time t, and function result can be checked at t + x time. Also, in the resume route you can also call ldap_result() to retrieve the results from the ldap server. Full documentation here

DB_TEXT module

  • new dbt_reload MI command - causes db_text module to reload cached tables from disk.

REGISTRAR module

  • lookup() force lookup on all branches flag - a new flag for lookup() function has been added which allows you to force lookup() function to expand not only the RURI to contacts, but also all the AORs that can be found inside branches. The flag is called r from bRanch lookup and you can readFull documentation here

RADIUS module

  • Async authentication and accounting functions for radius_send_auth() and radius_send_acct() functions can now be used asynchronously. In order to do this, one must patch the radius library, because, for the moment, they do not offer async support. You have a full tutorial about how to do this here.

USRLOC module

  • introduce the Contact ID concept - each contact created using usrloc module now has a unique identifier called contact_id which dramatically improves the performance mostly when using databases. The contact_id also stands as UNIQUE PRIMARY KEY for the location table which holds all the contacts. The performance improvement comes from the fact that now, when a contact is searched/deleted/updated, a numerical index shall be used instead of a string. Moreover, finding a contact in memory shall take less time since the identifier holds inside indexes that makes moving through data structures a less time consuming operation.
  • combine multiple deletes in a single query when timer is called; since we now have the contact_id to identify a contact, we can easily combine multiple database delete requests into a single query based on this identifier. You also have the max_contact_delete parameter to specify how many delete requests shall be put together inside a single query.
August 12, 2015, at 01:17 PM by ionutionita92 -
Added lines 23-35:

Usrloc contact_id

Each contact created using usrloc module now has a unique identifier called contact_id which dramatically improves the performance mostly when using databases. The contact_id also stands as UNIQUE PRIMARY KEY for the location table which holds all the contacts. The performance improvement comes from the fact that now, when a contact is searched/deleted/updated, a numerical index shall be used instead of a string. Moreover, finding a contact in memory shall take less time since the identifier holds inside indexes that makes moving through data structures a less time consuming operation.

Combine multiple deletes in a single query for usrloc module when timer is called

Since we now have the contact_id to identify a contact, we can easily combine multiple database delete requests into a single query based on this identifier. You also have the max_contact_delete parameter to specify how many delete requests shall be put together inside a single query.

Deleted line 47:
xxxUSRLOCwhen db is updated based on timer, combine multiple deletes in a single query
Deleted line 56:
xxUSRLOCuse a single Primary Key (non SIP related) for DB ops
July 24, 2015, at 02:39 PM by ionutionita92 -
Added lines 19-22:

Async ldap_search

ldap_search function is now async in version 2.2 . Since ldap library has built-in support for async operations, ldap_search can be called at time t, and function result can be checked at t+x time. Also, in the resume route you can also call ldap_result() to retrieve the results from the ldap server. Full documentation here

July 24, 2015, at 02:05 PM by ionutionita92 -
Changed lines 11-18 from:
to:

REGISTRAR lookup() force lookup on all branches flag

A new flag for lookup() function has been added which allows you to force lookup() function to expand not only the RURI to contacts, but also all the AORs that can be found inside branches. The flag is called r from bRanch lookup and you can readFull documentation here

Async authentification and accounting functions for RADIUS module

radius_send_auth and radius_send_acct functions can now be used asynchronously. In order to do this, one must patch the radius library, because, for the moment, they do not offer async support. You have a full tutorial about how to do this here.

Deleted line 25:
xxxREGISTRARlookup() should have a flag to force lookup on all branches (and not only on RURI)
March 18, 2015, at 03:43 PM by liviu -
Deleted lines 7-8:

A manual for how to migrate/update from 1.11.x to 2.2.x is now available on site.

Changed lines 12-201 from:

SIP transport protocols rework

Allows new protocols to be added in a much easier way. OpenSIPS 2.2 now comes with two built-in transport modules, TCP and UDP, and three optional protocol-modules: WebSocket, TLS and SCTP. The binary no longer needs to be recompiled every time you choose to support a new protocol.
In order to use one of those protocols (in a SIP listener), you need to load the corresponding module (as any other OpenSIPS module).

Asynchronous I/O operations

OpenSIPS 2.2 had the ability to perform, from script level, various operations in the asynchronous mode. Now you can run DB queries, REST queries or external scripts without the blocking penalty !

The OpenSIPS config file allows you to use certain functions in async way (via the dedicated "async" statement). The suspending and resuming is done at script level. A detailed description of how the async support works in 2.2 is available here: http://www.opensips.org/Documentation/Script-Async-2-2 .

The async scripting support is just the tip of the iceberg (when comes to the work which has been done). To make this possible, radical changes were implemented in OpenSIPS 2.2 (most of them imported from OpenSIPS experimental branch):

  • per-process I/O reactors
  • timer jobs dispatched across all SIP workers (versus dedicated timer procs)
  • updatable transactions in TM (to be able to use the transactions as contexts for the async jump)
  • transaction based async support in TM module
  • processing context (to make it easier to suspend and resume the script execution)

The first modules providing async functions are:

  • avpops for DB mysql queries
  • exec for script execution
  • rest_client for remote REST queries

Core

  • Debugging levels: complete rework. They can now be set globally or individually (per process) using the debug MI command. More information here ...
  • New shm_check MI function - To be used when running with memory debugging (DBG_QM_MALLOC memory allocator). Does a complete scan of the shared memory pool and aborts OpenSIPS on any encountered sign of memory corruption.
  • Support for RFC 5031 urn:service URIs
  • New TCP parameter: tcp_crlf_drop - set to 1 in order to drop "\r\n" pinging messages
  • New core parameter: db_max_async_connections - maximum number of connections to a single DB backend from a single worker
  • New MI command: list_statistics - prints a list of all available statistics in the current configuration of OpenSIPS
  • Memory profiling with HP_MALLOC - send SIGUSR1 to OpenSIPS processes in order to print a detailed status of optimized shared memory buckets and fragment distribution

Config Script

  • New async() script statement: Dramatically improves the scalability of OpenSIPS config scripts which must perform blocking I/O (e.g. MySQL queries, exec scripts, HTTP queries). Halts current script execution and runs a resume route once the async operation is complete. More information in the OpenSIPS 2.2 async tutorial ...
  • loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy-to-use module dependency specification logic for module developers! More information here ...
  • New assert(statement, message) function - If statement does not hold, OpenSIPS can just print the message or even abort (if abort_on_assert is enabled). More information here ...
  • New $rT pseudo variable - Holds the current route type as a string. Useful for determining the original route type when inside another route in script - Allows for more generic and reusable routes. More information here ...
  • New string transformations: s.fill.left, s.fill.right - Fill a string with a char/string until a given final length is reached. Refer to the transformations manual for usage examples
  • New uri transformation: uri.schema - Extract the given URI's schema. More information here
  • sync/async support for event_route - Provides the possibility to run an event route asynchronously. More information here
  • Support for multi-part bodies - $cT (Content-Type) and $rb (Request Body) are now indexed - e.g. $(rb[1])

NEW PROTO_WS module

Module to provide the websocket transport protocol for SIP (server side). You need to load this module if you want to define SIP listeners over WS transport. See the websocket usage tutorial and the module documentation for parameters.

NEW PROTO_TLS module

Module to provide the TLS transport protocol for SIP. You need to load this module if you want to define SIP listeners over TLS. See the TLS usage tutorial and the module documentation for parameters.

NEW PROTO_SCTP module

Module to provide the SCTP transport protocol for SIP. You need to load this module if you want to define SIP listeners over SCTP. See the module documentation for parameters.

NEW COMPRESSION module

A new module which performs both SIP message compression and SIP header compaction. The compression module gives you the means to reduce the size of the message, by using the following features:

  • message body and the header compression
  • unnecessary headers removal
  • header name reduction to RFC compact form (such as 'v' for 'Via'); we support a limited set of compact headers from RFC 3261 and RFC 4028 (complete list at [2])
  • unnecessary attribute lines removal from the sdp body which represent default values

A comprehensive tutorial is available beside the module documentation.

NEW EMERGENCY module

The emergency module provides emergency call treatment, following the IETF specs (RFC 6881, RFC6442) and the i2 specification of the American entity NENA(National Emergency Number Association). Module documentation is available here. Also, a comprehensive tutorial is available for describing the usage cases and how to use this module.

NEW FRAUD_DETECTION module

A new module that helps you prevent fraud by detecting (in a per user fashion) fraudulent calls based on dialing patterns (using patterns on total number of calls, on average duration, number of parallel calls, maximum cps value and more).
See the complete usage tutorial and the module documentation for parameters and functions provided by this module.

NEW RTPENGINE module

A new module that enables media streams to be proxied via RTPENGINE

NEW TOPOLOGY_HIDING module

A new module that offers topology hiding capabilities. The module strips and restores the headers that contain topology information (Via, Record-Route, Route and Contact headers) , and optionally it can also change the Call-ID of the requests. The module can work on top of the dialog module, or in stand-alone mode, thus allowing to do topology hiding for all types of dialogs ( eg. Presence dialogs ) and also for standalone initial requests ( eg. SIP MESSAGE ).
See the usage tutorial and the module documentation for parameters and functions provided by this module.

AVPOPS module

  • avp_db_query() may now be used asynchronously (with MySQL backend). A usage example can be found in the module documentation.

CACHEDB_MONGODB module

  • Added support for DATE fields when doing raw queries. Date fields are returned as UNIX timestamps at script level.

CACHEDB_SQL module

  • Full rework of the module, including a better usage of the CACHEDB interface, and also allowing for multiple DB connections to be used from script.

DOMAIN module

  • You can now specify attributes from the domain names that can be used later on from the script. More information here ...

DB_MYSQL module

  • The db_mysql module is now capable of doing asynchronous raw queries. It implements its own pool of connections (per process), so multiple queries can be done in parallel from the same process.

DB_UNIXODBC module

  • Slight performance improvement for all SELECT queries

DIALOG module

  • Added the E_DLG_STATE_CHANGED event, that will be triggered when the dialog state changes (eg. from early to established, from established to ended, etc ).

DIALPLAN module

  • Routing is now partition based: you may specify which string translation rules want to use to route certain messages. Thus you can re-use the routing rules for various purposes, while keeping the provisioning and reloading part fully separate. More information here...
  • New column: timerec. Allows time recurrence based enabling of dialplan rules (accepted strings are RFC 2445 compatible). Backwards-compatible with the previous DB schema. More information here...
  • dp_translate(): the "id" parameter may now also be given as a plain int

DISPATCHER module

  • Routing is now partition based: you may specify by which partition's rules you want to route certain messages. Thus you can re-use the routing rules for various purposes, while keeping the provisioning and reloading part fully separate. More information here...
  • ds_reload MI command updated to support partition-only reloading
  • ds_is_in_list(): ip and port must no longer be strictly given as pvars
  • Added the destination priority column
  • New modparam: persistent_state - prevent OpenSIPS from making any runtime UPDATE queries on the dispatcher table

DROUTING module

  • Routing is now partition based: you may specify by which partition's rules you want to route certain messages. Thus you can re-use the routing rules for various purposes ( eg: separate routing, prefix matching, etc ), while keeping the provisioning and reloading part fully separate. More information here...
  • Using the new MI function dr_reload_status you can get the time of the last "dr_reload" (update) for any partition. The feature is available even if you don't use partitions. More information here...
  • A new MI function dr_number_routing was added which allows to simulate a do_routing() call, by fetching the list of the gateways / carriers to which a number would be routed. More information here...
  • Added a new event to be triggered when the state of a gateway is changed (either from MI or via probing triggered from script). More information here...
  • New modparam: persistent_state - prevent OpenSIPS from making any runtime UPDATE queries on the dr_gateways and dr_carriers tables

EVENT_RABBITMQ module

  • The rabbitmq module can now send messages to different exchanges . You can simply specify the exchange you want to use in the socket url. More information here ...

EVENT_ROUTE module

  • Added async event handling - Allows for running the events in an asynchronous mode (in a dedicated process). More information here ...

EXEC module

  • Asynchronous exec() - the exec() function may now also be used in the asynchronous mode, via the async() statement.
  • New generic exec() function - All "exec"-like functions merged into a single generic function - more information here

LDAP module

  • StartTLS support introduced. For example configurations, please refer to the new parameter documentation

LOAD_BALANCER module

  • Added a new event to be triggered when the state of a gateway is changed (either from MI or via probing triggered from script). More information here ...
  • Rework of how the LB session is controlled (start, resume, stop) from script:
    • new lb_start(), strictly used to start LB session. if sessions already started, old session will be lost and re-started again.
    • new lb_next(), continues an existing LB session (working as load_balance() from failure route - to do failover)
    • lb_start_and_next() - is simply a shorthand for 'lb_is_started()?lb_next():lb_start()' to simplify scripting. This function logically almost the same as old load_balance() function.
    • new lb_reset() to stop a current LB session
    • new lb_is_started() to check if there is any ongoing LB session
  • the LB process (when started) takes one more flag to enable usage of destination with negative availability (exceeded capacity); do not ignore resources with negative availability, and thus able to select for load balancing destinations with exceeded capacity. This might be needed in scenarios where we want to limit generic calls volume and always pass important/high-priority calls.
  • lb_count_call() - can take negative values, to revert a previous lb_count_call() action

MI_FIFO module

  • Reworked the FIFO handling - added support for detecting if the FIFO file gets deleted (for re-creating it), and also added SIGHUP signal handling for re-creating and re-opening of the FIFO file.

MI_JSON module

  • Rework of how the Json string is build in order to properly accommodate arrays - in many MI answers, OpenSIPS returns arrays - and these arrays need to be properly translated from internal MI structure to the json format.

MSILO module

  • Added support for external body - the MESSAGE has no actual body, but the Content-Type hdr refers to an external body by an HTTP link.
  • Added support for limiting the number of SIP MESSAGES that will be dumped in one shot ( in order to not overload the client )

NATHELPER module

  • Ambiguous "oldmediaip" SDP attributes replaced with "oldcip" and "oldoip" (a5900b5)

PRESENCE module

  • New end_sub_on_timeout module parameter - If a presence subscription should be automatically terminated (destroyed) when receiving a SIP timeout (408) for a sent NOTIFY requests.
  • A new E_PRESENCE_PUBLISH event has been added that is triggered every time OpenSIPS receives a PUBLISH message. Read mode here ...

SIPMSGOPS module

  • The sipmsg_validate function can now be used to check the From, To and Contact headers. More information here...
  • All the Codec related functions accepting regexps can now also accept pseudovariables containing the regex - allowing for fetching the REGEXPs from various sources ( eg. Database ). Read more here ...

SIPTRACE module

  • Split the fromip and toip DB columns ( which previously contained IP & port ) into two separate columns containing IP and port - thus allowing for faster database searches based on IPs.

REST_CLIENT module

  • rest_get() and rest_post() may now be used asynchronously. A usage example can be found in the module documentation.
  • when using rest_post(), you may omit the "send_content_type" parameter. It will default to "application/x-www-form-urlencoded"

RTPPROXY module

  • rtpproxy_enable MI command : optional set_id param added (28a974b)

UAC module

  • When using the uac_auth() for having OpenSIPS do SIP authentication, the CSEQ number will be increased for subsequent authentication requests - thus fixing various downstream issues (e.g. Asterisk treating the AUTH request as a retransmission due to the same CSEQ number).

USRLOC module

  • Added per contact events - raised when a new contact is inserted / updated / deleted. Read more here ...
  • Added User-Agent filtering capabilities for lookup() - so you can now send calls just to particular UAs, if you need to
to:

Devel Plan 2.2 release (TODO list)

ImportanceModuleDescription
xxxxTMeven if decide to "go stateful" very early in your script (via t_newtran), all changes you do later over the request (in request route, branch route, failure route) must be updated/pushed into transaction and remembered at later processing
xxxxDIALOGre-INVITE based in-dialog pinging (with proper SDP handling)
xxxREGISTRARlookup() should have a flag to force lookup on all branches (and not only on RURI)
xxxDIALOGNew events for dialog matched, terminated, etc
xxxDIALOGcontrol profiles/variables DB storage - specify whether we want to ever dump the profies/variables in the DB or only on shutdown. Rethink the current design to see if is the best.
xxxUSRLOCdistributed storage via a NoSQL DB
xxxDIALOGdistributed storage via a NoSQL DB
xxxDIALOGbe able to end all dialogs belonging to a certain profile (MI only)
xxxUSRLOCwhen db is updated based on timer, combine multiple deletes in a single query
xxxSIPCAPTURETCP support
xxxRTPProxyadd ICE support for rtpproxy
xxxEvent Interfaceadd ZeroMQ support for Event Interface
xxxcoresend function (including from TM) should return a dedicated ret code to indicate network errors (failure in sending)
xxxcorefix insert_new_lump()/append_new_lump() logic throughout lumps_len()
xxxcoreonce fixed, replace all single anchor_lump()+insert_new_lump_{before,after}() calls with the simpler insert_new_lump() call
xxxnewIntegrate OpenSIPS with libpurple library for IM and Presence
xxTLS coreadd an internal API for TLS management to allow registration of certificates ; a new module to allow TLS certificates provisioning via DB (per domain, per IP, etc)
xxDROUTINGAllow the option to call do_routing with a particular number, but to propagate downstream a different number ( useful for number portability scenarios )
xxUSRLOCuse a single Primary Key (non SIP related) for DB ops
xxTMallow dynamic number of branches per transaction (on demand)
xxStatistics Interfacereplace the BIG LOCK (if other arch than i386) with multiple shared locks (to protect the values)
xxnewnew cachedb_virtual modules, similar to db_virtual, but for NoSQL databases
xxdb_virtualOpensips should be able to start even if db_virtual was not able to connect to all databases. So long as it can connect to at least 1 it should still work
xxB2BSupport for attended transfers on B2BUA
xxevent_datagramInstead of pushing events in text/plan format, to have also the options to pack the event in a json format -> easier to parse by the receiver
xxnewsupport for RFC5626 - Managing Client-Initiated Connections in SIP
xnewnew module mi_stream to provide MI interaction via connection oriented links (TCP or fifo)
xnewRFC6140 Registration for Multiple Phone Numbers
xAVPOPSRegexp based filter for avp_db_load - what AVPs to be loaded
xcoreBe able to specify multiple keys with the "cache_fetch" MI command
xcoreHandle OpenSIPS variable expansion within the format string of assert()
xscriptConsider implementing the "continue" and "break" keywords inside while and for-each
xcachedb coreAllow results to be written in any PV (not just $avp)
xscriptInteger operators: make "+=" and "-=" work!
March 18, 2015, at 03:40 PM by liviu -
Changed line 6 from:

Migration from 1.11.x to 2.2.0

to:

Migration from 2.1.x to 2.2.0

March 18, 2015, at 01:51 PM by razvancrainea -
Added line 182:
  • A new E_PRESENCE_PUBLISH event has been added that is triggered every time OpenSIPS receives a PUBLISH message. Read mode here ...
March 18, 2015, at 12:21 PM by 89.120.101.121 -
Deleted lines 102-104:
  • Call-ID topology hiding support was added within the dialog module - there are many cases where the callid contains IPs, thus revealing part of the network topology. More information here ...
  • Added the ability to propagate various Contact Header / URI parameters when doing topology hiding - helpful for preserving some end-to-end functionality relying on URI params. Read more here ...
Changed lines 175-176 from:
to:
  • Added support for limiting the number of SIP MESSAGES that will be dumped in one shot ( in order to not overload the client )
Changed lines 201-202 from:
  • Added per contact events - raised when a new contact is inserted / updated / deleted. Read more here ...
to:
  • Added per contact events - raised when a new contact is inserted / updated / deleted. Read more here ...
  • Added User-Agent filtering capabilities for lookup() - so you can now send calls just to particular UAs, if you need to
March 18, 2015, at 12:18 PM by 89.120.101.121 -
Changed lines 99-100 from:
  • (d84649e TODO)
to:

A new module that offers topology hiding capabilities. The module strips and restores the headers that contain topology information (Via, Record-Route, Route and Contact headers) , and optionally it can also change the Call-ID of the requests. The module can work on top of the dialog module, or in stand-alone mode, thus allowing to do topology hiding for all types of dialogs ( eg. Presence dialogs ) and also for standalone initial requests ( eg. SIP MESSAGE ).
See the usage tutorial and the module documentation for parameters and functions provided by this module.

  • Call-ID topology hiding support was added within the dialog module - there are many cases where the callid contains IPs, thus revealing part of the network topology. More information here ...
  • Added the ability to propagate various Contact Header / URI parameters when doing topology hiding - helpful for preserving some end-to-end functionality relying on URI params. Read more here ...
Changed lines 125-127 from:
  • Call-ID topology hiding support was added within the dialog module - there are many cases where the callid contains IPs, thus revealing part of the network topology. More information here ...
  • Added the ability to propagate various Contact Header / URI parameters when doing topology hiding - helpful for preserving some end-to-end functionality relying on URI params. Read more here ...
  • Added the E_DLG_STATE_CHANGED event.
to:
  • Added the E_DLG_STATE_CHANGED event, that will be triggered when the dialog state changes (eg. from early to established, from established to ended, etc ).
March 18, 2015, at 11:15 AM by razvancrainea -
Changed lines 64-65 from:
  • sync/async support for event_route (e3d37f4 TODO)
to:
  • sync/async support for event_route - Provides the possibility to run an event route asynchronously. More information here
Changed line 200 from:
  • Added per contact events - raised when a new contact is inserted / updated / deleted. Read more here ...
to:
  • Added per contact events - raised when a new contact is inserted / updated / deleted. Read more here ...
March 17, 2015, at 08:54 PM by razvancrainea -
Deleted lines 200-239:

Devel Plan 2.2 release (TODO list)

ImportanceModuleDescription
xxxxTMeven if decide to "go stateful" very early in your script (via t_newtran), all changes you do later over the request (in request route, branch route, failure route) must be updated/pushed into transaction and remembered at later processing
xxxxDIALOGre-INVITE based in-dialog pinging (with proper SDP handling)
xxxREGISTRARlookup() should have a flag to force lookup on all branches (and not only on RURI)
xxxDIALOGNew events for dialog matched, terminated, etc
xxxDIALOGcontrol profiles/variables DB storage - specify whether we want to ever dump the profies/variables in the DB or only on shutdown. Rethink the current design to see if is the best.
xxxUSRLOCdistributed storage via a NoSQL DB
xxxDIALOGdistributed storage via a NoSQL DB
xxxDIALOGbe able to end all dialogs belonging to a certain profile (MI only)
xxxUSRLOCwhen db is updated based on timer, combine multiple deletes in a single query
xxxSIPCAPTURETCP support
xxxRTPProxyadd ICE support for rtpproxy
xxxEvent Interfaceadd ZeroMQ support for Event Interface
xxxcoresend function (including from TM) should return a dedicated ret code to indicate network errors (failure in sending)
xxxcorefix insert_new_lump()/append_new_lump() logic throughout lumps_len()
xxxcoreonce fixed, replace all single anchor_lump()+insert_new_lump_{before,after}() calls with the simpler insert_new_lump() call
xxxnewIntegrate OpenSIPS with libpurple library for IM and Presence
xxTLS coreadd an internal API for TLS management to allow registration of certificates ; a new module to allow TLS certificates provisioning via DB (per domain, per IP, etc)
xxDROUTINGAllow the option to call do_routing with a particular number, but to propagate downstream a different number ( useful for number portability scenarios )
xxUSRLOCuse a single Primary Key (non SIP related) for DB ops
xxTMallow dynamic number of branches per transaction (on demand)
xxStatistics Interfacereplace the BIG LOCK (if other arch than i386) with multiple shared locks (to protect the values)
xxnewnew cachedb_virtual modules, similar to db_virtual, but for NoSQL databases
xxdb_virtualOpensips should be able to start even if db_virtual was not able to connect to all databases. So long as it can connect to at least 1 it should still work
xxB2BSupport for attended transfers on B2BUA
xxevent_datagramInstead of pushing events in text/plan format, to have also the options to pack the event in a json format -> easier to parse by the receiver
xxnewsupport for RFC5626 - Managing Client-Initiated Connections in SIP
xnewnew module mi_stream to provide MI interaction via connection oriented links (TCP or fifo)
xnewRFC6140 Registration for Multiple Phone Numbers
xAVPOPSRegexp based filter for avp_db_load - what AVPs to be loaded
xcoreBe able to specify multiple keys with the "cache_fetch" MI command
xcoreHandle OpenSIPS variable expansion within the format string of assert()
xscriptConsider implementing the "continue" and "break" keywords inside while and for-each
xcachedb coreAllow results to be written in any PV (not just $avp)
xscriptInteger operators: make "+=" and "-=" work!
March 17, 2015, at 07:20 PM by 89.120.101.121 -
Changed lines 171-172 from:
  • Full rework (459dffb)
to:
  • Rework of how the Json string is build in order to properly accommodate arrays - in many MI answers, OpenSIPS returns arrays - and these arrays need to be properly translated from internal MI structure to the json format.
Changed lines 174-175 from:
  • Added support for external body (2e4b2d5)
to:
  • Added support for external body - the MESSAGE has no actual body, but the Content-Type hdr refers to an external body by an HTTP link.
Changed line 180 from:
  • New end_sub_on_timeout modparam (7aa96b2)
to:
  • New end_sub_on_timeout module parameter - If a presence subscription should be automatically terminated (destroyed) when receiving a SIP timeout (408) for a sent NOTIFY requests.
March 17, 2015, at 07:08 PM by 89.120.101.121 -
Changed lines 102-103 from:
  • avp_db_query() may now be used asynchronously. A usage example can be found in the module documentation.
to:
  • avp_db_query() may now be used asynchronously (with MySQL backend). A usage example can be found in the module documentation.
Changed lines 114-115 from:
  • The db_mysql module is now capable of doing asynchronous raw queries.
to:
  • The db_mysql module is now capable of doing asynchronous raw queries. It implements its own pool of connections (per process), so multiple queries can be done in parallel from the same process.
Changed lines 158-163 from:
  • rework of how the LB session is controlled (start, resume, stop) from script
  • new lb_reset() function (301e6d3)
  • load_balance() function enhancements (a7549e0)
  • load_balance() - two new algorithms (5986074)
  • lb_count_call() - new parameter to revert a previous lb_count_call() action (cd0ac14)
  • LOTS of changes -> TODO (f43a405)
to:
  • Rework of how the LB session is controlled (start, resume, stop) from script:
    • new lb_start(), strictly used to start LB session. if sessions already started, old session will be lost and re-started again.
    • new lb_next(), continues an existing LB session (working as load_balance() from failure route - to do failover)
    • lb_start_and_next() - is simply a shorthand for 'lb_is_started()?lb_next():lb_start()' to simplify scripting. This function logically almost the same as old load_balance() function.
    • new lb_reset() to stop a current LB session
    • new lb_is_started() to check if there is any ongoing LB session
  • the LB process (when started) takes one more flag to enable usage of destination with negative availability (exceeded capacity); do not ignore resources with negative availability, and thus able to select for load balancing destinations with exceeded capacity. This might be needed in scenarios where we want to limit generic calls volume and always pass important/high-priority calls.
  • lb_count_call() - can take negative values, to revert a previous lb_count_call() action
March 17, 2015, at 06:50 PM by 89.120.101.121 -
Changed lines 81-82 from:

A new module which performs both SIP message compression and SIP header compaction. Read more here ...

to:

A new module which performs both SIP message compression and SIP header compaction. The compression module gives you the means to reduce the size of the message, by using the following features:

  • message body and the header compression
  • unnecessary headers removal
  • header name reduction to RFC compact form (such as 'v' for 'Via'); we support a limited set of compact headers from RFC 3261 and RFC 4028 (complete list at [2])
  • unnecessary attribute lines removal from the sdp body which represent default values

A comprehensive tutorial is available beside the module documentation.

Changed lines 149-152 from:

EXEC module (TODO)

  • Asynchronous exec() - the exec() call may now also be used asynchronously, in an async() block (e7a090f)
  • New generic exec() function - More information here ...
to:

EXEC module

  • Asynchronous exec() - the exec() function may now also be used in the asynchronous mode, via the async() statement.
  • New generic exec() function - All "exec"-like functions merged into a single generic function - more information here
Changed line 156 from:

LOAD_BALANCER module (TODO)

to:

LOAD_BALANCER module

Added line 158:
  • rework of how the LB session is controlled (start, resume, stop) from script
March 17, 2015, at 06:27 PM by 89.120.101.121 -
Changed lines 81-82 from:
  • A new module which performs both SIP message compression and SIP header compaction. Read more here ...
to:

A new module which performs both SIP message compression and SIP header compaction. Read more here ...

Changed lines 84-85 from:
  • The emergency module provides emergency call treatment, following the IETF specs (RFC 6881, RFC6442) and the i2 specification of the American entity NENA(National Emergency Number Association). Module documentation is available here. Also, a comprehensive tutorial is available for describing the usage cases and how to use this module.
to:

The emergency module provides emergency call treatment, following the IETF specs (RFC 6881, RFC6442) and the i2 specification of the American entity NENA(National Emergency Number Association). Module documentation is available here. Also, a comprehensive tutorial is available for describing the usage cases and how to use this module.

Changed line 87 from:
  • A new module that helps you prevent fraud by detecting (in a per user fashion) fraudulent calls based on dialing patterns (using patterns on total number of calls, on average duration, number of parallel calls, maximum cps value and more).\\
to:

A new module that helps you prevent fraud by detecting (in a per user fashion) fraudulent calls based on dialing patterns (using patterns on total number of calls, on average duration, number of parallel calls, maximum cps value and more).\\

Changed line 91 from:
  • A new module that enables media streams to be proxied via RTPENGINE
to:

A new module that enables media streams to be proxied via RTPENGINE

March 17, 2015, at 06:25 PM by 89.120.101.121 -
Changed lines 78-82 from:

Module to provide the SCTP transport protocol for SIP. You need to load this module if you want to define SIP listeners over SCTP. See the module documentation for parameters.

NEW CALL_EMERGENCY module (TODO)

  • (d8cfac6)
to:

Module to provide the SCTP transport protocol for SIP. You need to load this module if you want to define SIP listeners over SCTP. See the module documentation for parameters.

Changed lines 84-85 from:
  • The emergency module provides emergency call treatment, following the architecture i2 specification of the american entity NENA(National Emergency Number Association). Read more here.
to:
  • The emergency module provides emergency call treatment, following the IETF specs (RFC 6881, RFC6442) and the i2 specification of the American entity NENA(National Emergency Number Association). Module documentation is available here. Also, a comprehensive tutorial is available for describing the usage cases and how to use this module.
Changed lines 87-88 from:
  • A new module that helps you prevent fraud by detecting fraudulent calls based on dialing patterns. Read more here.
to:
  • A new module that helps you prevent fraud by detecting (in a per user fashion) fraudulent calls based on dialing patterns (using patterns on total number of calls, on average duration, number of parallel calls, maximum cps value and more).
    See the complete usage tutorial and the module documentation for parameters and functions provided by this module.
March 17, 2015, at 06:19 PM by 89.120.101.121 -
Changed lines 74-77 from:

Module to provide the TLS transport protocol for SIP (server side). You need to load this module if you want to define SIP listeners over WS transport.

NEW PROTO_SCTP module (TODO)

to:

Module to provide the TLS transport protocol for SIP. You need to load this module if you want to define SIP listeners over TLS. See the TLS usage tutorial and the module documentation for parameters.

NEW PROTO_SCTP module

Module to provide the SCTP transport protocol for SIP. You need to load this module if you want to define SIP listeners over SCTP. See the module documentation for parameters.

March 17, 2015, at 06:17 PM by 89.120.101.121 -
Changed lines 70-72 from:

NEW PROTO_TLS module (TODO)

to:

Module to provide the websocket transport protocol for SIP (server side). You need to load this module if you want to define SIP listeners over WS transport. See the websocket usage tutorial and the module documentation for parameters.

NEW PROTO_TLS module

Module to provide the TLS transport protocol for SIP (server side). You need to load this module if you want to define SIP listeners over WS transport.

March 17, 2015, at 06:08 PM by 89.120.101.121 -
Changed lines 15-16 from:

Allows new protocols to be added in a much easier way. OpenSIPS now comes with two built-in transport modules, TCP and UDP, and three optional modules: WebSocket, TLS and SCTP. The binary no longer needs to be recompiled every time you choose to support a new protocol.

to:

Allows new protocols to be added in a much easier way. OpenSIPS 2.2 now comes with two built-in transport modules, TCP and UDP, and three optional protocol-modules: WebSocket, TLS and SCTP. The binary no longer needs to be recompiled every time you choose to support a new protocol.
In order to use one of those protocols (in a SIP listener), you need to load the corresponding module (as any other OpenSIPS module).

Changed lines 20-22 from:

DB core and API (for module developers)''': Primitives for managing asynchronous DB connection pools. To be used by SQL drivers when implementing the async DB API.

to:

OpenSIPS 2.2 had the ability to perform, from script level, various operations in the asynchronous mode. Now you can run DB queries, REST queries or external scripts without the blocking penalty !

The OpenSIPS config file allows you to use certain functions in async way (via the dedicated "async" statement). The suspending and resuming is done at script level. A detailed description of how the async support works in 2.2 is available here: http://www.opensips.org/Documentation/Script-Async-2-2 .

The async scripting support is just the tip of the iceberg (when comes to the work which has been done). To make this possible, radical changes were implemented in OpenSIPS 2.2 (most of them imported from OpenSIPS experimental branch):

  • per-process I/O reactors
  • timer jobs dispatched across all SIP workers (versus dedicated timer procs)
  • updatable transactions in TM (to be able to use the transactions as contexts for the async jump)
  • transaction based async support in TM module
  • processing context (to make it easier to suspend and resume the script execution)

The first modules providing async functions are:

  • avpops for DB mysql queries
  • exec for script execution
  • rest_client for remote REST queries
Changed lines 68-70 from:

NEW PROTO_WS module (TODO)

to:

NEW PROTO_WS module

March 17, 2015, at 05:30 PM by 89.120.101.121 -
Added lines 14-21:

SIP transport protocols rework

Allows new protocols to be added in a much easier way. OpenSIPS now comes with two built-in transport modules, TCP and UDP, and three optional modules: WebSocket, TLS and SCTP. The binary no longer needs to be recompiled every time you choose to support a new protocol.

Asynchronous I/O operations

DB core and API (for module developers)''': Primitives for managing asynchronous DB connection pools. To be used by SQL drivers when implementing the async DB API.

Deleted lines 22-26:
  • Internal networking layer rework - allows new protocols to be added in a much easier way. OpenSIPS now comes with two built-in transport modules, TCP and UDP, and three optional modules: WebSocket, TLS and SCTP. The binary no longer needs to be recompiled every time you choose to support a new protocol.
  • Asynchronous DB core and API (for module developers): Primitives for managing asynchronous DB connection pools. To be used by SQL drivers when implementing the async DB API.
March 17, 2015, at 02:32 PM by liviu -
Changed lines 109-110 from:
to:
  • New modparam: persistent_state - prevent OpenSIPS from making any runtime UPDATE queries on the dispatcher table
Added line 116:
  • New modparam: persistent_state - prevent OpenSIPS from making any runtime UPDATE queries on the dr_gateways and dr_carriers tables
March 16, 2015, at 12:29 PM by liviu -
Changed line 14 from:

OpenSIPS Core

to:

Core

March 16, 2015, at 12:28 PM by liviu -
Changed lines 14-15 from:

Core

to:

OpenSIPS Core

Changed line 34 from:

Script

to:

Config Script

March 16, 2015, at 12:27 PM by liviu -
Changed line 16 from:
  • Internal networking layer rework - allows new protocols to be added in a much easier way. OpenSIPS now comes with two built-in transport modules, TCP and UDP, and three optional shared libraries: WebSocket, TLS and SCTP. The binary no longer needs to be recompiled every time you choose to support a new protocol.
to:
  • Internal networking layer rework - allows new protocols to be added in a much easier way. OpenSIPS now comes with two built-in transport modules, TCP and UDP, and three optional modules: WebSocket, TLS and SCTP. The binary no longer needs to be recompiled every time you choose to support a new protocol.
March 16, 2015, at 12:24 PM by liviu -
Changed line 40 from:
  • New assert(statement, message) function - If statement does not hold, OpenSIPS can just print the message or even abort (if abort_on_assert is enabled).
to:
  • New assert(statement, message) function - If statement does not hold, OpenSIPS can just print the message or even abort (if abort_on_assert is enabled). More information here ...
March 16, 2015, at 12:23 PM by liviu -
Changed line 36 from:
  • New async() script statement: Dramatically improves the scalability of OpenSIPS config scripts which must perform blocking I/O (e.g. MySQL queries, exec scripts, HTTP queries). Halts current script execution and runs a resume route once the async operation is complete. ore information here ...
to:
  • New async() script statement: Dramatically improves the scalability of OpenSIPS config scripts which must perform blocking I/O (e.g. MySQL queries, exec scripts, HTTP queries). Halts current script execution and runs a resume route once the async operation is complete. More information in the OpenSIPS 2.2 async tutorial ...
March 16, 2015, at 12:22 PM by liviu -
Changed line 36 from:
  • New async() script statement: Dramatically improves the scalability of OpenSIPS config scripts which must perform blocking I/O (e.g. MySQL queries, exec scripts, HTTP queries). Halts current script execution and runs a resume route once the async operation is complete. ore information here ...
to:
  • New async() script statement: Dramatically improves the scalability of OpenSIPS config scripts which must perform blocking I/O (e.g. MySQL queries, exec scripts, HTTP queries). Halts current script execution and runs a resume route once the async operation is complete. ore information here ...
March 16, 2015, at 12:22 PM by liviu -
Added lines 35-36:
  • New async() script statement: Dramatically improves the scalability of OpenSIPS config scripts which must perform blocking I/O (e.g. MySQL queries, exec scripts, HTTP queries). Halts current script execution and runs a resume route once the async operation is complete. ore information here ...
March 16, 2015, at 12:11 PM by liviu -
Changed line 60 from:
  • New OpenSIPS module which performs both SIP message compression and SIP header compaction. Read more here ...
to:
  • A new module which performs both SIP message compression and SIP header compaction. Read more here ...
March 16, 2015, at 12:08 PM by liviu -
Changed line 60 from:
  • Added a new compression module which performs both message compression and compaction. Read more here ...
to:
  • New OpenSIPS module which performs both SIP message compression and SIP header compaction. Read more here ...
March 16, 2015, at 12:07 PM by liviu -
Changed line 60 from:
  • Added a new compression module which does message compression and compaction. Read more here.
to:
  • Added a new compression module which performs both message compression and compaction. Read more here ...
March 16, 2015, at 12:01 PM by liviu -
Changed line 40 from:
  • New $rT pseudo variable - Holds the current route type as a string. Useful for determining the original route type when inside another route in script - Allows for more generic and reusable routes. More information here ...
to:
  • New $rT pseudo variable - Holds the current route type as a string. Useful for determining the original route type when inside another route in script - Allows for more generic and reusable routes. More information here ...
March 16, 2015, at 12:00 PM by liviu -
Changed line 40 from:
  • New $rT pseudo variable - Holds the current route type as a string. Useful for determining the original route type when inside another route in script - Allows for more generic and reusable routes. More information here ...
to:
  • New $rT pseudo variable - Holds the current route type as a string. Useful for determining the original route type when inside another route in script - Allows for more generic and reusable routes. More information here ...
March 13, 2015, at 09:11 PM by liviu -
Changed line 26 from:
  • New TCP parameter: tcp_crlf_drop - set to 1 in order to close TCP connections in case of "\r\n" pinging messages
to:
  • New TCP parameter: tcp_crlf_drop - set to 1 in order to drop "\r\n" pinging messages
March 13, 2015, at 09:10 PM by liviu -
Changed line 26 from:
  • New core parameter: tcp_crlf_drop - set to 1 in order to close TCP connections in case of "\r\n" pinging messages (487e7b5)
to:
  • New TCP parameter: tcp_crlf_drop - set to 1 in order to close TCP connections in case of "\r\n" pinging messages
March 13, 2015, at 09:06 PM by liviu -
Changed line 8 from:

A manual for how to migrate/update from 1.11.x to 2.2.x is now available on site.

to:

A manual for how to migrate/update from 1.11.x to 2.2.x is now available on site.

March 13, 2015, at 09:06 PM by liviu -
Changed line 8 from:

A manual for how to migrate/update from 1.10.x to 1.11.x is now available on site.

to:

A manual for how to migrate/update from 1.11.x to 2.2.x is now available on site.

March 13, 2015, at 09:05 PM by liviu -
Changed line 8 from:

To be done on release date.

to:

A manual for how to migrate/update from 1.10.x to 1.11.x is now available on site.

March 13, 2015, at 08:56 PM by liviu -
Changed line 32 from:
  • New output when dumping the free memory hash table with HP_MALLOC
to:
  • Memory profiling with HP_MALLOC - send SIGUSR1 to OpenSIPS processes in order to print a detailed status of optimized shared memory buckets and fragment distribution
March 13, 2015, at 08:50 PM by liviu -
Changed lines 28-30 from:
  • New core parameter: db_max_async_connections - maximum number of connections to a single DB backend from a single worker (3eacd98)
  • New MI command: list_statistics - prints a list of all available statistics in the current configuration of OpenSIPS (dd03176)
to:
  • New core parameter: db_max_async_connections - maximum number of connections to a single DB backend from a single worker
  • New MI command: list_statistics - prints a list of all available statistics in the current configuration of OpenSIPS
March 13, 2015, at 08:07 PM by liviu -
Deleted lines 81-84:

CALL_CENTER module

  • cc_calls table added (2f6eb09 TODO)
  • last_call_end column (4b366c5 TODO)
March 13, 2015, at 08:03 PM by liviu -
Changed lines 128-129 from:

LDAP module (TODO)

  • StartTLS support introduced (0b61cba)
to:

LDAP module

  • StartTLS support introduced. For example configurations, please refer to the new parameter documentation
March 13, 2015, at 07:34 PM by liviu -
Changed lines 46-47 from:
  • sync/async support for event_route (e3d37f4)
to:
  • sync/async support for event_route (e3d37f4 TODO)
Changed lines 72-73 from:
  • (d84649e)
to:
  • (d84649e TODO)
Changed lines 78-79 from:
  • Added support for DATE fields when doing raw queries. Date fields are returned as UNIX timestamps (4782d0a)
to:
  • Added support for DATE fields when doing raw queries. Date fields are returned as UNIX timestamps at script level.
Changed lines 84-86 from:
  • cc_calls table added (2f6eb09)
  • last_call_end column (4b366c5)
to:
  • cc_calls table added (2f6eb09 TODO)
  • last_call_end column (4b366c5 TODO)
Changed lines 94-95 from:
  • Slight performance improvement for all SELECT queries. (683dfaa)
to:
  • Slight performance improvement for all SELECT queries
Changed lines 99-100 from:
  • Added the E_DLG_STATE_CHANGED event (10083ed)
to:
  • Added the E_DLG_STATE_CHANGED event.
Changed lines 104-105 from:
  • dp_translate(): the "id" parameter may now also be given as a plain int (2923d41)
to:
  • dp_translate(): the "id" parameter may now also be given as a plain int
Changed lines 108-110 from:
  • ds_reload MI command updated to support partition-only reloading (7a58426)
  • ds_is_in_list(): ip and port must no longer be strictly given as pvars (e7bccda)
  • Added priority column (6dc7261)
to:
  • ds_reload MI command updated to support partition-only reloading
  • ds_is_in_list(): ip and port must no longer be strictly given as pvars
  • Added the destination priority column
March 13, 2015, at 07:13 PM by liviu -
Changed lines 44-45 from:
  • New uri transformation: uri.schema - Extract the given URI's schema. More information here ...
to:
  • New uri transformation: uri.schema - Extract the given URI's schema. More information here
Changed line 48 from:
  • Support for multi-part body - $cT (Content-Type) and $rb (Request Body) are now indexed - e.g. $(rb[1]) (1986385)
to:
  • Support for multi-part bodies - $cT (Content-Type) and $rb (Request Body) are now indexed - e.g. $(rb[1])
March 13, 2015, at 07:10 PM by liviu -
Changed line 44 from:
  • New uri transformation: uri.schema - Extract the given URI's schema (TODO) transformations manual for usage examples
to:
  • New uri transformation: uri.schema - Extract the given URI's schema. More information here ...
March 13, 2015, at 07:04 PM by liviu -
Changed line 38 from:
  • New assert(statement, message) function - If statement does not hold, OpenSIPS can just print the message or even abort (if abort_on_assert is set to true).
to:
  • New assert(statement, message) function - If statement does not hold, OpenSIPS can just print the message or even abort (if abort_on_assert is enabled).
March 13, 2015, at 07:03 PM by liviu -
Changed line 38 from:
  • New assert(statement, message) function - If statement does not hold, OpenSIPS can just print the message or even abort (if abort_on_assert is set to true).
to:
  • New assert(statement, message) function - If statement does not hold, OpenSIPS can just print the message or even abort (if abort_on_assert is set to true).
March 13, 2015, at 12:29 PM by liviu -
Changed line 36 from:
  • loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy-to-use module dependency specification logic for module developers! More information here ...
to:
  • loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy-to-use module dependency specification logic for module developers! More information here ...
March 13, 2015, at 12:29 PM by liviu -
Changed line 36 from:
  • loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy-to-use module dependency specification logic for module developers! More information here ...
to:
  • loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy-to-use module dependency specification logic for module developers! More information here ...
March 13, 2015, at 12:29 PM by liviu -
Changed line 30 from:
  • New MI command: list_statistics - (dd03176)
to:
  • New MI command: list_statistics - prints a list of all available statistics in the current configuration of OpenSIPS (dd03176)
March 13, 2015, at 12:26 PM by liviu -
Changed line 22 from:
  • New shm_check MI function - To be used when running with memory debugging ( DBG_QM_MALLOC memory allocator ). Does a complete scan of the shared memory pool and aborts OpenSIPS on any encountered sign of memory corruption.
to:
  • New shm_check MI function - To be used when running with memory debugging (DBG_QM_MALLOC memory allocator). Does a complete scan of the shared memory pool and aborts OpenSIPS on any encountered sign of memory corruption.
March 13, 2015, at 12:20 PM by liviu -
Deleted lines 19-20:
  • loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy-to-use module dependency specification logic for module developers! More information here ...
Added lines 35-36:
  • loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy-to-use module dependency specification logic for module developers! More information here ...
March 13, 2015, at 12:18 PM by liviu -
Changed line 18 from:
  • Asynchronous DB core and API: Primitives for managing async DB connection pools. To be used by SQL drivers when implementing the async DB API.
to:
  • Asynchronous DB core and API (for module developers): Primitives for managing asynchronous DB connection pools. To be used by SQL drivers when implementing the async DB API.
March 13, 2015, at 12:17 PM by liviu -
Changed line 16 from:
  • New static TCP & UDP modules (TODO)
to:
  • Internal networking layer rework - allows new protocols to be added in a much easier way. OpenSIPS now comes with two built-in transport modules, TCP and UDP, and three optional shared libraries: WebSocket, TLS and SCTP. The binary no longer needs to be recompiled every time you choose to support a new protocol.
March 11, 2015, at 07:03 PM by liviu -
Added lines 50-51:

NEW PROTO_WS module (TODO)

Deleted lines 54-55:

NEW PROTO_WS module (TODO)

March 11, 2015, at 07:03 PM by liviu -
Changed lines 16-17 from:
  • WebSocket support (TODO)
to:
  • New static TCP & UDP modules (TODO)
Added lines 49-54:

NEW PROTO_TLS module (TODO)

NEW PROTO_SCTP module (TODO)

NEW PROTO_WS module (TODO)

March 11, 2015, at 07:01 PM by liviu -
March 11, 2015, at 07:00 PM by liviu -
Added lines 15-16:
  • WebSocket support (TODO)
March 11, 2015, at 06:59 PM by liviu -
Added lines 31-32:
  • New output when dumping the free memory hash table with HP_MALLOC
March 11, 2015, at 06:56 PM by liviu -
Added line 153:
  • when using rest_post(), you may omit the "send_content_type" parameter. It will default to "application/x-www-form-urlencoded"
March 11, 2015, at 06:52 PM by liviu -
Added line 35:
Added line 37:
Added lines 39-41:
  • New uri transformation: uri.schema - Extract the given URI's schema (TODO) transformations manual for usage examples
Added line 43:
March 11, 2015, at 06:35 PM by liviu -
Added lines 54-56:

NEW TOPOLOGY_HIDING module

  • (d84649e)
March 11, 2015, at 06:33 PM by liviu -
Added lines 39-41:

NEW CALL_EMERGENCY module (TODO)

  • (d8cfac6)
March 11, 2015, at 06:31 PM by liviu -
Added lines 54-56:

CACHEDB_MONGODB module

  • Added support for DATE fields when doing raw queries. Date fields are returned as UNIX timestamps (4782d0a)
March 11, 2015, at 06:21 PM by liviu -
Added lines 27-28:
  • New core parameter: db_max_async_connections - maximum number of connections to a single DB backend from a single worker (3eacd98)
March 11, 2015, at 06:10 PM by liviu -
Added line 98:
  • Asynchronous exec() - the exec() call may now also be used asynchronously, in an async() block (e7a090f)
March 11, 2015, at 06:08 PM by liviu -
Added lines 25-26:
  • New core parameter: tcp_crlf_drop - set to 1 in order to close TCP connections in case of "\r\n" pinging messages (487e7b5)
March 11, 2015, at 05:56 PM by liviu -
Added line 34:
  • Support for multi-part body - $cT (Content-Type) and $rb (Request Body) are now indexed - e.g. $(rb[1]) (1986385)
March 11, 2015, at 05:52 PM by liviu -
Changed line 100 from:

LOAD_BALANCER module

to:

LOAD_BALANCER module (TODO)

March 11, 2015, at 05:52 PM by liviu -
Added line 106:
  • LOTS of changes -> TODO (f43a405)
March 11, 2015, at 05:44 PM by liviu -
Added lines 115-117:

NATHELPER module

  • Ambiguous "oldmediaip" SDP attributes replaced with "oldcip" and "oldoip" (a5900b5)
March 11, 2015, at 05:41 PM by liviu -
Added lines 115-117:

PRESENCE module

  • New end_sub_on_timeout modparam (7aa96b2)
March 11, 2015, at 05:29 PM by liviu -
Changed line 94 from:

EXEC module (todo)

to:

EXEC module (TODO)

Added lines 96-98:

LDAP module (TODO)

  • StartTLS support introduced (0b61cba)
March 11, 2015, at 05:26 PM by liviu -
Added lines 93-95:

EXEC module (todo)

  • New generic exec() function - More information here ...
March 11, 2015, at 05:06 PM by liviu -
Added lines 62-64:

DB_UNIXODBC module

  • Slight performance improvement for all SELECT queries. (683dfaa)
March 11, 2015, at 04:45 PM by liviu -
Added line 95:
  • load_balance() - two new algorithms (5986074)
March 11, 2015, at 04:43 PM by liviu -
Changed line 95 from:
  • lb_count_call() - new parameter to revert the previous action (cd0ac14)
to:
  • lb_count_call() - new parameter to revert a previous lb_count_call() action (cd0ac14)
March 11, 2015, at 04:43 PM by liviu -
Added line 95:
  • lb_count_call() - new parameter to revert the previous action (cd0ac14)
March 11, 2015, at 04:41 PM by liviu -
Added line 93:
  • new lb_reset() function (301e6d3)
March 11, 2015, at 04:40 PM by liviu -
Added line 93:
  • load_balance() function enhancements (a7549e0)
March 11, 2015, at 04:40 PM by liviu -
Changed lines 83-84 from:
  • Added a new event to be triggered when the state of a gateway is changed ( either from MI or via probing triggered from script ). More information here...
to:
  • Added a new event to be triggered when the state of a gateway is changed (either from MI or via probing triggered from script). More information here...
Changed lines 89-90 from:
  • Added async event handling - Allows for running the events in an asynchronous mode ( in a dedicated process ). More information here ...
to:
  • Added async event handling - Allows for running the events in an asynchronous mode (in a dedicated process). More information here ...
Changed lines 92-93 from:
  • Added a new event to be triggered when the state of a gateway is changed ( either from MI or via probing triggered from script ). More information here ...
to:
  • Added a new event to be triggered when the state of a gateway is changed (either from MI or via probing triggered from script). More information here ...
Changed line 95 from:
  • Reworked the FIFO handling - added support for detecting if the FIFO file gets deleted ( for re-creating it ), and also added SIGHUP signal handling for re-creating and re-opening of the FIFO file.
to:
  • Reworked the FIFO handling - added support for detecting if the FIFO file gets deleted (for re-creating it), and also added SIGHUP signal handling for re-creating and re-opening of the FIFO file.
March 11, 2015, at 04:39 PM by liviu -
Added line 33:
  • sync/async support for event_route (e3d37f4)
March 11, 2015, at 04:32 PM by liviu -
Added line 65:
  • Added the E_DLG_STATE_CHANGED event (10083ed)
March 11, 2015, at 04:31 PM by liviu -
Changed line 32 from:
  • New string transformations: (s.fill.left / s.fill.right) - Fill a string with a char/string until a given final length is reached. Refer to the transformations manual for usage examples
to:
  • New string transformations: s.fill.left, s.fill.right - Fill a string with a char/string until a given final length is reached. Refer to the transformations manual for usage examples
March 11, 2015, at 04:31 PM by liviu -
Changed line 32 from:
  • New string transformation (s.fill) - Fills a string with a char/string until a given final length is reached. Refer to the transformations manual for usage examples
to:
  • New string transformations: (s.fill.left / s.fill.right) - Fill a string with a char/string until a given final length is reached. Refer to the transformations manual for usage examples
March 11, 2015, at 04:28 PM by liviu -
Added line 74:
  • ds_is_in_list(): ip and port must no longer be strictly given as pvars (e7bccda)
March 11, 2015, at 04:23 PM by liviu -
Changed line 64 from:
  • Added the ability to propagate various Contact URI parameters when doing topology hiding - helpful for preserving some end-to-end functionality relying on URI params. Read more here ...
to:
  • Added the ability to propagate various Contact Header / URI parameters when doing topology hiding - helpful for preserving some end-to-end functionality relying on URI params. Read more here ...
March 11, 2015, at 04:07 PM by liviu -
Changed line 114 from:
  • When using the uac_auth() for having OpenSIPS do SIP authentication, the CSEQ number will be increased for subsequent authentication requests - thus fixing various downstream issues ( eg. Asterisk treating the AUTH request as a retransmission due to the same CSEQ number ).
to:
  • When using the uac_auth() for having OpenSIPS do SIP authentication, the CSEQ number will be increased for subsequent authentication requests - thus fixing various downstream issues (e.g. Asterisk treating the AUTH request as a retransmission due to the same CSEQ number).
March 11, 2015, at 02:21 PM by liviu -
Added lines 25-26:
  • New MI command: list_statistics - (dd03176)
March 11, 2015, at 01:10 PM by liviu -
Added line 71:
  • ds_reload MI command updated to support partition-only reloading (7a58426)
March 11, 2015, at 12:54 PM by liviu -
Added line 52:
  • last_call_end column (4b366c5)
March 11, 2015, at 12:53 PM by liviu -
Added lines 50-52:

CALL_CENTER module

  • cc_calls table added (2f6eb09)
Deleted lines 55-57:

EVENT_RABBITMQ module

  • The rabbitmq module can now send messages to different exchanges . You can simply specify the exchange you want to use in the socket url. More information here ...
Added lines 77-79:

EVENT_RABBITMQ module

  • The rabbitmq module can now send messages to different exchanges . You can simply specify the exchange you want to use in the socket url. More information here ...
March 11, 2015, at 12:51 PM by liviu -
Added lines 86-88:

MI_JSON module

  • Full rework (459dffb)
March 11, 2015, at 12:50 PM by liviu -
Added line 70:
  • Added priority column (6dc7261)
March 11, 2015, at 12:49 PM by liviu -
Added line 66:
  • dp_translate(): the "id" parameter may now also be given as a plain int (2923d41)
March 11, 2015, at 12:47 PM by liviu -
Changed lines 83-86 from:
  • Reworked the FIFO handling - added support for detecting if the FIFO file gets deleted ( for re-creating it ), and also added SIGHUP signal handling for re-creating and re-opening of the FIFO file.
to:
  • Reworked the FIFO handling - added support for detecting if the FIFO file gets deleted ( for re-creating it ), and also added SIGHUP signal handling for re-creating and re-opening of the FIFO file.

MSILO module

  • Added support for external body (2e4b2d5)
March 11, 2015, at 12:44 PM by liviu -
Added lines 94-96:

RTPPROXY module

  • rtpproxy_enable MI command : optional set_id param added (28a974b)
March 10, 2015, at 01:53 PM by liviu -
Changed line 22 from:
  • New shm_check MI function - To be used when running with memory debugging ( DBG_QM_MALLOC memory allocator ). Does a complete scan of the shared memory pool and aborts OpenSIPS on any encountered memory error.
to:
  • New shm_check MI function - To be used when running with memory debugging ( DBG_QM_MALLOC memory allocator ). Does a complete scan of the shared memory pool and aborts OpenSIPS on any encountered sign of memory corruption.
March 10, 2015, at 01:52 PM by liviu -
Changed line 24 from:
  • Support for RFC 5031 urn:service URIs -
to:
  • Support for RFC 5031 urn:service URIs
March 10, 2015, at 01:52 PM by liviu -
Added lines 23-24:
  • Support for RFC 5031 urn:service URIs -
March 06, 2015, at 02:10 PM by liviu -
Changed line 18 from:
  • loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy module dependency specification logic for module developers! More information here ...
to:
  • loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy-to-use module dependency specification logic for module developers! More information here ...
March 06, 2015, at 01:33 PM by liviu -
Changed line 91 from:
  • rest_get() may now be used asynchronously. A usage example can be found in the module documentation.
to:
  • rest_get() and rest_post() may now be used asynchronously. A usage example can be found in the module documentation.
February 26, 2015, at 11:05 AM by razvancrainea -
Changed line 34 from:
  • The emergency module provides emergency call treatment, following the architecture i2 specification of the american entity NENA. (National Emergency Number Association). Read more here.
to:
  • The emergency module provides emergency call treatment, following the architecture i2 specification of the american entity NENA(National Emergency Number Association). Read more here.
February 26, 2015, at 11:05 AM by razvancrainea -
Added lines 32-37:

NEW EMERGENCY module

  • The emergency module provides emergency call treatment, following the architecture i2 specification of the american entity NENA. (National Emergency Number Association). Read more here.

NEW FRAUD_DETECTION module

  • A new module that helps you prevent fraud by detecting fraudulent calls based on dialing patterns. Read more here.
February 25, 2015, at 01:44 PM by razvancrainea -
Added lines 30-32:

NEW COMPRESSION module

  • Added a new compression module which does message compression and compaction. Read more here.
Deleted lines 40-42:

NEW COMPRESSION module

  • Added a new compression module which does message compression and compaction. Read more here.
February 24, 2015, at 06:46 PM by razvancrainea -
Added lines 39-41:

NEW COMPRESSION module

  • Added a new compression module which does message compression and compaction. Read more here.
Deleted lines 91-94:

COMPRESSION module

  • Succesfully added compression module which does message compression and compaction. Read more

http://lists.opensips.org/pipermail/devel/2015-February/016340.html

February 19, 2015, at 05:24 PM by ionutionita92 -
Changed line 90 from:

USRLOC module

to:

COMPRESSION module

February 19, 2015, at 05:24 PM by ionutionita92 -
Added lines 89-93:

USRLOC module

  • Succesfully added compression module which does message compression and compaction. Read more

http://lists.opensips.org/pipermail/devel/2015-February/016340.html

February 02, 2015, at 01:32 PM by liviu -
Changed line 18 from:
  • Loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy module dependency specification logic for module developers! More information here ...
to:
  • loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy module dependency specification logic for module developers! More information here ...
January 23, 2015, at 06:34 PM by liviu -
Added lines 80-82:

REST_CLIENT module

  • rest_get() may now be used asynchronously. A usage example can be found in the module documentation.
January 23, 2015, at 06:32 PM by liviu -
Changed line 16 from:
  • Async DB core and API: Primitives for managing async DB connection pools. To be used by SQL drivers when implementing the async DB API.
to:
  • Asynchronous DB core and API: Primitives for managing async DB connection pools. To be used by SQL drivers when implementing the async DB API.
January 23, 2015, at 06:30 PM by liviu -
Changed line 34 from:
  • avp_db_query() may now be used asynchronously. For usage examples, please refer to the module documentation.
to:
  • avp_db_query() may now be used asynchronously. A usage example can be found in the module documentation.
January 23, 2015, at 06:29 PM by liviu -
Added lines 18-19:
  • Loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy module dependency specification logic for module developers! More information here ...
Deleted lines 21-22:
  • Loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy module dependency specification logic for module developers! More information here ...
Changed lines 34-35 from:
  • avp_db_query() may now be used asynchronously. For usage examples, please refer to the module documentation.
to:
  • avp_db_query() may now be used asynchronously. For usage examples, please refer to the module documentation.
Changed line 46 from:
  • The db_mysql module is now capable of doing asynchronous raw queries.
to:
  • The db_mysql module is now capable of doing asynchronous raw queries.
January 23, 2015, at 06:28 PM by liviu -
Added lines 16-17:
  • Async DB core and API: Primitives for managing async DB connection pools. To be used by SQL drivers when implementing the async DB API.
Added lines 33-35:

AVPOPS module

  • avp_db_query() may now be used asynchronously. For usage examples, please refer to the module documentation.
Added lines 44-46:

DB_MYSQL module

  • The db_mysql module is now capable of doing asynchronous raw queries.
October 10, 2014, at 02:53 PM by liviu -
Changed lines 16-17 from:
  • Debugging levels: complete rework. They can now be set globally or individually (per process) using the debug MI command. More information here ...
to:
  • Debugging levels: complete rework. They can now be set globally or individually (per process) using the debug MI command. More information here ...
Changed lines 25-27 from:
  • New $rT pseudo variable - Holds the current route type as a string. Useful for determining the original route type when inside another route in script - Allows for more generic and reusable routes. More information here ...
  • New string transformation (s.fill) - Fills a string with a char/string until a given final length is reached. Refer to the transformations manual for usage examples
to:
  • New $rT pseudo variable - Holds the current route type as a string. Useful for determining the original route type when inside another route in script - Allows for more generic and reusable routes. More information here ...
  • New string transformation (s.fill) - Fills a string with a char/string until a given final length is reached. Refer to the transformations manual for usage examples
Changed lines 35-36 from:
  • You can now specify attributes from the domain names that can be used later on from the script. More information here ...
to:
  • You can now specify attributes from the domain names that can be used later on from the script. More information here ...
Changed lines 38-39 from:
  • The rabbitmq module can now send messages to different exchanges . You can simply specify the exchange you want to use in the socket url. More information here ...
to:
  • The rabbitmq module can now send messages to different exchanges . You can simply specify the exchange you want to use in the socket url. More information here ...
Changed lines 41-43 from:
  • Call-ID topology hiding support was added within the dialog module - there are many cases where the callid contains IPs, thus revealing part of the network topology. More information here ...
  • Added the ability to propagate various Contact URI parameters when doing topology hiding - helpful for preserving some end-to-end functionality relying on URI params. Read more here ...
to:
  • Call-ID topology hiding support was added within the dialog module - there are many cases where the callid contains IPs, thus revealing part of the network topology. More information here ...
  • Added the ability to propagate various Contact URI parameters when doing topology hiding - helpful for preserving some end-to-end functionality relying on URI params. Read more here ...
Changed lines 45-47 from:
  • Routing is now partition based: you may specify which string translation rules want to use to route certain messages. Thus you can re-use the routing rules for various purposes, while keeping the provisioning and reloading part fully separate. More information here...
  • New column: timerec. Allows time recurrence based enabling of dialplan rules (accepted strings are RFC 2445 compatible). Backwards-compatible with the previous DB schema. More information here...
to:
  • Routing is now partition based: you may specify which string translation rules want to use to route certain messages. Thus you can re-use the routing rules for various purposes, while keeping the provisioning and reloading part fully separate. More information here...
  • New column: timerec. Allows time recurrence based enabling of dialplan rules (accepted strings are RFC 2445 compatible). Backwards-compatible with the previous DB schema. More information here...
Changed lines 49-50 from:
  • Routing is now partition based: you may specify by which partition's rules you want to route certain messages. Thus you can re-use the routing rules for various purposes, while keeping the provisioning and reloading part fully separate. More information here...
to:
  • Routing is now partition based: you may specify by which partition's rules you want to route certain messages. Thus you can re-use the routing rules for various purposes, while keeping the provisioning and reloading part fully separate. More information here...
Changed lines 52-56 from:
  • Routing is now partition based: you may specify by which partition's rules you want to route certain messages. Thus you can re-use the routing rules for various purposes ( eg: separate routing, prefix matching, etc ), while keeping the provisioning and reloading part fully separate. More information here...
  • Using the new MI function dr_reload_status you can get the time of the last "dr_reload" (update) for any partition. The feature is available even if you don't use partitions. More information here...
  • A new MI function dr_number_routing was added which allows to simulate a do_routing() call, by fetching the list of the gateways / carriers to which a number would be routed. More information here...
  • Added a new event to be triggered when the state of a gateway is changed ( either from MI or via probing triggered from script ). More information here...
to:
  • Routing is now partition based: you may specify by which partition's rules you want to route certain messages. Thus you can re-use the routing rules for various purposes ( eg: separate routing, prefix matching, etc ), while keeping the provisioning and reloading part fully separate. More information here...
  • Using the new MI function dr_reload_status you can get the time of the last "dr_reload" (update) for any partition. The feature is available even if you don't use partitions. More information here...
  • A new MI function dr_number_routing was added which allows to simulate a do_routing() call, by fetching the list of the gateways / carriers to which a number would be routed. More information here...
  • Added a new event to be triggered when the state of a gateway is changed ( either from MI or via probing triggered from script ). More information here...
Changed lines 58-59 from:
  • Added async event handling - Allows for running the events in an asynchronous mode ( in a dedicated process ). More information here ...
to:
  • Added async event handling - Allows for running the events in an asynchronous mode ( in a dedicated process ). More information here ...
Changed lines 61-62 from:
  • Added a new event to be triggered when the state of a gateway is changed ( either from MI or via probing triggered from script ). More information here ...
to:
  • Added a new event to be triggered when the state of a gateway is changed ( either from MI or via probing triggered from script ). More information here ...
Changed lines 67-69 from:
  • The sipmsg_validate function can now be used to check the From, To and Contact headers. More information here...
  • All the Codec related functions accepting regexps can now also accept pseudovariables containing the regex - allowing for fetching the REGEXPs from various sources ( eg. Database ). Read more here ...
to:
  • The sipmsg_validate function can now be used to check the From, To and Contact headers. More information here...
  • All the Codec related functions accepting regexps can now also accept pseudovariables containing the regex - allowing for fetching the REGEXPs from various sources ( eg. Database ). Read more here ...
Changed line 77 from:
  • Added per contact events - raised when a new contact is inserted / updated / deleted. Read more here ...
to:
  • Added per contact events - raised when a new contact is inserted / updated / deleted. Read more here ...
Changed line 79 from:

Devel Plan 1.12 release (TODO list)

to:

Devel Plan 2.2 release (TODO list)

October 09, 2014, at 07:30 PM by 89.120.101.121 -
Changed line 1 from:
About -> Available Versions -> 1.12.x Releases -> Release 2.2.0
to:
About -> Available Versions -> 2.2.x Releases -> Release 2.2.0
October 09, 2014, at 07:29 PM by 89.120.101.121 -
Added lines 1-116:
About -> Available Versions -> 1.12.x Releases -> Release 2.2.0

This page has been visited 7952 times. (:toc-float Table of Content:)


Migration from 1.11.x to 2.2.0

To be done on release date.


What is new in 2.2.0

Core

  • Debugging levels: complete rework. They can now be set globally or individually (per process) using the debug MI command. More information here ...
  • Loadmodule statement ordering: eliminated! Modules can now be loaded in any order within the config script. Also added an easy module dependency specification logic for module developers! More information here ...
  • New shm_check MI function - To be used when running with memory debugging ( DBG_QM_MALLOC memory allocator ). Does a complete scan of the shared memory pool and aborts OpenSIPS on any encountered memory error.

Script

  • New assert(statement, message) function - If statement does not hold, OpenSIPS can just print the message or even abort (if abort_on_assert is set to true).
  • New $rT pseudo variable - Holds the current route type as a string. Useful for determining the original route type when inside another route in script - Allows for more generic and reusable routes. More information here ...
  • New string transformation (s.fill) - Fills a string with a char/string until a given final length is reached. Refer to the transformations manual for usage examples

NEW RTPENGINE module

  • A new module that enables media streams to be proxied via RTPENGINE

CACHEDB_SQL module

  • Full rework of the module, including a better usage of the CACHEDB interface, and also allowing for multiple DB connections to be used from script.

DOMAIN module

  • You can now specify attributes from the domain names that can be used later on from the script. More information here ...

EVENT_RABBITMQ module

  • The rabbitmq module can now send messages to different exchanges . You can simply specify the exchange you want to use in the socket url. More information here ...

DIALOG module

  • Call-ID topology hiding support was added within the dialog module - there are many cases where the callid contains IPs, thus revealing part of the network topology. More information here ...
  • Added the ability to propagate various Contact URI parameters when doing topology hiding - helpful for preserving some end-to-end functionality relying on URI params. Read more here ...

DIALPLAN module

  • Routing is now partition based: you may specify which string translation rules want to use to route certain messages. Thus you can re-use the routing rules for various purposes, while keeping the provisioning and reloading part fully separate. More information here...
  • New column: timerec. Allows time recurrence based enabling of dialplan rules (accepted strings are RFC 2445 compatible). Backwards-compatible with the previous DB schema. More information here...

DISPATCHER module

  • Routing is now partition based: you may specify by which partition's rules you want to route certain messages. Thus you can re-use the routing rules for various purposes, while keeping the provisioning and reloading part fully separate. More information here...

DROUTING module

  • Routing is now partition based: you may specify by which partition's rules you want to route certain messages. Thus you can re-use the routing rules for various purposes ( eg: separate routing, prefix matching, etc ), while keeping the provisioning and reloading part fully separate. More information here...
  • Using the new MI function dr_reload_status you can get the time of the last "dr_reload" (update) for any partition. The feature is available even if you don't use partitions. More information here...
  • A new MI function dr_number_routing was added which allows to simulate a do_routing() call, by fetching the list of the gateways / carriers to which a number would be routed. More information here...
  • Added a new event to be triggered when the state of a gateway is changed ( either from MI or via probing triggered from script ). More information here...

EVENT_ROUTE module

  • Added async event handling - Allows for running the events in an asynchronous mode ( in a dedicated process ). More information here ...

LOAD_BALANCER module

  • Added a new event to be triggered when the state of a gateway is changed ( either from MI or via probing triggered from script ). More information here ...

MI_FIFO module

  • Reworked the FIFO handling - added support for detecting if the FIFO file gets deleted ( for re-creating it ), and also added SIGHUP signal handling for re-creating and re-opening of the FIFO file.

SIPMSGOPS module

  • The sipmsg_validate function can now be used to check the From, To and Contact headers. More information here...
  • All the Codec related functions accepting regexps can now also accept pseudovariables containing the regex - allowing for fetching the REGEXPs from various sources ( eg. Database ). Read more here ...

SIPTRACE module

  • Split the fromip and toip DB columns ( which previously contained IP & port ) into two separate columns containing IP and port - thus allowing for faster database searches based on IPs.

UAC module

  • When using the uac_auth() for having OpenSIPS do SIP authentication, the CSEQ number will be increased for subsequent authentication requests - thus fixing various downstream issues ( eg. Asterisk treating the AUTH request as a retransmission due to the same CSEQ number ).

USRLOC module

  • Added per contact events - raised when a new contact is inserted / updated / deleted. Read more here ...

Devel Plan 1.12 release (TODO list)

ImportanceModuleDescription
xxxxTMeven if decide to "go stateful" very early in your script (via t_newtran), all changes you do later over the request (in request route, branch route, failure route) must be updated/pushed into transaction and remembered at later processing
xxxxDIALOGre-INVITE based in-dialog pinging (with proper SDP handling)
xxxREGISTRARlookup() should have a flag to force lookup on all branches (and not only on RURI)
xxxDIALOGNew events for dialog matched, terminated, etc
xxxDIALOGcontrol profiles/variables DB storage - specify whether we want to ever dump the profies/variables in the DB or only on shutdown. Rethink the current design to see if is the best.
xxxUSRLOCdistributed storage via a NoSQL DB
xxxDIALOGdistributed storage via a NoSQL DB
xxxDIALOGbe able to end all dialogs belonging to a certain profile (MI only)
xxxUSRLOCwhen db is updated based on timer, combine multiple deletes in a single query
xxxSIPCAPTURETCP support
xxxRTPProxyadd ICE support for rtpproxy
xxxEvent Interfaceadd ZeroMQ support for Event Interface
xxxcoresend function (including from TM) should return a dedicated ret code to indicate network errors (failure in sending)
xxxcorefix insert_new_lump()/append_new_lump() logic throughout lumps_len()
xxxcoreonce fixed, replace all single anchor_lump()+insert_new_lump_{before,after}() calls with the simpler insert_new_lump() call
xxxnewIntegrate OpenSIPS with libpurple library for IM and Presence
xxTLS coreadd an internal API for TLS management to allow registration of certificates ; a new module to allow TLS certificates provisioning via DB (per domain, per IP, etc)
xxDROUTINGAllow the option to call do_routing with a particular number, but to propagate downstream a different number ( useful for number portability scenarios )
xxUSRLOCuse a single Primary Key (non SIP related) for DB ops
xxTMallow dynamic number of branches per transaction (on demand)
xxStatistics Interfacereplace the BIG LOCK (if other arch than i386) with multiple shared locks (to protect the values)
xxnewnew cachedb_virtual modules, similar to db_virtual, but for NoSQL databases
xxdb_virtualOpensips should be able to start even if db_virtual was not able to connect to all databases. So long as it can connect to at least 1 it should still work
xxB2BSupport for attended transfers on B2BUA
xxevent_datagramInstead of pushing events in text/plan format, to have also the options to pack the event in a json format -> easier to parse by the receiver
xxnewsupport for RFC5626 - Managing Client-Initiated Connections in SIP
xnewnew module mi_stream to provide MI interaction via connection oriented links (TCP or fifo)
xnewRFC6140 Registration for Multiple Phone Numbers
xAVPOPSRegexp based filter for avp_db_load - what AVPs to be loaded
xcoreBe able to specify multiple keys with the "cache_fetch" MI command
xcoreHandle OpenSIPS variable expansion within the format string of assert()
xscriptConsider implementing the "continue" and "break" keywords inside while and for-each
xcachedb coreAllow results to be written in any PV (not just $avp)
xscriptInteger operators: make "+=" and "-=" work!

Page last modified on March 31, 2016, at 09:38 AM