About

About.Version-3-2-0 History

Hide minor edits - Show changes to output

August 03, 2021, at 12:35 PM by liviu -
Added lines 133-135:

!!!! REST_CLIENT module
* all async functions may now receive an '''optional timeout''', in seconds, as the 3rd parameter to the '''async()''' statement. By default, there is no timeout.
June 28, 2021, at 08:42 PM by liviu -
Changed line 95 from:
* the output of the ''[[https://opensips.org/docs/modules/3.2.x/dispatcher.html#mi_ds_list|ds_list]]'' MI command now includes the full set of IP addresses produced by a DNS SRV lookup on the destination URI hostname
to:
* the output of the ''[[https://opensips.org/docs/modules/3.2.x/dispatcher.html#mi_ds_list|ds_list]]'' MI command now includes the full set of IP addresses (new ''resolved_addresses'' field) produced by a DNS SRV lookup on the destination URI hostname
June 18, 2021, at 01:22 PM by liviu -
Added lines 107-109:

!!!! MID_REGISTRAR module
* added the [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_at_escape_str|'''at_escape_str''']] modparam, which allows you to customize the "%40" part of Contacts generated in AoR throttling mode
May 28, 2021, at 12:41 PM by liviu -
Changed lines 18-19 from:
to:
* new [[https://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc39|'''log_stdout''']] global parameter, giving visibility to all standard output logs from 3rd party libraries
Deleted line 22:
* new [[https://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc39|'''log_stdout''']] global parameter, giving visibility to all standard output logs from 3rd party libraries
May 28, 2021, at 12:37 PM by liviu -
Changed line 25 from:
* a stepping stone into the IMS world, this module offers essential primitives, in the form of a module API, which enable the management and exchange of Diameter messages with a given Diameter peer (for now, a "server peer"). The provided API allows other modules to build highly customizable Diameter packets for various Diameter applications, with custom Attribute-Value-Pairs, custom vendors, and so on! See the [[https://opensips.org/docs/modules/3.2.x/aaa_diameter|module docs]] for more info!
to:
* a stepping stone into the IMS world, this module offers an essential toolkit, in the form of a module API, which enables the management and exchange of Diameter messages with a given Diameter peer (for now, a "server peer"). The provided API allows other modules to build highly customizable Diameter packets for various Diameter applications, with custom Attribute-Value-Pairs, custom vendors, and so on! See the [[https://opensips.org/docs/modules/3.2.x/aaa_diameter|module docs]] for more info!
May 27, 2021, at 08:29 PM by liviu -
Changed line 27 from:
* included in this version are: '''Digest Authentication''' (via Diameter SIP Application "MAR" requests) and '''Accounting''' (via the standard Diameter Accounting application)
to:
* included in this version are: '''Digest Authentication''' (via Diameter SIP Application "MAR" commands) and '''Accounting''' (via the standard Diameter Accounting application)
May 27, 2021, at 08:27 PM by liviu -
Changed line 20 from:
* added full support for the new RFC 8760 (SIP Digest Authentication Scheme). Two new digest algorithms introduced: SHA-256 and SHA-512-256, providing enhanced security against brute-force, table-lookup types of attacks, etc.
to:
* added full support for the new RFC 8760 (SIP Digest Authentication Scheme). Two new digest algorithms introduced: SHA-256 and SHA-512-256, providing enhanced security versus the classic MD5 algorithm, which has become quite weak nowadays.
May 27, 2021, at 08:12 PM by rvlad_patrascu -
Added lines 63-65:

!!!! CACHEDB_REDIS module
* add TLS support for Redis connections; see the [[https://opensips.org/docs/modules/3.2.x/cachedb_redis.html#param_use_tls|'''use_tls''']] module parameter for more details
May 27, 2021, at 08:09 PM by rvlad_patrascu -
Added line 103:
* Add TLS support for broker connections; see the [[https://opensips.org/docs/modules/3.2.x/event_rabbitmq.html#param_use_tls|'''use_tls''']] module parameter for more details
May 27, 2021, at 08:06 PM by rvlad_patrascu -
Added lines 118-122:

!!!! RABBITMQ and RABBITMQ_CONSUMER modules
* add TLS support for broker connections
* see the [[https://opensips.org/docs/modules/3.2.x/rabbitmq.html#param_use_tls|'''use_tls''']] ''rabbitmq'' module parameter for more details
* see the [[https://opensips.org/docs/modules/3.2.x/rabbitmq_consumer.html#param_use_tls|'''use_tls''']] ''rabbitmq_consumer'' module parameter for more details
May 27, 2021, at 07:04 PM by rvlad_patrascu -
Added lines 121-123:

!!!! SIP_I module
* Add support for Generic Number parameter in [[https://opensips.org/docs/modules/3.2.x/sip_i.html#pv_isup_param|'''$isup_param''']] variable
May 27, 2021, at 06:51 PM by rvlad_patrascu -
Added lines 145-150:

!!!! UAC_REGISTRANT module
* improve management of registrants through MI:
** disable and re-enable a specific registrant via the new [[https://opensips.org/docs/modules/3.2.x/uac_registrant.html#mi_reg_disable|'''reg_disable''']] and [[https://opensips.org/docs/modules/3.2.x/uac_registrant.html#mi_reg_enable|'''reg_enable''']] commands
** list information about a specific registrant with the new [[https://opensips.org/docs/modules/3.2.x/uac_registrant.html#mi_reg_list|'''reg_list''']] command
** reload a specific registrant record from DB with the new [[https://opensips.org/docs/modules/3.2.x/uac_registrant.html#mi_reg_reload|'''reg_reload''']] command
May 27, 2021, at 06:38 PM by rvlad_patrascu -
Added lines 61-62:
* add support for RFC3515 NOTIFY mechanism when bridging entities with [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#func_b2b_bridge|'''b2b_bridge()''']]
* add support for rolling back a failed bridge action triggered with [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#func_b2b_bridge|'''b2b_bridge()''']]
May 27, 2021, at 06:32 PM by rvlad_patrascu -
Added lines 143-145:

!!!! UUID module
* add support for UUID version 3 and 5
May 27, 2021, at 06:30 PM by rvlad_patrascu -
Added lines 122-124:

!!!! STIR_SHAKEN module
* enable a strict check on the originating/destination identity derived from the SIP message by setting the [[https://opensips.org/docs/modules/3.2.x/stir_shaken.html#param_e164_strict_mode|'''e164_strict_mode''']] module parameter instead of doing this by default
May 27, 2021, at 06:25 PM by rvlad_patrascu -
Added lines 58-60:
* allow setting the call setup timeout for any scenario (not only for the internal topology hiding) via the '''t''' flag given to [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#func_b2b_init_request|'''b2b_init_request()''']]
* add ability to set the call setup timeout from [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#func_b2b_init_request|'''b2b_init_request()''']] to ''max_duration''
* add ability to use the user from the "From" header in the generated Contact headers, by enabling the new [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#param_contact_user|'''contact_user''']] module parameter
May 27, 2021, at 06:06 PM by rvlad_patrascu -
Changed line 121 from:
* The ''openSSL'' specific implementation of TLS operations has been moved to a new, dedicated ''tls_openssl'' module in order for the tls_mgm module to be able to use both ''openSSL'' and ''wolfSSL'' libraries. The module now acts as a transparent interface between the actual TLS implementations (in ''tls_openssl'' and ''tls_wolfssl'') and the TLS-based transport protocols like ''proto_tls'' and ''proto_wss''.
to:
* The ''openSSL'' specific implementation of TLS operations has been moved to a new, dedicated, ''tls_openssl'' module in order for the tls_mgm module to be able to use either of the '''openSSL''' or '''wolfSSL''' libraries. The module now acts as a transparent interface between the actual TLS implementations (in ''tls_openssl'' and ''tls_wolfssl'') and the TLS-based transport protocols like ''proto_tls'' and ''proto_wss''.
May 27, 2021, at 06:02 PM by rvlad_patrascu -
Changed line 70 from:
* Check out this [[https://opensips.org/docs/modules/3.2.x/proto_bins.html|'''blog post''']] for a summary of the new clustering improvements
to:
* See the following [[https://opensips.org/docs/modules/3.2.x/proto_bins.html|'''blog post''']] for a summary of the new clustering improvements
Added lines 76-80:

!!!! DIALOG module
* Add ability to auto-sync from cluster the dialog data for all sharing tags in backup state, when a node becomes reachable, configurable via the new [[https://opensips.org/docs/modules/3.2.x/dialog.html#param_cluster_auto_sync|'''cluster_auto_sync''']] module parameter
* improve the [[https://opensips.org/docs/modules/3.2.x/dialog.html#mi_dlg_cluster_sync|'''dlg_cluster_sync''']] MI command to be able to sync only the dialogs marked with a given sharing tag
* improve the cluster "sync" mechanism in order to do a full mirroring of the dialogs from the donor node. Dialog in memory which are not reconfirmed through syncing will be discarded.
May 27, 2021, at 05:44 PM by rvlad_patrascu -
Added lines 68-75:

!!!! CLUSTERER module
* Check out this [[https://opensips.org/docs/modules/3.2.x/proto_bins.html|'''blog post''']] for a summary of the new clustering improvements
* add TLS support via the new [[https://opensips.org/docs/modules/3.2.x/proto_bins.html|'''proto_bins''']] module so ''bins'' URLs can now be used when configuring cluster nodes in DB/script
* restrict dynamic joining of new nodes when [[https://opensips.org/docs/modules/3.2.x/clusterer.html#param_db_mode|'''db_mode''']] is enabled
* add ability to remove a node from the cluster when [[https://opensips.org/docs/modules/3.2.x/clusterer.html#param_db_mode|'''db_mode''']] is disabled via the new [[https://opensips.org/docs/modules/3.2.x/clusterer.html#mi_clusterer_remove_node|'''clusterer_remove_node''']] MI command
* allow disabling a specific node in cluster with the [[https://opensips.org/docs/modules/3.2.x/clusterer.html#mi_clusterer_set_status|'''clusterer_set_status''']] MI command
* add abilitty to disable replication/syncing for a specific capability with the new [[https://opensips.org/docs/modules/3.2.x/clusterer.html#mi_clusterer_set_cap_status|'''clusterer_set_cap_status''']] MI command
May 27, 2021, at 05:29 PM by liviu -
Changed lines 51-52 from:
* enhanced with full support for RFC 8760 SIP Digest Authentication, adding two new digest algorithms: SHA-256 and SHA-512-256.
to:
* enhanced with full ''server-side support'' for RFC 8760 SIP Digest Authentication, adding two new digest algorithms: SHA-256 and SHA-512-256.
Changed line 123 from:
* enhanced with full support for RFC 8760 SIP Digest Authentication, adding two new digest algorithms: SHA-256 and SHA-512-256.
to:
* enhanced with full ''client-side support'' for RFC 8760 SIP Digest Authentication, adding two new digest algorithms: SHA-256 and SHA-512-256.
May 27, 2021, at 05:28 PM by liviu -
Added lines 50-52:
!!!! AUTH & AUTH_DB modules
* enhanced with full support for RFC 8760 SIP Digest Authentication, adding two new digest algorithms: SHA-256 and SHA-512-256.
Added lines 121-123:

!!!! UAC & UAC_AUTH modules
* enhanced with full support for RFC 8760 SIP Digest Authentication, adding two new digest algorithms: SHA-256 and SHA-512-256.
May 27, 2021, at 05:21 PM by liviu -
Added line 20:
* added full support for the new RFC 8760 (SIP Digest Authentication Scheme). Two new digest algorithms introduced: SHA-256 and SHA-512-256, providing enhanced security against brute-force, table-lookup types of attacks, etc.
May 27, 2021, at 05:17 PM by rvlad_patrascu -
Changed lines 53-54 from:
to:
* add possiblity to advertise a custom Contact header in generated messages via a new function parameter to [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#func_b2b_bridge_request|'''b2b_bridge_request()''']]
Changed line 116 from:
* a new function [[https://opensips.org/html/docs/modules/3.2.x/tm.html#func_t_wait_no_more_branches|t_wait_no_more_branches()]] was also added to stop the waiting of new branches, outside the context of any signaling.
to:
* a new function [[https://opensips.org/html/docs/modules/3.2.x/tm.html#func_t_wait_no_more_branches|t_wait_no_more_branches()]] was also added to stop the waiting of new branches, outside the context of any signaling.
May 27, 2021, at 05:11 PM by razvancrainea -
Deleted line 60:
Added lines 77-79:

!!!! EVENT_RABBITMQ module
* Add support for persistent queues by requesting it in [[https://opensips.org/docs/modules/3.2.x/event_rabbitmq.html#socket_syntax|socket's name]].
May 27, 2021, at 05:07 PM by razvancrainea -
Added lines 78-80:

!!!! RTPENGINE module
* Special handling has been added for two new parameters, '''replace-zero-address''' and '''received-from''' -[[https://opensips.org/docs/modules/3.2.x/rtpengine.html#func_rtpengine_offer|'''replace-zero-address''' and '''received-from''']].
May 27, 2021, at 05:05 PM by razvancrainea -
Added lines 30-32:

!!!! [NEW] MI_SCRIPT module
* The new [[https://opensips.org/docs/modules/3.2.x/mi_script.html|'''mi_script''']] module allows you to run MI commands from OpenSIPS script
May 27, 2021, at 04:58 PM by liviu -
Changed line 24 from:
* a stepping stone into the IMS world, this module offers essential primitives, in the form of a module API, enabling the connection maintenance and exchange of messages with a Diameter peer (for now, a "server peer"). The provided API allows other modules to build highly customizable Diameter messages for various Diameter applications, with custom Attribute-Value-Pairs, custom vendors, and so on! See the [[https://opensips.org/docs/modules/3.2.x/aaa_diameter|module docs]] for more info!
to:
* a stepping stone into the IMS world, this module offers essential primitives, in the form of a module API, which enable the management and exchange of Diameter messages with a given Diameter peer (for now, a "server peer"). The provided API allows other modules to build highly customizable Diameter packets for various Diameter applications, with custom Attribute-Value-Pairs, custom vendors, and so on! See the [[https://opensips.org/docs/modules/3.2.x/aaa_diameter|module docs]] for more info!
May 27, 2021, at 04:55 PM by liviu -
Changed line 21 from:
* new [[https://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc39|'''log_stdout''']] global parameter, allowing all standard output logs from 3rd party libraries to be printed
to:
* new [[https://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc39|'''log_stdout''']] global parameter, giving visibility to all standard output logs from 3rd party libraries
May 27, 2021, at 04:54 PM by liviu -
Changed line 21 from:
* new [[https://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc39|'''log_stdout''']] parameter, allowing all standard output logs from 3rd party libraries to be printed
to:
* new [[https://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc39|'''log_stdout''']] global parameter, allowing all standard output logs from 3rd party libraries to be printed
May 27, 2021, at 04:53 PM by liviu -
Added line 21:
* new [[https://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc39|'''log_stdout''']] parameter, allowing all standard output logs from 3rd party libraries to be printed
May 27, 2021, at 03:59 PM by rvlad_patrascu -
Changed lines 40-41 from:
* The [[https://opensips.org/docs/modules/3.2.x/tls_openssl.html|'''tls_openssl''']] module implements TLS operations using '''openSSL''', in order to separate the library specific code from the ''tls_mgm'' module which now acts only as an interface for the TLS-based transport modules.
to:
* The [[https://opensips.org/docs/modules/3.2.x/tls_openssl.html|'''tls_openssl''']] module implements TLS operations using '''openSSL''', in order to separate the library specific code from the ''tls_mgm'' module which now acts only as an interface for the TLS-based transport modules.

!!!! [NEW] TLS_WOLFSSL module
* The [[https://opensips.org/docs/modules/3.2.x/tls_wolfssl.html|'''tls_wolfssl''']] module implements TLS operations using the '''wolfSSL''' library.
Added lines 92-95:

!!!! TLS_MGM module
* The ''openSSL'' specific implementation of TLS operations has been moved to a new, dedicated ''tls_openssl'' module in order for the tls_mgm module to be able to use both ''openSSL'' and ''wolfSSL'' libraries. The module now acts as a transparent interface between the actual TLS implementations (in ''tls_openssl'' and ''tls_wolfssl'') and the TLS-based transport protocols like ''proto_tls'' and ''proto_wss''.
* new [[https://opensips.org/docs/modules/3.2.x/tls_mgm.html#param_tls_library|tls_library]] module parameter that selects which TLS library to use.
May 27, 2021, at 02:50 PM by rvlad_patrascu -
Added lines 38-40:

!!!! [NEW] TLS_OPENSSL module
* The [[https://opensips.org/docs/modules/3.2.x/tls_openssl.html|'''tls_openssl''']] module implements TLS operations using '''openSSL''', in order to separate the library specific code from the ''tls_mgm'' module which now acts only as an interface for the TLS-based transport modules.
May 27, 2021, at 02:35 PM by rvlad_patrascu -
Added lines 41-42:
* new [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#b2b_logic.scenario|'''$b2b_logic.scenario''']] variable that returns the scenario ID of the current B2B session.
* context values for the newly initialized session can now be passed to the [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#mi_b2b_trigger_scenario|'''mi_b2b_trigger_scenario''']] MI command via parameters.
May 27, 2021, at 02:28 PM by rvlad_patrascu -
Added lines 38-40:

!!!! B2B_LOGIC module
* The module has been restructured in order to drop the XML-driven logic in favor of '''OpenSIPS scripting''' with dedicated B2B routes and functions. For more information check this [[https://blog.opensips.org/2021/01/06/the-script-driven-sip-b2bua/|'''blog''']] post or the new [[https://blog.opensips.org/2021/01/06/the-script-driven-sip-b2bua/|'''B2B tutorial''']].
May 27, 2021, at 02:10 PM by liviu -
Changed line 23 from:
* a stepping stone into the IMS world, this module offers essential primitives, in the form of a module API, enabling the connection maintenance and exchange of messages with a Diameter peer. The provided API allows other modules to build highly customizable Diameter messages for various Diameter applications, with custom Attribute-Value-Pairs, custom vendors, and so on! See the [[https://opensips.org/docs/modules/3.2.x/aaa_diameter|module docs]] for more info!
to:
* a stepping stone into the IMS world, this module offers essential primitives, in the form of a module API, enabling the connection maintenance and exchange of messages with a Diameter peer (for now, a "server peer"). The provided API allows other modules to build highly customizable Diameter messages for various Diameter applications, with custom Attribute-Value-Pairs, custom vendors, and so on! See the [[https://opensips.org/docs/modules/3.2.x/aaa_diameter|module docs]] for more info!
May 27, 2021, at 02:09 PM by liviu -
Added lines 21-25:

!!!! [NEW] AAA_DIAMETER module
* a stepping stone into the IMS world, this module offers essential primitives, in the form of a module API, enabling the connection maintenance and exchange of messages with a Diameter peer. The provided API allows other modules to build highly customizable Diameter messages for various Diameter applications, with custom Attribute-Value-Pairs, custom vendors, and so on! See the [[https://opensips.org/docs/modules/3.2.x/aaa_diameter|module docs]] for more info!
* the Diameter message building and parsing, as well as the peer state machine and Diameter-related network communication are all powered by the [[http://www.freediameter.net/trac/|freeDiameter]] project and C libraries, dynamically linking with the new "aaa_diameter" OpenSIPS module.
* included in this version are: '''Digest Authentication''' (via Diameter SIP Application "MAR" requests) and '''Accounting''' (via the standard Diameter Accounting application)
May 27, 2021, at 02:09 PM by rvlad_patrascu -
Changed line 29 from:
* New module that implements the native OpenSIPS BINS transport protocol over TLS, allowing for secure inter-cluster communication between instances.
to:
* The [[https://opensips.org/docs/modules/3.2.x/proto_bins.html|'''proto_bins''']] module implements the native OpenSIPS BIN transport protocol over TLS, allowing for secure inter-cluster communication between instances.
May 27, 2021, at 01:48 PM by rvlad_patrascu -
Added lines 27-29:

!!!! [NEW] PROTO_BINS module
* New module that implements the native OpenSIPS BINS transport protocol over TLS, allowing for secure inter-cluster communication between instances.
May 27, 2021, at 11:40 AM by 109.99.227.30 -
Added line 75:
* add full support for transactional tracing for local transactions (requests internally generated by OpenSIPS), via '''local route'''
May 27, 2021, at 11:38 AM by 109.99.227.30 -
Added line 75:
* the [[https://opensips.org/html/docs/modules/3.2.x/tracer.html#func_trace|''trace()'']] function accepts some optional flags '''c''' and '''C''' to control if the tracing should be done only for caller or callee side of the transaction/dialog.
May 27, 2021, at 11:30 AM by 109.99.227.30 -
Added lines 18-20:

!!!! OpenSIPS Core
* The extra processes created by the MI related modules are now running around an I/O reactor (as the SIP worker processes are also doing). This provides the OpenSIPS core the possibility to interact and control those processes (via internal IPC). Beside internal benefits, this enables several features for these extra processes, like publishing of pkg statistics, load monitoring, smooth shutdown, script reloading.
May 27, 2021, at 11:26 AM by 109.99.227.30 -
Changed line 50 from:
* the ''dr_is_gw()'' function has new "r" flag to force the checking of the protocol of gateway also (besides IP and port).
to:
* the [[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_dr_is_gw|''dr_is_gw()'']] and [[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_is_from_gw|''is_from_gw()'']] functions have new "r" flag to force the checking of the protocol of gateway also (besides IP and port).
May 27, 2021, at 11:16 AM by 109.99.227.30 -
Changed line 66 from:
* new ''rl_dump_pipe'' MI command to expose all the details about the current data (specific to the pipe's algorithm) of a pipe. Currently make sense for SBT.
to:
* new [[https://opensips.org/html/docs/modules/3.2.x/ratelimit.html#mi_rl_dump_pipe|''rl_dump_pipe'']] MI command to expose all the details about the current data (specific to the pipe's algorithm) of a pipe. Currently make sense for SBT.
May 27, 2021, at 10:48 AM by 109.99.227.30 -
Changed line 78 from:
* a new function [[https://opensips.org/html/docs/modules/3.2.x/tm.html#func_t_wait_no_more_branches|t_wait_no_more_branches()] was also added to stop the waiting of new branches, outside the context of any signaling.
to:
* a new function [[https://opensips.org/html/docs/modules/3.2.x/tm.html#func_t_wait_no_more_branches|t_wait_no_more_branches()]] was also added to stop the waiting of new branches, outside the context of any signaling.
May 27, 2021, at 10:47 AM by 109.99.227.30 -
Changed lines 74-78 from:
* tracing can now be done to a file or to syslog, by using the @@file@@ and @@syslog@@ [[https://opensips.org/html/docs/modules/3.2.x/tracer.html#param_trace_id|trace_id]] types
to:
* tracing can now be done to a file or to syslog, by using the @@file@@ and @@syslog@@ [[https://opensips.org/html/docs/modules/3.2.x/tracer.html#param_trace_id|trace_id]] types

!!!! TM module
* better control for branch waiting (in Push Notification scenarios) was added. The [[https://opensips.org/html/docs/modules/3.2.x/tm.html#func_t_inject_branches()|t_inject_branches]] function has now the '''last''' flag, to indicate this is the last branch to be added, no more waiting for other branches. For the same purpose, the [[https://opensips.org/html/docs/modules/3.2.x/tm.html#func_t_wait_for_new_branches|t_wait_for_new_branches()]] accepts now as parameter the number of branches to be waited.
* a new function [[https://opensips.org/html/docs/modules/3.2.x/tm.html#func_t_wait_no_more_branches|t_wait_no_more_branches()] was also added to stop the waiting of new branches, outside the context of any signaling.
May 27, 2021, at 10:40 AM by 109.99.227.30 -
Changed line 74 from:
* tracing can now be done to a file or to syslog, by using the @@file@@ and @@syslog@@ trace_id types
to:
* tracing can now be done to a file or to syslog, by using the @@file@@ and @@syslog@@ [[https://opensips.org/html/docs/modules/3.2.x/tracer.html#param_trace_id|trace_id]] types
May 27, 2021, at 10:39 AM by 109.99.227.30 -
Changed lines 72-73 from:
* the ''trace()'' function accepts an options correlation ID parameter - this can be used to force the correlation between multiple SIP calls.
* the ''trace()'' function, using the '''B''' scope flag, can automatically trace all the calls belonging to the same B2B session.
to:
* the [[https://opensips.org/html/docs/modules/3.2.x/tracer.html#func_trace|''trace()'']] function accepts an options correlation ID parameter - this can be used to force the correlation between multiple SIP calls.
* the [[https://opensips.org/html/docs/modules/3.2.x/tracer.html#func_trace|''trace()'']] function, using the '''B''' scope flag, can automatically trace all the calls belonging to the same B2B session.
May 27, 2021, at 10:37 AM by 109.99.227.30 -
Added lines 61-63:

!!!! PUA module
The module module offers now clustering support, see the [[https://opensips.org/html/docs/modules/3.2.x/pua.html#pua_clustering|description]] in the online documentation. With this clustering support, modules on top of PUA, like pua_dialoginfo, may implement High-Availability or Geo-Distributed setups.
May 26, 2021, at 05:31 PM by 213.233.88.24 -
Added line 51:
* when defining DR partition, the db_url of a partition may be empty - if so, the partition db_url will be used instead.
May 26, 2021, at 01:52 PM by razvancrainea -
Changed line 64 from:
!!!! Statistics module
to:
!!!! STATISTICS module
May 26, 2021, at 01:51 PM by razvancrainea -
Deleted lines 17-24:

!!!! OpenSIPS core

* core

!!!! OpenSIPS core MI functions

* you can now
May 26, 2021, at 01:50 PM by razvancrainea -
Added lines 32-34:

!!!! [NEW] RTP relay module
* A new module named [[https://opensips.org/docs/modules/3.2.x/rtp_relay.html|'''rtp_relay''']] has been added in OpenSIPS that provides an interface for engaging different RTP relays servers (such as RTPProxy or RTPEngine) in a unified, simple manner. It also provides capabilities for RTP failover and/or balancing by migrating/re-anchoring the RTP call to a different RTP server.
May 25, 2021, at 05:32 PM by razvancrainea -
Added lines 39-42:


!!!! CGRATES module
* the '''cgr''' and '''cgr_opt''' variables can now be assigned JSON values by using the ''':=''' operator
May 25, 2021, at 10:10 AM by 109.99.227.30 -
Changed lines 69-70 from:
* the trace() function accepts an options correlation ID parameter - this can be used to force the correlation between multiple SIP calls.
to:
* the ''trace()'' function accepts an options correlation ID parameter - this can be used to force the correlation between multiple SIP calls.
* the ''trace()'' function, using the '''B''' scope flag, can automatically trace all the calls belonging to the same B2B session.
May 25, 2021, at 10:08 AM by 109.99.227.30 -
Added lines 61-63:

!!!! RATELIMIT module
* new ''rl_dump_pipe'' MI command to expose all the details about the current data (specific to the pipe's algorithm) of a pipe. Currently make sense for SBT.
May 24, 2021, at 06:10 PM by razvancrainea -
Added lines 55-60:

!!!! PROTO_WS module
* The requirement for the Origin header in the HTTP request used to initialize WS connection has now been relaxed thanks to the [[https://opensips.org/docs/modules/3.2.x/proto_ws.html#param_require_origin|'''require_origin''']] module parameter.

!!!! PROTO_WSS module
* The same relaxation of the Origin header check in PROTO_WS is available in the PROTO_WSS module, using the same [[https://opensips.org/docs/modules/3.2.x/proto_wss.html#param_require_origin|'''require_origin''']] module parameter.
May 24, 2021, at 12:53 PM by razvancrainea -
Changed lines 60-61 from:
* the trace() function accepts an options correlation ID parameter - this ca be used to force the correlation between multiple SIP calls.
to:
* the trace() function accepts an options correlation ID parameter - this can be used to force the correlation between multiple SIP calls.
* tracing can now be done to a file or to syslog, by using the @@file@@ and @@syslog@@ trace_id types
May 21, 2021, at 02:40 PM by 109.99.227.30 -
Added line 46:
* added support for set id substitution in "pvar_algo_pattern" for dispatcher algorithm 9, like @@modparam("dispatcher", "pvar_algo_pattern", "$stat(weight_%i_%u)")@@
May 21, 2021, at 12:51 PM by 109.99.227.30 -
Added line 50:
* the ''dr_is_gw()'' function has new "r" flag to force the checking of the protocol of gateway also (besides IP and port).
April 05, 2021, at 10:54 AM by 109.99.227.30 -
Changed lines 55-58 from:
* Statistics series were added, that provides you the ability of creating custom statistics that gather information for a specific time window (as opposed to the entire runtime). Find out more information in the module's [[https://opensips.org/docs/modules/3.2.x/statistics.html#section_stat_series|documentation]]
to:
* Statistics series were added, that provides you the ability of creating custom statistics that gather information for a specific time window (as opposed to the entire runtime). Find out more information in the module's [[https://opensips.org/docs/modules/3.2.x/statistics.html#section_stat_series|documentation]]

!!!! TRACE module
* the trace() function accepts an options correlation ID parameter - this ca be used to force the correlation between multiple SIP calls.
March 23, 2021, at 12:41 PM by liviu -
Changed lines 41-42 from:
* the time recurrence support has been extended; it now re-uses the same code and logic of the improved '''[[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_check_time_rec|check_time_rec()]]''' function
to:
* the time recurrence support has been extended; it now re-uses the same code and logic of the improved '''[[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_check_time_rec|check_time_rec()]]''' function (''cfgutils'' module)
Changed line 49 from:
* the time recurrence support has been extended; it now re-uses the same code and logic of the improved '''[[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_check_time_rec|check_time_rec()]]''' function
to:
* the time recurrence support has been extended; it now re-uses the same code and logic of the improved '''[[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_check_time_rec|check_time_rec()]]''' function (''cfgutils'' module)
March 23, 2021, at 12:40 PM by liviu -
Changed lines 41-42 from:
* the time recurrence support has been normalized to re-use the code & logic of the revised '''[[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_check_time_rec|check_time_rec()]]''' function
to:
* the time recurrence support has been extended; it now re-uses the same code and logic of the improved '''[[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_check_time_rec|check_time_rec()]]''' function
Changed line 49 from:
* the time recurrence support has been normalized to re-use the code & logic of the revised '''[[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_check_time_rec|check_time_rec()]]''' function
to:
* the time recurrence support has been extended; it now re-uses the same code and logic of the improved '''[[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_check_time_rec|check_time_rec()]]''' function
March 23, 2021, at 12:37 PM by liviu -
Changed line 37 from:
** the time recurrence string now supports a timezone as a leading field. If missing, the operating system timezone will be used.
to:
** the time recurrence string now supports a timezone as a leading field. If missing, the operating system timezone will be used instead.
March 23, 2021, at 12:36 PM by liviu -
Changed lines 36-42 from:
to:
* several extensions to '''[[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_check_time_rec|check_time_rec()]]''':
** the time recurrence string now supports a timezone as a leading field. If missing, the operating system timezone will be used.
** support for chaining multiple time recurrence strings as a logical expression

!!!! DIALPLAN module
* the time recurrence support has been normalized to re-use the code & logic of the revised '''[[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_check_time_rec|check_time_rec()]]''' function
Added line 49:
* the time recurrence support has been normalized to re-use the code & logic of the revised '''[[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_check_time_rec|check_time_rec()]]''' function
March 19, 2021, at 04:25 PM by liviu -
Changed line 42 from:
* Add support for merging multiple ''dr_rules'' tables into a single one using an SQL query (see the new ''[[https://opensips.org/docs/modules/3.2.x/drouting.html#param_rule_tables_query|rule_tables_query]]'' modparam)
to:
* added support for merging multiple ''dr_rules'' tables into a single one using an SQL query (see the new ''[[https://opensips.org/docs/modules/3.2.x/drouting.html#param_rule_tables_query|rule_tables_query]]'' modparam)
March 19, 2021, at 03:29 PM by liviu -
Added lines 40-42:

!!!! DROUTING module
* Add support for merging multiple ''dr_rules'' tables into a single one using an SQL query (see the new ''[[https://opensips.org/docs/modules/3.2.x/drouting.html#param_rule_tables_query|rule_tables_query]]'' modparam)
March 16, 2021, at 05:42 PM by liviu -
Changed line 38 from:
* added support for matching the "attrs" DB field using fnmatch(), see the new docs for ''[[https://opensips.org/docs/modules/3.2.x/dispatcher.html#mi_ds_is_in_list|ds_is_in_list]]''
to:
* added support for matching the "attrs" DB field using fnmatch(), see the new docs for ''[[https://opensips.org/docs/modules/3.2.x/dispatcher.html#func_ds_is_in_list|ds_is_in_list()]]''
March 16, 2021, at 05:41 PM by liviu -
Added line 38:
* added support for matching the "attrs" DB field using fnmatch(), see the new docs for ''[[https://opensips.org/docs/modules/3.2.x/dispatcher.html#mi_ds_is_in_list|ds_is_in_list]]''
March 04, 2021, at 12:27 PM by rvlad_patrascu -
Added lines 26-28:

!!!! [NEW] EVENT_KAFKA module
* The module implements a new transport backend for the Event Interface that allows publishing events to Apache Kafka. Also, generic messages can be published directly from the script using the [[https://opensips.org/docs/modules/3.2.x/event_kafka.html#func_kafka_publish|'''kafka_publish''']] function. More information is available in the module's [[https://opensips.org/docs/modules/3.2.x/event_kafka.html|'''documentation''']] page or this [[https://blog.opensips.org/2021/03/04/apache-kafka-producer-in-opensips-3-2/|'''blog''']] post.
February 24, 2021, at 04:48 PM by razvancrainea -
Changed lines 27-28 from:
!!!! [NEW] XXX module
The module
to:
!!!! [NEW] Prometheus module
* export OpenSIPS Statistics to your Prometheus monitoring system using the new native [[https://opensips.org/docs/modules/3.2.x/prometheus.html|'''prometheus''']] in OpenSIPS.
February 17, 2021, at 01:37 PM by liviu -
Changed line 35 from:
* the output of the ''ds_list'' MI command now includes the full set of IP addresses produced by a DNS SRV lookup on the destination URI hostname
to:
* the output of the ''[[https://opensips.org/docs/modules/3.2.x/dispatcher.html#mi_ds_list|ds_list]]'' MI command now includes the full set of IP addresses produced by a DNS SRV lookup on the destination URI hostname
February 17, 2021, at 01:36 PM by liviu -
Added lines 34-36:
!!!! DISPATCHER module
* the output of the ''ds_list'' MI command now includes the full set of IP addresses produced by a DNS SRV lookup on the destination URI hostname
Deleted line 38:
February 02, 2021, at 11:40 AM by razvancrainea -
Changed lines 35-39 from:
* Asynchronous TLS communication is now available when the new [[https://opensips.org/docs/modules/3.2.x/proto_tls.html#param_tls_async|'''tls_async''']] module parameter is enabled. This makes all connections with other TLS SIP endpoints asynchronous, increasing the throughput of OpenSIPS 3.2.
to:
* Asynchronous TLS communication is now available when the new [[https://opensips.org/docs/modules/3.2.x/proto_tls.html#param_tls_async|'''tls_async''']] module parameter is enabled. This makes all connections with other TLS SIP endpoints asynchronous, increasing the throughput of OpenSIPS 3.2.


!!!! Statistics module
* Statistics series were added, that provides you the ability of creating custom statistics that gather information for a specific time window (as opposed to the entire runtime). Find out more information in the module's [[https://opensips.org/docs/modules/3.2.x/statistics.html#section_stat_series|documentation]]
January 15, 2021, at 03:29 PM by 86.121.186.239 -
Changed lines 32-35 from:
* new [[https://opensips.org/docs/modules/3.2.x/cfgutils.html#param_shv_hash_size|'''shv_hash_size''']] module parameter, offering control over the width of the shared variable hash table
to:
* new [[https://opensips.org/docs/modules/3.2.x/cfgutils.html#param_shv_hash_size|'''shv_hash_size''']] module parameter, offering control over the width of the shared variable hash table

!!!! PROTO_TLS module
* Asynchronous TLS communication is now available when the new [[https://opensips.org/docs/modules/3.2.x/proto_tls.html#param_tls_async|'''tls_async''']] module parameter is enabled. This makes all connections with other TLS SIP endpoints asynchronous, increasing the throughput of OpenSIPS 3.2.
November 26, 2020, at 09:02 AM by liviu -
Changed line 27 from:
!!!! [NEW] AUTH_JWT module
to:
!!!! [NEW] XXX module
November 25, 2020, at 03:13 PM by liviu -
Changed line 31 from:
* extended '''$shv''' support, now allowing runtime definition of shared variables via dynamic names, e.g. ''$shv($avp(customer_id))''. New shared variables may also be manipulated via classic '''shv_set''' and '''shv_get''' MI commands
to:
* extended '''$shv''' support, now allowing runtime definition of shared variables via dynamic names, e.g. ''$shv($avp(customer_id))''. New shared variables may also be created and accessed via the classic '''shv_set''' and '''shv_get''' MI commands
November 25, 2020, at 03:12 PM by liviu -
Changed line 32 from:
* new [[https://opensips.org/docs/modules/3.2.x/cfgutils.html#param_shv_hash_size|'''shv_hash_size''']] module parameter, offering control on the shared variable hash width
to:
* new [[https://opensips.org/docs/modules/3.2.x/cfgutils.html#param_shv_hash_size|'''shv_hash_size''']] module parameter, offering control over the width of the shared variable hash table
November 25, 2020, at 03:12 PM by liviu -
Changed line 32 from:
* new [[https://opensips.org/docs/modules/3.2.x/cfgutils.html#param_shv_hash_size|'''shv_hash_size''']] module parameter, allowing control over the trade-off of "$shv lookup speed" vs. "shared memory usage"
to:
* new [[https://opensips.org/docs/modules/3.2.x/cfgutils.html#param_shv_hash_size|'''shv_hash_size''']] module parameter, offering control on the shared variable hash width
November 25, 2020, at 03:11 PM by liviu -
Changed lines 30-32 from:
!!!! ACC module
to:
!!!! CFGUTILS module
* extended '''$shv''' support, now allowing runtime definition of shared variables via dynamic names, e.g. ''$shv($avp(customer_id))''. New shared variables may also be manipulated via classic '''shv_set''' and '''shv_get''' MI commands
* new [[https://opensips.org/docs/modules/3.2.x/cfgutils.html#param_shv_hash_size|'''shv_hash_size''']] module parameter, allowing control over the trade-off of "$shv lookup speed" vs. "shared memory usage"
November 25, 2020, at 01:55 PM by liviu -
Added line 17:
* new [[https://www.opensips.org/Documentation/Script-CoreVar-3-2#route|$route]] variable, allowing printing (debugging) of the entire route call stack
November 05, 2020, at 08:48 PM by liviu -
Changed line 16 from:
* the
to:
* new [[https://www.opensips.org/Documentation/Script-Tran-3-2#s.eval|'''{s.eval}''']] transformation
November 05, 2020, at 08:45 PM by liviu -
Deleted line 13:
Changed lines 16-40 from:
* the '''break''' keyword now fully works with any (nested) '''switch''', '''while''' and '''for-each''' statements ''[[https://github.com/OpenSIPS/opensips/commit/ae3fcda3b69|(source)]]''

* the strange [@if $var(x) {...@] syntax is not allowed anymore ''[[https://github.com/OpenSIPS/opensips/commit/72fba8416|(source)]]''

* the '''return''' statement has been extended. Now you can also say [@return 1;@] or [@return $var(foo);@] ''[[https://github.com/OpenSIPS/opensips/commit/536e7b065e548|(source)]]''

* the '''+=''', '''-=''', '''*=''', '''/=''', '''%=''', '''&=''', '''|=''' and '''^=''' operators are now fully working ''[[https://github.com/OpenSIPS/opensips/commit/628a126fe3523|(source)]]''

* added new IP transformation [[https://www.opensips.org/Documentation/Script-Tran-3-2#ip.isprivate|{isprivate}]] to test if an IP address (as string) is a private or not

* added new IP transformations [[https://www.opensips.org/Documentation/Script-Tran-3-2#ip.isip4|{isip4}]] and [[https://www.opensips.org/Documentation/Script-Tran-3-2#ip.isip6|{isip6}]] to test if an IP address (as string) is an IPv4 or IPv6 address

* '''auto_aliases''' parameter's default value was changed to off/no/0.

* the '''listen''' parameter was renamed as '''socket''' preserving the same definition and behavior

* the '''tcp_listen_backlog''' parameter was renamed as '''tcp_socket_backlog''' preserving the same definition and behavior

* new [[Documentation.Script-CoreVar-3-2#socket_in|$socket_in/$socket_in()]] and [[Documentation.Script-CoreVar-3-2#socket_out|$socket_out/$socket_out()]] scripting variables to provide detailed access to the inbound socket (used to received the message) and outbound socket (used to send out the message). These variables obsolete '''$fs''', '''$Ri''', '''$Rp''', '''$af''', '''$pr''' and '''$proto'''

* new [[Documentation.Script-CoreVar-3-2#msg.flag|$msg.flag(name)]] and [[Documentation.Script-CoreVar-3-2#branch.flag|$branch.flag(name)[idx]]] read/write variables for accessing a single message/branch flag. Very useful for xlog'ing

* new [[Documentation.Script-CoreVar-3-2#msg.is_request|$msg.is_request]] and [[Documentation.Script-CoreVar-3-2#msg.type|$msg.type]] variables to test/tell you if the current SIP message is a request or reply.

to:
* the
Changed lines 20-21 from:
* core functions now benefit from the same function parameter interface introduced in OpenSIPS 3.0 for module functions. See the function calling conventions [[https://www.opensips.org/Documentation/Script-Syntax-3-2#function-calling-conventions|here]].
to:
* core
Changed lines 24-25 from:
* you can now raise an event using the [[https://www.opensips.org/Documentation/Interface-CoreMI-3-2#toc20|raise_event]] core MI function.
to:
* you can now
Changed lines 27-177 from:
The module implements authentication over JSON Web Tokens. In some cases ( ie. WebRTC ) the user authenticates on another layer ( other than SIP ), so it makes no sense to double-authenticate it on the SIP layer. Thus, the SIP client will simply present the JWT auth token it received from the server, and pass it on to OpenSIPS which will use that for authentication purposes. For more, see the module [[https://opensips.org/docs/modules/3.2.x/auth_jwt.html|documentation]].

!!!! [NEW] Call Operations module
The new CallOps module provides a set of functions to control the behavior of an ongoing call. Using this module you can start a new call, trigger call blind and attended transfers, put a call on hold, etc. Check out more information in the module's [[https://opensips.org/docs/modules/3.2.x/callops.html|documentation]] page.

!!!! [NEW] Media Exchange module
A new module that provides means to exchange SDP bodies between different calls has been added. Using this new module one can implement enhanced features such as playing back announcements or music on hold files during an ongoing call, or listening a conversation of two different participants. You can find more information about the new module in the module's [[https://opensips.org/docs/modules/3.2.x/media_exchange.html|documentation]] page.

!!!! [NEW] PRESENCE_DFKS module
The module enables the handling of the "as-feature-event" event package (as defined by Broadsoft's [[http://community.polycom.com/polycom/attachments/polycom/VoIP/2234/1/DeviceFeatureKeySynchronizationFD.pdf|Device Feature Key Synchronization]] protocol) by the presence module. This can be used to synchronize the status of features such as Do Not Disturb and different forwarding types between a SIP phone and a SIP server. Technical specs and more details are available in the [[https://opensips.org/docs/modules/3.2.x/presence_dfks.html|module's readme]]. Also, for more , see this [[https://blog.opensips.org/2020/04/28/dfks-or-the-key-to-synchronization/|blog post]].

!!!! [NEW] RATE_CACHER module
The [[https://opensips.org/html/docs/modules/3.2.x/rate_cacher.html|rate_cacher module]] provides a means of caching and real-time querying of the ratesheets assigned to your clients and / or vendors. It also allows for real-time cost-based routing and cost-based filtering. What the module is able to do, how to provision and use it, all are nicely described in this [[https://blog.opensips.org/2020/04/07/real-time-rating-and-cost-based-routing-in-opensips-3-2/|blog post]].

!!!! [NEW] STIR_SHAKEN module
This module adds support for implementing STIR/SHAKEN (RFC 8224, RFC 8588) Authentication and Verification services in OpenSIPS. A more comprehensive description is available on the [[https://blog.opensips.org/2020/01/23/shaken-not-stirred/|OpenSIPS blog]], while the technical details are available in the [[https://opensips.org/docs/modules/3.2.x/stir_shaken.html|module's readme]].

!!!! [NEW] Quality-based Routing Module (qrouting)
A new module which keeps track of the signaling quality of each outbound gateway at runtime and dynamically alters the gateway ordering in order to ensure an optimal quality for your platform's PSTN termination signaling! ''[[https://opensips.org/docs/modules/3.2.x/qrouting.html|(documentation)]]'' ''[[https://blog.opensips.org/2020/02/13/quality-based-pstn-routing-in-opensips-3-2-lts/|(blog)]]''

!!!! ACC module
* any [[https://opensips.org/docs/modules/3.2.x/acc.html#pv_acc_extra|acc variables]] set within the global '''onreply_route''' are now carried over to the stateful reply routes (e.g. transaction-level on-reply route and branch-level on-reply route), as well as until the end of the dialog
* new [[https://opensips.org/html/docs/modules/3.2.x/acc.html#func_acc_load_ctx_from_dlg|acc_load_ctx_from_dlg()]] and [[https://opensips.org/html/docs/modules/3.2.x/acc.html#func_acc_unload_ctx_from_dlg|acc_unload_ctx_from_dlg()]] functions to load the accounting context of another dialog.

!!!! B2B_ENTITIES
* new [[https://opensips.org/html/docs/modules/3.2.x/b2b_entities.html#param_cluster_id|cluster_id]] module parameter that enables replication support for the back-to-back underlying layer. This provides clustering support for some higher level modules that use the B2B engine, namely '''b2b_logic''' and '''media_exchange'''. You can find more information in this [[https://blog.opensips.org/2020/04/30/back-to-back-clustering-a-love-story-in-opensips-3-2//|blog post]].

!!!! B2B_LOGIC

* new [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#b2b_logic.key|$b2b_logic.key]] variable that returns the key of the current B2B session
* new [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#b2b_logic.entity|$b2b_logic.entity]] variable that returns information(entity key, Call-ID) about the entities involved in the current B2B session
* new [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#b2b_logic.ctx|$b2b_logic.ctx]] variable that provides a custom Key-Value storage in the context of the ongoing B2B session.

!!!! CACHEDB_MONGODB module
* added support for "Timestamp" and "Binary" data types

!!!! CALL_CENTER module
* added improved '''wrapup time''' support. Now there is optional per-flow and per-agent wrapup time.
* added per-flow '''call dissuading''' support; the dissuading means to redirect a call to another destination (SIP URI), if the queue/flow is overloaded:
** if the number of calls already in the queue exceeds the diss_qsize_th threshold
** if the estimated time to wait of the queue exceeds the diss_ewt_th threshold
** if the call was waiting in the queue for longer than diss_onhold_th threshold
* the '''cc_agents & cc_flows tables customization''' via module parameter (names of the tables and names of the columns)
* an optional '''separate db_url''' is available '''for runtime tables (cc_calls)'''
* new module parameter '''reject_on_no_agents''' to avoid rejection of new incoming calls if there is no agent logged in the flow; Such calls will be queued.
* new optional '''script_param''' parameter to the '''cc_handle_call()''' to be passed as parameter to the "callcenter" and "agent" B2B scenarios. It is intended for custom integration of the call center module and it is 100% up to the script writer about the value and purpose of this parameter, OpenSIPS will not touch or interpret it.
* new audio message can be played back to the agent to announce him about the flow he's getting the call for, using the @@message_flow_id@@ column in the database.

!!!! CFGUTILS module
* NEW: [[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_get_accurate_time|get_accurate_time()]], useful whenever '''$Ts''' and '''$Tsm''' cannot be read atomically

!!!! DIALOG module
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_load_dialog_ctx|load_dialog_ctx()]] and [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_unload_dialog_ctx|unload_dialog_ctx()]] to load the context of a different dialog. There is a nice [[https://blog.opensips.org/2020/05/18/cross-dialog-data-accessing/|blog post]] describing what you can do with these functions.
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_on_answer|dlg_on_answer(route)]], [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_on_timeout|dlg_on_timeout(route)]] and [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_on_hangup|dlg_on_hangup(route)]] functions to trigger custom script routes when a dialog is answered, times out or gets terminated. Read more in this [[https://blog.opensips.org/2020/05/26/dialog-triggers-or-how-to-control-the-calls-from-script/|blog post]].
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_send_sequential|dlg_send_sequential()]] function used to send arbitrary SIP request within a dialog.
* the [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#pv_DLG_json|$DLG_json]] variable returns now the list of profiles also
* extended the SIP Race condition support (RFC5407) by adding detection and handling for the early BYE vs 200OK race (under the same 'E' flag for 'create_dialog()')


!!!! DISPATCHER module
* new dispatching algorithm 10, for using a a script route (defined via the [[https://opensips.org/docs/modules/3.2.x/dispatcher.html#algo_route_param|algo_route]] module parameter) for calculating the weights of the destinations.
* new mechanism for operating with script attributes:
** the attributes will be exposed (during dispatching) via the [[https://opensips.org/docs/modules/3.2.x/dispatcher.html#param_script_attrs_avp|script_attrs_avp]]
** the attributes may be pushed via the [[https://opensips.org/docs/modules/3.2.x/dispatcher.html#func_ds_push_script_attrs|ds_push_script_attrs()]] script function or via the [[https://opensips.org/docs/modules/3.2.x/dispatcher.html#mi_ds_push_script_attrs|ds_push_script_attrs]] MI function
** the attributes may be fetched at script level via the [[https://opensips.org/docs/modules/3.2.x/dispatcher.html#func_ds_get_script_attrs|get_script_attrs()]] function
* improve clustering with data sync mechanism (at startup and after DB reload)

!!!! DROUTING module
* support for non-digit characters in routing prefixes was added. The new modparam [[https://opensips.org/docs/modules/3.2.x/drouting.html#param_extra_prefix_char|extra_prefix_chars]] allows the definition of a list of such extra non-digit chars.
* new [[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_dr_match|dr_match()]] function for testing the matching of a number against the DR rules (with no routing, just matching).
* improve clustering with data sync mechanism (at startup and after DB reload)

!!!! EVENT_DATAGRAM module
* The event payload is now formated as a JSON-RPC notification instead of the custom OpenSIPS line oriented formatting.

!!!! Event RabbitMQ module
* provide a new parameter, [[https://opensips.org/docs/modules/3.2.x/event_rabbitmq.html#param_suppress_event_name|suppress_event_name]] that can be used to suppress the name of the event sent in raised notifications
* the event payload is now formated as a JSON-RPC notification instead of the custom OpenSIPS line oriented formatting.

!!!! FRAUD_DETECTION module
* the threshold names reported in the events have been normalized to: "calls-per-minute", "total-calls", "concurrent-calls", "sequential-calls" and "call-duration".

!!!! LOAD_BALANCER
* improve clustering with data sync mechanism (at startup and after DB reload)
* add opaque, DB provisioned attribute strings to destinations. There are visible in the output of [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#mi_lb_list|lb_list]] and [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#mi_lb_status|lb_status]] MI commands, and can also be returned in the script through a new @@attrs@@ optional parameter for the following script functions: [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_start|lb_start]], [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_next|lb_next]],[[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_start_or_next|lb_start_or_next]], [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_load_balance|load_balance]], [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_is_destination|lb_is_destination]].

!!!! MATHOPS module
* [[https://opensips.org/docs/modules/3.2.x/mathops.html#func_math_rpn|math_rpn()]] now additionally supports negative operands

!!!! MI_FIFO module
* [[https://opensips.org/docs/modules/3.2.x/mi_fifo.html#param_fifo_name|fifo_name]] is no longer mandatory (default: "/tmp/opensips_fifo")

!!!! MID_REGISTRAR module
* NEW: standards-based SIP Push Notification support (RFC 8599): [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#rfc-8599-support|Read more...]]
* NEW: [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_contacts|max_contacts]] modparam and [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]] option (on par with registrar)
* NEW: '''"o" (Only request contacts)''' flag for [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]]. Limits the Contacts included in the 200 OK reply to the registered set of contacts. Although this flag breaks RFC 3261, it is often required in Push Notification setups.
* NEW: [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_attr_avp|Attributes AVP]] storage and retrieval (on par with registrar)
* NEW: [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|Path Header (RFC 3327) Support]], via the '''p0, p1''' and '''p2''' options to [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]] (on par with registrar).
* NEW modparams: [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_username_len|max_username_len]], [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_domain_len|max_domain_len]], [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_aor_len|max_aor_len]] and [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_contact_len|max_contact_len]]

!!!! PUA_DIALOGINFO module
There is major rework of the module not make it call forking enabled - the 'pua_dialoginfo' module is able now to get access to the transaction information (not only to the dialog information as before); this made the module aware of the multiple branches created, not only dialog aware, so data related to call branches can now be also published. The new BLF implementation has two major advantages:
* it is able to expose events related to call forking (prior to call answering). This will provide a more accurate insight of the call genesis.
* it correctly reports the callee party, both in serial forking (when the callee changes) and in parallel forking (when you have multiple callee parties in the same time); see the new [[https://opensips.org/html/docs/modules/3.2.x/pua_dialoginfo.html#func_dialoginfo_set_branch_callee|dialoginfo_set_branch_callee()]] and [[ https://opensips.org/html/docs/modules/3.2.x/pua_dialoginfo.html#func_dialoginfo_mute_branch|dialoginfo_mute_branch()]] functions.
See more details in this comprehensive [[https://blog.opensips.org/2020/04/02/blf-reloaded-or-a-more-accurate-and-detailed-approach/|blog post]].

!!!! PRESENCE module
* add the @@full-sharing@@ option for the [[https://opensips.org/docs/modules/3.2.x/presence.html#param_cluster_federation_mode|cluster_federation_mode]] module parameter. In this new mode of operation, the published state is kept on all presence nodes even when there aren't any local subscribers.

!!!! PROTO_SMPP module
* added support for UCS2 encoding in SMS messages (in & out)

!!!! REGISTRAR module
* NEW: standards-based SIP Push Notification support (RFC 8599): [[https://opensips.org/docs/modules/3.2.x/registrar.html#rfc-8599-support|Read more...]]
* NEW modparams: [[https://opensips.org/docs/modules/3.2.x/registrar.html#param_max_username_len|max_username_len]], [[https://opensips.org/docs/modules/3.2.x/registrar.html#param_max_domain_len|max_domain_len]],[[https://opensips.org/docs/modules/3.2.x/registrar.html#param_max_aor_len|max_aor_len]] and [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_contact_len|max_contact_len]]

!!!! REST_CLIENT module
* new [[https://opensips.org/docs/modules/3.2.x/rest_client.html#tran_rest.escape|{rest.escape}]] and [[https://opensips.org/docs/modules/3.2.x/rest_client.html#tran_rest.unescape|{rest.unescape}]] transformations (contributed by Callum Guy)
* the "Expect: 100-continue" header field for HTTP POST/PUT is now disabled by default, controllable via a new modparam, [[https://opensips.org/docs/modules/3.2.x/rest_client.html#param_enable_expect_100|enable_expect_100]]

!!!! RTPEngine module
* Add new functions to manipulate RTP streams from rtpproxy, such as @@rtpengine_play_media@@, @@rtpengine_stop_media@@, @@rtpengine_block_media@@, @@rtpengine_unblock_media@@, @@rtpengine_block_dtmf@@, @@rtpengine_unblock_dtmf@@, @@rtpengine_start_forwarding@@, @@rtpengine_stop_forwarding@@, @@rtpengine_play_dtmf@@. You can find all the available functions [[https://opensips.org/docs/modules/3.2.x/rtpengine.html#func_rtpengine_play_media|here]].
* Add new statistics for variables provided by RTPEngine: @@jitter-average@@, @@roundtrip-average@@, @@packetloss-average@@, @@jitter-min@@, @@roundtrip-min@@, @@packetloss-min@@, @@jitter-max@@, @@roundtrip-max@@, @@packetloss-max@@, @@jitter-min-at@@, @@roundtrip-min-at@@, @@packetloss-min-at@@, @@jitter-max-at@@, @@roundtrip-max-at@@, @@packetloss-min-at@@.
* Intercept RFC 22833/4733 DTMF events and trigger them in OpenSIPS using the new [[https://opensips.org/docs/modules/3.2.x/rtpengine.html#event_E_RTPENGINE_NOTIFICATION|E_RTPENGINE_NOTIFICATION]] event.

!!!! RTPProxy module
* Add support for intercepting RFC 22833/4733 DTMF events and trigger them in OpenSIPS using the new [[https://opensips.org/docs/modules/3.2.x/rtpproxy.html#event_E_RTPPROXY_DTMF_EVENT|E_RTPPROXY_DTMF_EVENT]]. This feature is currently available in the RTPProxy [[https://github.com/sippy/rtpproxy/tree/rtpp_2_1_dtmf|rtpp_2_1_dtmf]] branch.
* Provide means to specify a custom notification socket for RTPProxy by adding it as a parameter to the @@n@@ flag. Find more information in the [[https://opensips.org/docs/modules/3.2.x/rtpproxy.html#func_rtpproxy_engage|rtpproxy_engage]] documentation.

!!!!SIGNALING module
* new script variable [[https://opensips.org/html/docs/modules/3.2.x/signaling.html#pv_sig_local_totag|$sip_local_totag]] to return the local To-tag that will be used by OpenSIPS for locally sending replies to the current SIP request.

!!!! SIPREC module
* Provide extra headers to the request going to the SIPREC server when calling the [[https://opensips.org/docs/modules/3.2.x/siprec.html#func_siprec_start_recording|siprec_start_recording]] function.

!!!! SMPP module
* The [[https://opensips.org/docs/modules/3.2.x/proto_smpp#func_send_smpp_message|send_smpp_message]] function can now accept variable source and destination numbers, as well as body and encoding.
* The function also does auto-conversion between UTF-8 and GSM7.

!!!! TM module
* '''fr_timer''' and '''fr_inv_timer''' are now completely removed (not just deprecated). Use [[https://opensips.org/docs/modules/3.2.x/tm.html#param_fr_timeout|fr_timeout]] and [[https://opensips.org/docs/modules/3.2.x/tm.html#param_fr_inv_timeout|fr_inv_timeout]] instead!

!!!! TOPOLOGY_HIDING module
* NEW [[https://opensips.org/docs/modules/3.2.x/topology_hiding.html#param_th_contact_encode_scheme|th_contact_encode_scheme]] modparam that allows changing the encoding scheme for the Contact URI parameter between base64 and base32.

!!!! TLS_MGM module
* The [[https://opensips.org/docs/modules/3.2.x/tls_mgm#param_tls_method|tls_method]] parameter can now accept a range of TLS versions to accept.
* Add support for TLSv3

!!!! USRLOC module
* The 'domain' attribute has been added to all [[https://opensips.org/docs/modules/3.2.x/usrloc.html#exported_events|events]]
to:
The module

!!!! ACC module
November 05, 2020, at 08:44 PM by liviu -
Changed line 8 from:
!!! [[Documentation/Migration-3-0-0-to-3-2-0|Migration from 3.0.x to 3.2.0]]
to:
!!! [[Documentation/Migration-3-1-0-to-3-2-0|Migration from 3.1.x to 3.2.0]]
May 27, 2020, at 02:46 AM by rvlad_patrascu -
May 27, 2020, at 02:37 AM by rvlad_patrascu -
Changed line 135 from:
* add opaque, DB provisioned attribute strings to destinations. There are visible in the output of [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#mi_lb_list|lb_list]] and [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#mi_lb_status|lb_status]] MI commands, and can also be returned in the script through a new @@attrs@@ parameter for the following script functions: [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_start|lb_start]], [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_next|lb_next]],[[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_start_or_next|lb_start_or_next]], [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_load_balance|load_balance]], [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_is_destination|lb_is_destination]].
to:
* add opaque, DB provisioned attribute strings to destinations. There are visible in the output of [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#mi_lb_list|lb_list]] and [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#mi_lb_status|lb_status]] MI commands, and can also be returned in the script through a new @@attrs@@ optional parameter for the following script functions: [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_start|lb_start]], [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_next|lb_next]],[[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_start_or_next|lb_start_or_next]], [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_load_balance|load_balance]], [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_is_destination|lb_is_destination]].
May 27, 2020, at 02:36 AM by rvlad_patrascu -
Added line 135:
* add opaque, DB provisioned attribute strings to destinations. There are visible in the output of [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#mi_lb_list|lb_list]] and [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#mi_lb_status|lb_status]] MI commands, and can also be returned in the script through a new @@attrs@@ parameter for the following script functions: [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_start|lb_start]], [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_next|lb_next]],[[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_start_or_next|lb_start_or_next]], [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_load_balance|load_balance]], [[https://opensips.org/docs/modules/3.2.x/load_balancer.html#func_lb_is_destination|lb_is_destination]].
May 27, 2020, at 02:16 AM by rvlad_patrascu -
Changed lines 76-77 from:
* new [[https://opensips.org/html/docs/modules/3.2.x/b2b_entities.html#param_cluster_id|cluster_id]] module parameter that enables replication support for the back-to-back underlying layer. This provides clustering support for higher level modules that use the B2B engine, namely '''b2b_logic''' and '''media_exchange'''. You can find more information in this [[https://blog.opensips.org/2020/04/30/back-to-back-clustering-a-love-story-in-opensips-3-2//|blog post]].
to:
* new [[https://opensips.org/html/docs/modules/3.2.x/b2b_entities.html#param_cluster_id|cluster_id]] module parameter that enables replication support for the back-to-back underlying layer. This provides clustering support for some higher level modules that use the B2B engine, namely '''b2b_logic''' and '''media_exchange'''. You can find more information in this [[https://blog.opensips.org/2020/04/30/back-to-back-clustering-a-love-story-in-opensips-3-2//|blog post]].
Changed lines 116-117 from:
to:
* improve clustering with data sync mechanism (at startup and after DB reload)
Changed lines 121-122 from:
to:
* improve clustering with data sync mechanism (at startup and after DB reload)
Added lines 133-135:
!!!! LOAD_BALANCER
* improve clustering with data sync mechanism (at startup and after DB reload)
Added lines 155-157:

!!!! PRESENCE module
* add the @@full-sharing@@ option for the [[https://opensips.org/docs/modules/3.2.x/presence.html#param_cluster_federation_mode|cluster_federation_mode]] module parameter. In this new mode of operation, the published state is kept on all presence nodes even when there aren't any local subscribers.
May 27, 2020, at 01:45 AM by rvlad_patrascu -
Added lines 74-82:

!!!! B2B_ENTITIES
* new [[https://opensips.org/html/docs/modules/3.2.x/b2b_entities.html#param_cluster_id|cluster_id]] module parameter that enables replication support for the back-to-back underlying layer. This provides clustering support for higher level modules that use the B2B engine, namely '''b2b_logic''' and '''media_exchange'''. You can find more information in this [[https://blog.opensips.org/2020/04/30/back-to-back-clustering-a-love-story-in-opensips-3-2//|blog post]].

!!!! B2B_LOGIC

* new [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#b2b_logic.key|$b2b_logic.key]] variable that returns the key of the current B2B session
* new [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#b2b_logic.entity|$b2b_logic.entity]] variable that returns information(entity key, Call-ID) about the entities involved in the current B2B session
* new [[https://opensips.org/docs/modules/3.2.x/b2b_logic.html#b2b_logic.ctx|$b2b_logic.ctx]] variable that provides a custom Key-Value storage in the context of the ongoing B2B session.
May 27, 2020, at 12:39 AM by rvlad_patrascu -
Added lines 112-114:
!!!! EVENT_DATAGRAM module
* The event payload is now formated as a JSON-RPC notification instead of the custom OpenSIPS line oriented formatting.
Changed lines 116-117 from:
* provide a new parameter, [[https://opensips.org/docs/modules/3.2.x/event_rabbitmq.html#param_suppress_event_name|suppress_event_name]] that can be used to suppress the name of the event sent in raised notifications.
to:
* provide a new parameter, [[https://opensips.org/docs/modules/3.2.x/event_rabbitmq.html#param_suppress_event_name|suppress_event_name]] that can be used to suppress the name of the event sent in raised notifications
* the event payload is now formated as a JSON-RPC notification instead of the custom OpenSIPS line oriented formatting.
May 26, 2020, at 08:54 PM by liviu -
Added lines 75-77:
!!!! CACHEDB_MONGODB module
* added support for "Timestamp" and "Binary" data types
Added lines 117-119:

!!!! MATHOPS module
* [[https://opensips.org/docs/modules/3.2.x/mathops.html#func_math_rpn|math_rpn()]] now additionally supports negative operands
May 26, 2020, at 08:41 PM by liviu -
Added lines 161-163:

!!!! TM module
* '''fr_timer''' and '''fr_inv_timer''' are now completely removed (not just deprecated). Use [[https://opensips.org/docs/modules/3.2.x/tm.html#param_fr_timeout|fr_timeout]] and [[https://opensips.org/docs/modules/3.2.x/tm.html#param_fr_inv_timeout|fr_inv_timeout]] instead!
May 26, 2020, at 06:46 PM by 109.99.227.30 -
Added line 95:
* extended the SIP Race condition support (RFC5407) by adding detection and handling for the early BYE vs 200OK race (under the same 'E' flag for 'create_dialog()')
May 26, 2020, at 06:38 PM by 109.99.227.30 -
Added lines 87-96:
!!!! CFGUTILS module
* NEW: [[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_get_accurate_time|get_accurate_time()]], useful whenever '''$Ts''' and '''$Tsm''' cannot be read atomically

!!!! DIALOG module
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_load_dialog_ctx|load_dialog_ctx()]] and [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_unload_dialog_ctx|unload_dialog_ctx()]] to load the context of a different dialog. There is a nice [[https://blog.opensips.org/2020/05/18/cross-dialog-data-accessing/|blog post]] describing what you can do with these functions.
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_on_answer|dlg_on_answer(route)]], [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_on_timeout|dlg_on_timeout(route)]] and [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_on_hangup|dlg_on_hangup(route)]] functions to trigger custom script routes when a dialog is answered, times out or gets terminated. Read more in this [[https://blog.opensips.org/2020/05/26/dialog-triggers-or-how-to-control-the-calls-from-script/|blog post]].
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_send_sequential|dlg_send_sequential()]] function used to send arbitrary SIP request within a dialog.
* the [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#pv_DLG_json|$DLG_json]] variable returns now the list of profiles also

Added lines 104-107:
!!!! DROUTING module
* support for non-digit characters in routing prefixes was added. The new modparam [[https://opensips.org/docs/modules/3.2.x/drouting.html#param_extra_prefix_char|extra_prefix_chars]] allows the definition of a list of such extra non-digit chars.
* new [[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_dr_match|dr_match()]] function for testing the matching of a number against the DR rules (with no routing, just matching).
Deleted lines 109-123:

!!!! CFGUTILS module
* NEW: [[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_get_accurate_time|get_accurate_time()]], useful whenever '''$Ts''' and '''$Tsm''' cannot be read atomically


!!!! DIALOG module
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_load_dialog_ctx|load_dialog_ctx()]] and [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_unload_dialog_ctx|unload_dialog_ctx()]] to load the context of a different dialog. There is a nice [[https://blog.opensips.org/2020/05/18/cross-dialog-data-accessing/|blog post]] describing what you can do with these functions.
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_on_answer|dlg_on_answer(route)]], [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_on_timeout|dlg_on_timeout(route)]] and [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_on_hangup|dlg_on_hangup(route)]] functions to trigger custom script routes when a dialog is answered, times out or gets terminated. Read more in this [[https://blog.opensips.org/2020/05/26/dialog-triggers-or-how-to-control-the-calls-from-script/|blog post]].
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_send_sequential|dlg_send_sequential()]] function used to send arbitrary SIP request within a dialog.
* the [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#pv_DLG_json|$DLG_json]] variable returns now the list of profiles also


!!!! DROUTING module
* support for non-digit characters in routing prefixes was added. The new modparam [[https://opensips.org/docs/modules/3.2.x/drouting.html#param_extra_prefix_char|extra_prefix_chars]] allows the definition of a list of such extra non-digit chars.
* new [[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_dr_match|dr_match()]] function for testing the matching of a number against the DR rules (with no routing, just matching).
May 26, 2020, at 06:35 PM by 109.99.227.30 -
Added lines 86-92:

!!!! DISPATCHER module
* new dispatching algorithm 10, for using a a script route (defined via the [[https://opensips.org/docs/modules/3.2.x/dispatcher.html#algo_route_param|algo_route]] module parameter) for calculating the weights of the destinations.
* new mechanism for operating with script attributes:
** the attributes will be exposed (during dispatching) via the [[https://opensips.org/docs/modules/3.2.x/dispatcher.html#param_script_attrs_avp|script_attrs_avp]]
** the attributes may be pushed via the [[https://opensips.org/docs/modules/3.2.x/dispatcher.html#func_ds_push_script_attrs|ds_push_script_attrs()]] script function or via the [[https://opensips.org/docs/modules/3.2.x/dispatcher.html#mi_ds_push_script_attrs|ds_push_script_attrs]] MI function
** the attributes may be fetched at script level via the [[https://opensips.org/docs/modules/3.2.x/dispatcher.html#func_ds_get_script_attrs|get_script_attrs()]] function
May 26, 2020, at 06:09 PM by 109.99.227.30 -
Added lines 61-63:

!!!! [NEW] RATE_CACHER module
The [[https://opensips.org/html/docs/modules/3.2.x/rate_cacher.html|rate_cacher module]] provides a means of caching and real-time querying of the ratesheets assigned to your clients and / or vendors. It also allows for real-time cost-based routing and cost-based filtering. What the module is able to do, how to provision and use it, all are nicely described in this [[https://blog.opensips.org/2020/04/07/real-time-rating-and-cost-based-routing-in-opensips-3-2/|blog post]].
May 26, 2020, at 06:06 PM by 109.99.227.30 -
Added lines 49-51:

!!!! [NEW] AUTH_JWT module
The module implements authentication over JSON Web Tokens. In some cases ( ie. WebRTC ) the user authenticates on another layer ( other than SIP ), so it makes no sense to double-authenticate it on the SIP layer. Thus, the SIP client will simply present the JWT auth token it received from the server, and pass it on to OpenSIPS which will use that for authentication purposes. For more, see the module [[https://opensips.org/docs/modules/3.2.x/auth_jwt.html|documentation]].
May 26, 2020, at 06:02 PM by 109.99.227.30 -
Added lines 118-120:

!!!! PROTO_SMPP module
* added support for UCS2 encoding in SMS messages (in & out)
May 26, 2020, at 05:59 PM by 109.99.227.30 -
Added line 92:
* the [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#pv_DLG_json|$DLG_json]] variable returns now the list of profiles also
May 26, 2020, at 04:59 PM by 109.99.227.30 -
Changed lines 113-114 from:
TODO -bogdan
to:
There is major rework of the module not make it call forking enabled - the 'pua_dialoginfo' module is able now to get access to the transaction information (not only to the dialog information as before); this made the module aware of the multiple branches created, not only dialog aware, so data related to call branches can now be also published. The new BLF implementation has two major advantages:
* it is able to expose events related to call forking (prior to call answering). This will provide a more accurate insight of the call genesis.
* it correctly reports the callee party, both in serial forking (when the callee changes) and in parallel forking (when you have multiple callee parties in the same time); see the new [[https://opensips.org/html/docs/modules/3.2.x/pua_dialoginfo.html#func_dialoginfo_set_branch_callee|dialoginfo_set_branch_callee()]] and [[ https://opensips.org/html/docs/modules/3.2.x/pua_dialoginfo.html#func_dialoginfo_mute_branch|dialoginfo_mute_branch()]] functions.
See more details in this comprehensive [[https://blog.opensips.org/2020/04/02/blf-reloaded-or-a-more-accurate-and-detailed-approach/|blog post]].
Changed line 153 from:
* The 'domain' attribute has been added to all [[https://opensips.org/docs/modules/3.2.x/usrloc.html#exported_events|events]]
to:
* The 'domain' attribute has been added to all [[https://opensips.org/docs/modules/3.2.x/usrloc.html#exported_events|events]]
May 26, 2020, at 04:58 PM by razvancrainea -
Added line 91:
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_send_sequential|dlg_send_sequential()]] function used to send arbitrary SIP request within a dialog.
May 26, 2020, at 04:52 PM by 109.99.227.30 -
Changed lines 57-58 from:
The module enables the handling of the "as-feature-event" event package (as defined by Broadsoft's [[http://community.polycom.com/polycom/attachments/polycom/VoIP/2234/1/DeviceFeatureKeySynchronizationFD.pdf|Device Feature Key Synchronization]] protocol) by the presence module. This can be used to synchronize the status of features such as Do Not Disturb and different forwarding types between a SIP phone and a SIP server. Technical specs and more details are available in the [[https://opensips.org/docs/modules/3.2.x/presence_dfks.html|module's readme]].
to:
The module enables the handling of the "as-feature-event" event package (as defined by Broadsoft's [[http://community.polycom.com/polycom/attachments/polycom/VoIP/2234/1/DeviceFeatureKeySynchronizationFD.pdf|Device Feature Key Synchronization]] protocol) by the presence module. This can be used to synchronize the status of features such as Do Not Disturb and different forwarding types between a SIP phone and a SIP server. Technical specs and more details are available in the [[https://opensips.org/docs/modules/3.2.x/presence_dfks.html|module's readme]]. Also, for more , see this [[https://blog.opensips.org/2020/04/28/dfks-or-the-key-to-synchronization/|blog post]].
Changed line 89 from:
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_load_dialog_ctx|load_dialog_ctx()]] and [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_unload_dialog_ctx|unload_dialog_ctx()]] to load the context of a different dialog.
to:
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_load_dialog_ctx|load_dialog_ctx()]] and [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_unload_dialog_ctx|unload_dialog_ctx()]] to load the context of a different dialog. There is a nice [[https://blog.opensips.org/2020/05/18/cross-dialog-data-accessing/|blog post]] describing what you can do with these functions.
May 26, 2020, at 04:36 PM by 109.99.227.30 -
Added line 90:
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_on_answer|dlg_on_answer(route)]], [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_on_timeout|dlg_on_timeout(route)]] and [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_dlg_on_hangup|dlg_on_hangup(route)]] functions to trigger custom script routes when a dialog is answered, times out or gets terminated. Read more in this [[https://blog.opensips.org/2020/05/26/dialog-triggers-or-how-to-control-the-calls-from-script/|blog post]].
May 26, 2020, at 03:30 PM by razvancrainea -
Added line 79:
* new audio message can be played back to the agent to announce him about the flow he's getting the call for, using the @@message_flow_id@@ column in the database.
May 26, 2020, at 03:23 PM by razvancrainea -
Added line 123:
* Intercept RFC 22833/4733 DTMF events and trigger them in OpenSIPS using the new [[https://opensips.org/docs/modules/3.2.x/rtpengine.html#event_E_RTPENGINE_NOTIFICATION|E_RTPENGINE_NOTIFICATION]] event.
May 26, 2020, at 03:18 PM by razvancrainea -
Changed lines 136-137 from:
to:
* The function also does auto-conversion between UTF-8 and GSM7.
Added line 143:
* Add support for TLSv3
May 26, 2020, at 02:17 PM by razvancrainea -
Added lines 130-132:

!!!! SIPREC module
* Provide extra headers to the request going to the SIPREC server when calling the [[https://opensips.org/docs/modules/3.2.x/siprec.html#func_siprec_start_recording|siprec_start_recording]] function.
May 26, 2020, at 02:11 PM by razvancrainea -
Added lines 120-123:
!!!! RTPEngine module
* Add new functions to manipulate RTP streams from rtpproxy, such as @@rtpengine_play_media@@, @@rtpengine_stop_media@@, @@rtpengine_block_media@@, @@rtpengine_unblock_media@@, @@rtpengine_block_dtmf@@, @@rtpengine_unblock_dtmf@@, @@rtpengine_start_forwarding@@, @@rtpengine_stop_forwarding@@, @@rtpengine_play_dtmf@@. You can find all the available functions [[https://opensips.org/docs/modules/3.2.x/rtpengine.html#func_rtpengine_play_media|here]].
* Add new statistics for variables provided by RTPEngine: @@jitter-average@@, @@roundtrip-average@@, @@packetloss-average@@, @@jitter-min@@, @@roundtrip-min@@, @@packetloss-min@@, @@jitter-max@@, @@roundtrip-max@@, @@packetloss-max@@, @@jitter-min-at@@, @@roundtrip-min-at@@, @@packetloss-min-at@@, @@jitter-max-at@@, @@roundtrip-max-at@@, @@packetloss-min-at@@.
Deleted line 126:
* Add new functions to manipulate RTP streams from rtpproxy, such as @@rtpengine_play_media@@, @@rtpengine_stop_media@@, @@rtpengine_block_media@@, @@rtpengine_unblock_media@@, @@rtpengine_block_dtmf@@, @@rtpengine_unblock_dtmf@@, @@rtpengine_start_forwarding@@, @@rtpengine_stop_forwarding@@, @@rtpengine_play_dtmf@@. You can find all the available functions [[https://opensips.org/docs/modules/3.2.x/rtpengine.html#func_rtpengine_play_media|here]].
May 25, 2020, at 02:33 PM by razvancrainea -
Added lines 49-51:

!!!! [NEW] Call Operations module
The new CallOps module provides a set of functions to control the behavior of an ongoing call. Using this module you can start a new call, trigger call blind and attended transfers, put a call on hold, etc. Check out more information in the module's [[https://opensips.org/docs/modules/3.2.x/callops.html|documentation]] page.
May 19, 2020, at 12:45 AM by 109.98.32.84 -
Changed lines 64-65 from:
to:
* new [[https://opensips.org/html/docs/modules/3.2.x/acc.html#func_acc_load_ctx_from_dlg|acc_load_ctx_from_dlg()]] and [[https://opensips.org/html/docs/modules/3.2.x/acc.html#func_acc_unload_ctx_from_dlg|acc_unload_ctx_from_dlg()]] functions to load the accounting context of another dialog.
Added lines 83-87:

!!!! DIALOG module
* new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_load_dialog_ctx|load_dialog_ctx()]] and [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_unload_dialog_ctx|unload_dialog_ctx()]] to load the context of a different dialog.

Added lines 121-123:

!!!!SIGNALING module
* new script variable [[https://opensips.org/html/docs/modules/3.2.x/signaling.html#pv_sig_local_totag|$sip_local_totag]] to return the local To-tag that will be used by OpenSIPS for locally sending replies to the current SIP request.
May 18, 2020, at 11:13 PM by 109.98.32.84 -
Added lines 38-39:

* new [[Documentation.Script-CoreVar-3-2#msg.is_request|$msg.is_request]] and [[Documentation.Script-CoreVar-3-2#msg.type|$msg.type]] variables to test/tell you if the current SIP message is a request or reply.
May 13, 2020, at 12:21 AM by 109.98.32.84 -
Changed line 37 from:
* new [[Documentation.Script-CoreVar-3-2#msg.flag|$msg.flag(name)]] and [[Documentation.Script-CoreVar-3-2#bransch.flag|$branch.flag(name)[idx]]] read/write variables for accessing a single message/branch flag. Very useful for xlog'ing
to:
* new [[Documentation.Script-CoreVar-3-2#msg.flag|$msg.flag(name)]] and [[Documentation.Script-CoreVar-3-2#branch.flag|$branch.flag(name)[idx]]] read/write variables for accessing a single message/branch flag. Very useful for xlog'ing
May 13, 2020, at 12:20 AM by 109.98.32.84 -
Changed line 37 from:
* new [[Documentation.Script-CoreVar-3-2#msg.flag|$msg.flag(name)]] and [[Documentation.Script-CoreVar-3-2#bransch.flag|$branch.flag(name)[idx]]] read/write variables for accessing a single message/branch flag. Very useful for xlog'ing
to:
* new [[Documentation.Script-CoreVar-3-2#msg.flag|$msg.flag(name)]] and [[Documentation.Script-CoreVar-3-2#bransch.flag|$branch.flag(name)[idx]]] read/write variables for accessing a single message/branch flag. Very useful for xlog'ing
May 13, 2020, at 12:15 AM by 109.98.32.84 -
Added lines 36-37:

* new [[Documentation.Script-CoreVar-3-2#msg.flag|$msg.flag(name)]] and [[Documentation.Script-CoreVar-3-2#bransch.flag|$branch.flag(name)[idx]]] read/write variables for accessing a single message/branch flag. Very useful for xlog'ing
May 12, 2020, at 06:56 PM by 109.98.32.84 -
Added line 80:
* new [[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_dr_match|dr_match()]] function for testing the matching of a number against the DR rules (with no routing, just matching).
May 12, 2020, at 06:54 PM by liviu -
Added line 88:
* NEW: standards-based SIP Push Notification support (RFC 8599): [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#rfc-8599-support|Read more...]]
Added line 99:
* NEW: standards-based SIP Push Notification support (RFC 8599): [[https://opensips.org/docs/modules/3.2.x/registrar.html#rfc-8599-support|Read more...]]
April 29, 2020, at 10:58 PM by liviu -
Changed line 59 from:
* any [[https://opensips.org/docs/modules/3.2.x/acc.html#pv_acc_extra|acc variables]] set within the global '''onreply_route''' will be carrier over to the stateful reply routes (e.g. transaction-level on-reply route and branch-level on-reply route), as well as until the end of the dialog
to:
* any [[https://opensips.org/docs/modules/3.2.x/acc.html#pv_acc_extra|acc variables]] set within the global '''onreply_route''' are now carried over to the stateful reply routes (e.g. transaction-level on-reply route and branch-level on-reply route), as well as until the end of the dialog
April 29, 2020, at 10:58 PM by liviu -
Added lines 57-59:

!!!! ACC module
* any [[https://opensips.org/docs/modules/3.2.x/acc.html#pv_acc_extra|acc variables]] set within the global '''onreply_route''' will be carrier over to the stateful reply routes (e.g. transaction-level on-reply route and branch-level on-reply route), as well as until the end of the dialog
April 29, 2020, at 04:18 PM by liviu -
Changed lines 89-90 from:
* NEW modparams: [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_username_len|max_username_len]], [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_domain_len|max_domain_len]] and [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_aor_len|max_aor_len]]
to:
* NEW modparams: [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_username_len|max_username_len]], [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_domain_len|max_domain_len]], [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_aor_len|max_aor_len]] and [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_contact_len|max_contact_len]]
Changed line 95 from:
* NEW modparams: [[https://opensips.org/docs/modules/3.2.x/registrar.html#param_max_username_len|max_username_len]], [[https://opensips.org/docs/modules/3.2.x/registrar.html#param_max_domain_len|max_domain_len]] and [[https://opensips.org/docs/modules/3.2.x/registrar.html#param_max_aor_len|max_aor_len]]
to:
* NEW modparams: [[https://opensips.org/docs/modules/3.2.x/registrar.html#param_max_username_len|max_username_len]], [[https://opensips.org/docs/modules/3.2.x/registrar.html#param_max_domain_len|max_domain_len]],[[https://opensips.org/docs/modules/3.2.x/registrar.html#param_max_aor_len|max_aor_len]] and [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_contact_len|max_contact_len]]
April 23, 2020, at 09:30 PM by liviu -
Added lines 77-79:

!!!! FRAUD_DETECTION module
* the threshold names reported in the events have been normalized to: "calls-per-minute", "total-calls", "concurrent-calls", "sequential-calls" and "call-duration".
April 23, 2020, at 02:13 PM by 109.98.32.84 -
Changed line 35 from:
* new [[Documentation.Script-CoreVar-3-2#socket_in|$socket_in/$socket_in()]] and [[Documentation.Script-CoreVar-3-2#socket_out|$socket_out/$socket_out()]] scripting variables to provide detailed access to the inbound socket (used to received the message) and outbound socket (used to send out the message). These variables obsolete '''$fs''', '''$Ri''', '''$Rp''', '''$pr''' and '''$proto'''
to:
* new [[Documentation.Script-CoreVar-3-2#socket_in|$socket_in/$socket_in()]] and [[Documentation.Script-CoreVar-3-2#socket_out|$socket_out/$socket_out()]] scripting variables to provide detailed access to the inbound socket (used to received the message) and outbound socket (used to send out the message). These variables obsolete '''$fs''', '''$Ri''', '''$Rp''', '''$af''', '''$pr''' and '''$proto'''
April 23, 2020, at 01:20 PM by 109.98.32.84 -
Added lines 34-35:

* new [[Documentation.Script-CoreVar-3-2#socket_in|$socket_in/$socket_in()]] and [[Documentation.Script-CoreVar-3-2#socket_out|$socket_out/$socket_out()]] scripting variables to provide detailed access to the inbound socket (used to received the message) and outbound socket (used to send out the message). These variables obsolete '''$fs''', '''$Ri''', '''$Rp''', '''$pr''' and '''$proto'''
April 23, 2020, at 12:22 PM by 109.98.32.84 -
Added lines 32-34:

* the '''tcp_listen_backlog''' parameter was renamed as '''tcp_socket_backlog''' preserving the same definition and behavior
April 23, 2020, at 11:56 AM by 109.98.32.84 -
Changed lines 42-43 from:
* A new module that provides means to exchange SDP bodies between different calls has been added. Using this new module one can implement enhanced features such as playing back announcements or music on hold files during an ongoing call, or listening a conversation of two different participants. You can find more information about the new module in the module's [[https://opensips.org/docs/modules/3.2.x/media_exchange.html|documentation]] page.
to:
A new module that provides means to exchange SDP bodies between different calls has been added. Using this new module one can implement enhanced features such as playing back announcements or music on hold files during an ongoing call, or listening a conversation of two different participants. You can find more information about the new module in the module's [[https://opensips.org/docs/modules/3.2.x/media_exchange.html|documentation]] page.
Changed line 51 from:
* A new module which keeps track of the signaling quality of each outbound gateway at runtime and dynamically alters the gateway ordering in order to ensure an optimal quality for your platform's PSTN termination signaling! ''[[https://opensips.org/docs/modules/3.2.x/qrouting.html|(documentation)]]'' ''[[https://blog.opensips.org/2020/02/13/quality-based-pstn-routing-in-opensips-3-2-lts/|(blog)]]''
to:
A new module which keeps track of the signaling quality of each outbound gateway at runtime and dynamically alters the gateway ordering in order to ensure an optimal quality for your platform's PSTN termination signaling! ''[[https://opensips.org/docs/modules/3.2.x/qrouting.html|(documentation)]]'' ''[[https://blog.opensips.org/2020/02/13/quality-based-pstn-routing-in-opensips-3-2-lts/|(blog)]]''
April 23, 2020, at 11:55 AM by 109.98.32.84 -
Added lines 44-46:
!!!! [NEW] PRESENCE_DFKS module
The module enables the handling of the "as-feature-event" event package (as defined by Broadsoft's [[http://community.polycom.com/polycom/attachments/polycom/VoIP/2234/1/DeviceFeatureKeySynchronizationFD.pdf|Device Feature Key Synchronization]] protocol) by the presence module. This can be used to synchronize the status of features such as Do Not Disturb and different forwarding types between a SIP phone and a SIP server. Technical specs and more details are available in the [[https://opensips.org/docs/modules/3.2.x/presence_dfks.html|module's readme]].
Changed line 48 from:
This module adds support for implementing STIR/SHAKEN (RFC 8224, RFC 8588) Authentication and Verification services in OpenSIPS. A more comprehensive description is available on the [[https://blog.opensips.org/2020/01/23/shaken-not-stirred/|OpenSIPS blog]], while the technical details are available in the [[https://opensips.org/docs/modules/3.2.x/stir_shaken.htmlmodule's readme]].
to:
This module adds support for implementing STIR/SHAKEN (RFC 8224, RFC 8588) Authentication and Verification services in OpenSIPS. A more comprehensive description is available on the [[https://blog.opensips.org/2020/01/23/shaken-not-stirred/|OpenSIPS blog]], while the technical details are available in the [[https://opensips.org/docs/modules/3.2.x/stir_shaken.html|module's readme]].
April 23, 2020, at 11:52 AM by 109.98.32.84 -
Added lines 31-32:
* the '''listen''' parameter was renamed as '''socket''' preserving the same definition and behavior
Added lines 43-45:

!!!! [NEW] STIR_SHAKEN module
This module adds support for implementing STIR/SHAKEN (RFC 8224, RFC 8588) Authentication and Verification services in OpenSIPS. A more comprehensive description is available on the [[https://blog.opensips.org/2020/01/23/shaken-not-stirred/|OpenSIPS blog]], while the technical details are available in the [[https://opensips.org/docs/modules/3.2.x/stir_shaken.htmlmodule's readme]].
April 22, 2020, at 11:48 PM by liviu -
Added lines 64-66:

!!!! MI_FIFO module
* [[https://opensips.org/docs/modules/3.2.x/mi_fifo.html#param_fifo_name|fifo_name]] is no longer mandatory (default: "/tmp/opensips_fifo")
April 22, 2020, at 10:51 PM by liviu -
Added line 80:
* the "Expect: 100-continue" header field for HTTP POST/PUT is now disabled by default, controllable via a new modparam, [[https://opensips.org/docs/modules/3.2.x/rest_client.html#param_enable_expect_100|enable_expect_100]]
April 19, 2020, at 05:12 PM by 109.98.32.84 -
Changed lines 54-55 from:

to:
* new optional '''script_param''' parameter to the '''cc_handle_call()''' to be passed as parameter to the "callcenter" and "agent" B2B scenarios. It is intended for custom integration of the call center module and it is 100% up to the script writer about the value and purpose of this parameter, OpenSIPS will not touch or interpret it.
April 19, 2020, at 04:43 PM by 109.98.32.84 -
Changed line 51 from:
* the '''cc_agents table customization''' via module parameter (name of the table and name of the columns)
to:
* the '''cc_agents & cc_flows tables customization''' via module parameter (names of the tables and names of the columns)
April 18, 2020, at 11:39 PM by 109.98.32.84 -
Added lines 52-53:
* an optional '''separate db_url''' is available '''for runtime tables (cc_calls)'''
* new module parameter '''reject_on_no_agents''' to avoid rejection of new incoming calls if there is no agent logged in the flow; Such calls will be queued.
April 18, 2020, at 11:20 PM by 109.98.32.84 -
Added lines 47-53:
* added per-flow '''call dissuading''' support; the dissuading means to redirect a call to another destination (SIP URI), if the queue/flow is overloaded:
** if the number of calls already in the queue exceeds the diss_qsize_th threshold
** if the estimated time to wait of the queue exceeds the diss_ewt_th threshold
** if the call was waiting in the queue for longer than diss_onhold_th threshold
* the '''cc_agents table customization''' via module parameter (name of the table and name of the columns)

April 18, 2020, at 09:58 PM by 109.98.32.84 -
Changed lines 45-47 from:
!!!! Dynamic Routing module
* support for non-digit characters in routing prefixes was added. The new modparam [[https://opensips.org/docs/modules/3.2.x/drouting.html#param_extra_prefix_char|extra_prefix_chars]] allows the definition of a list of such extra non-digit chars.
to:
!!!! CALL_CENTER module
* added improved '''wrapup time''' support. Now there is optional per-flow and per-agent wrapup time.
Added lines 54-56:
!!!! DROUTING module
* support for non-digit characters in routing prefixes was added. The new modparam [[https://opensips.org/docs/modules/3.2.x/drouting.html#param_extra_prefix_char|extra_prefix_chars]] allows the definition of a list of such extra non-digit chars.
Added lines 63-65:

!!!! PUA_DIALOGINFO module
TODO -bogdan
April 16, 2020, at 12:05 AM by liviu -
Changed lines 79-82 from:
* The [[https://opensips.org/docs/modules/3.2.x/tls_mgm#param_tls_method|tls_method]] parameter can now accept a range of TLS versions to accept.
to:
* The [[https://opensips.org/docs/modules/3.2.x/tls_mgm#param_tls_method|tls_method]] parameter can now accept a range of TLS versions to accept.

!!!! USRLOC module
* The 'domain' attribute has been added to all [[https://opensips.org/docs/modules/3.2.x/usrloc.html#exported_events|events]]
March 25, 2020, at 03:13 PM by razvancrainea -
Changed line 40 from:
* A new module that provides means to exchange SDP bodies between different calls has been added. Using this new module one can implement enhanced features such as playing back announcements or music on hold files during an ongoing call, or listening a conversation of two different participants. You can find more information about the new module in the [[https://opensips.org/docs/modules/3.2.x/media_exchange.html|documentation]] page.
to:
* A new module that provides means to exchange SDP bodies between different calls has been added. Using this new module one can implement enhanced features such as playing back announcements or music on hold files during an ongoing call, or listening a conversation of two different participants. You can find more information about the new module in the module's [[https://opensips.org/docs/modules/3.2.x/media_exchange.html|documentation]] page.
March 25, 2020, at 03:13 PM by razvancrainea -
Changed line 40 from:
* A new module that provides means to exchange SDP bodies between different calls has been added. Using this new module one can implement enhanced features such as playing back announcements or music on hold files during an ongoing call, or listening a conversation of two different participants. You can find more information about the new module in the ''[[https://opensips.org/docs/modules/3.2.x/media_exchange.html|(documentation)]]'' page.
to:
* A new module that provides means to exchange SDP bodies between different calls has been added. Using this new module one can implement enhanced features such as playing back announcements or music on hold files during an ongoing call, or listening a conversation of two different participants. You can find more information about the new module in the [[https://opensips.org/docs/modules/3.2.x/media_exchange.html|documentation]] page.
March 25, 2020, at 03:12 PM by razvancrainea -
Added lines 39-40:
!!!! [NEW] Media Exchange module
* A new module that provides means to exchange SDP bodies between different calls has been added. Using this new module one can implement enhanced features such as playing back announcements or music on hold files during an ongoing call, or listening a conversation of two different participants. You can find more information about the new module in the ''[[https://opensips.org/docs/modules/3.2.x/media_exchange.html|(documentation)]]'' page.
February 28, 2020, at 01:58 PM by rvlad_patrascu -
Added lines 72-74:

!!!! TOPOLOGY_HIDING module
* NEW [[https://opensips.org/docs/modules/3.2.x/topology_hiding.html#param_th_contact_encode_scheme|th_contact_encode_scheme]] modparam that allows changing the encoding scheme for the Contact URI parameter between base64 and base32.
February 13, 2020, at 06:40 PM by liviu -
Changed line 41 from:
* A new module which keeps track of the signaling quality of each outbound gateway at runtime and dynamically alters the gateway ordering in order to ensure an optimal quality for your platform's PSTN termination signaling! [[https://opensips.org/docs/modules/3.2.x/qrouting.html|module documentation]]
to:
* A new module which keeps track of the signaling quality of each outbound gateway at runtime and dynamically alters the gateway ordering in order to ensure an optimal quality for your platform's PSTN termination signaling! ''[[https://opensips.org/docs/modules/3.2.x/qrouting.html|(documentation)]]'' ''[[https://blog.opensips.org/2020/02/13/quality-based-pstn-routing-in-opensips-3-2-lts/|(blog)]]''
February 10, 2020, at 03:11 PM by liviu -
Changed line 41 from:
* A new module which keeps track of the signaling quality of each outbound gateway at runtime and dynamically alters the gateway ordering in order to ensure an optimal quality for your platform's PSTN termination signaling! [[https://opensips.org/docs/modules/3.2.x/qrouting.html|module documentation]
to:
* A new module which keeps track of the signaling quality of each outbound gateway at runtime and dynamically alters the gateway ordering in order to ensure an optimal quality for your platform's PSTN termination signaling! [[https://opensips.org/docs/modules/3.2.x/qrouting.html|module documentation]]
February 10, 2020, at 03:11 PM by liviu -
Added lines 39-41:

!!!! [NEW] Quality-based Routing Module (qrouting)
* A new module which keeps track of the signaling quality of each outbound gateway at runtime and dynamically alters the gateway ordering in order to ensure an optimal quality for your platform's PSTN termination signaling! [[https://opensips.org/docs/modules/3.2.x/qrouting.html|module documentation]
February 07, 2020, at 10:30 PM by liviu -
Changed lines 19-21 from:
* the strange '''"if $var(x) {..."''' syntax is not allowed anymore ''[[https://github.com/OpenSIPS/opensips/commit/72fba8416|(source)]]''

* the '''return''' statement has been extended. Now you can also say '''"return 1;"''' or '''"return $var(foo);"''' ''[[https://github.com/OpenSIPS/opensips/commit/536e7b065e548|(source)]]''
to:
* the strange [@if $var(x) {...@] syntax is not allowed anymore ''[[https://github.com/OpenSIPS/opensips/commit/72fba8416|(source)]]''

* the '''return''' statement has been extended. Now you can also say [@return 1;@] or [@return $var(foo);@] ''[[https://github.com/OpenSIPS/opensips/commit/536e7b065e548|(source)]]''
February 07, 2020, at 10:29 PM by liviu -
Changed line 21 from:
* the '''return''' statement has been simplified, now you can say '''"return 1;"''' or '''"return $var(foo);"''' ''[[https://github.com/OpenSIPS/opensips/commit/536e7b065e548|(source)]]''
to:
* the '''return''' statement has been extended. Now you can also say '''"return 1;"''' or '''"return $var(foo);"''' ''[[https://github.com/OpenSIPS/opensips/commit/536e7b065e548|(source)]]''
February 07, 2020, at 06:40 PM by liviu -
Changed line 53 from:
* NEW: [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|Path Header (RFC 3327) Support]], via the '''p0, p1''' and '''p2 options to [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]] (on par with registrar).
to:
* NEW: [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|Path Header (RFC 3327) Support]], via the '''p0, p1''' and '''p2''' options to [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]] (on par with registrar).
February 07, 2020, at 06:36 PM by liviu -
Changed lines 17-18 from:
* the '''break''' keyword now fully works with any (nested) '''switch''', '''while''' and '''for-each''' statements
to:
* the '''break''' keyword now fully works with any (nested) '''switch''', '''while''' and '''for-each''' statements ''[[https://github.com/OpenSIPS/opensips/commit/ae3fcda3b69|(source)]]''

* the strange '''"if $var(x) {..."''' syntax is not allowed anymore ''[[https://github.com/OpenSIPS/opensips/commit/72fba8416|(source)]]''

* the '''return''' statement has been simplified, now you can say '''"return 1;"''' or '''"return $var(foo);"''' ''[[https://github.com/OpenSIPS/opensips/commit/536e7b065e548|(source)]]''

* the '''+=''', '''-=''', '''*=''', '''/=''', '''%=''', '''&=''', '''|=''' and '''^=''' operators are now fully working ''[[https://github.com/OpenSIPS/opensips/commit/628a126fe3523|(source)]]''
Added lines 54-57:
* NEW modparams: [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_username_len|max_username_len]], [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_domain_len|max_domain_len]] and [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_aor_len|max_aor_len]]

!!!! REGISTRAR module
* NEW modparams: [[https://opensips.org/docs/modules/3.2.x/registrar.html#param_max_username_len|max_username_len]], [[https://opensips.org/docs/modules/3.2.x/registrar.html#param_max_domain_len|max_domain_len]] and [[https://opensips.org/docs/modules/3.2.x/registrar.html#param_max_aor_len|max_aor_len]]
February 05, 2020, at 08:04 PM by liviu -
Changed lines 35-36 from:
* support for non-digit characters in routing prefixes was added. The new modparam [[https://opensips.org/html/docs/modules/3.2.x/drouting.html#param_extra_prefix_char|extra_prefix_chars]] allows the definition of a list of such extra non-digit chars.
to:
* support for non-digit characters in routing prefixes was added. The new modparam [[https://opensips.org/docs/modules/3.2.x/drouting.html#param_extra_prefix_char|extra_prefix_chars]] allows the definition of a list of such extra non-digit chars.
Changed lines 38-39 from:
* provide a new parameter, [[https://opensips.org/html/docs/modules/3.2.x/event_rabbitmq.html#param_suppress_event_name|suppress_event_name]] that can be used to suppress the name of the event sent in raised notifications.
to:
* provide a new parameter, [[https://opensips.org/docs/modules/3.2.x/event_rabbitmq.html#param_suppress_event_name|suppress_event_name]] that can be used to suppress the name of the event sent in raised notifications.
Changed lines 41-42 from:
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/cfgutils.html#func_get_accurate_time|get_accurate_time()]], useful whenever '''$Ts''' and '''$Tsm''' cannot be read atomically
to:
* NEW: [[https://opensips.org/docs/modules/3.2.x/cfgutils.html#func_get_accurate_time|get_accurate_time()]], useful whenever '''$Ts''' and '''$Tsm''' cannot be read atomically
Changed lines 44-48 from:
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#param_max_contacts|max_contacts]] modparam and [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]] option (on par with registrar)
* NEW: '''"o" (Only request contacts)''' flag for [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]]. Limits the Contacts included in the 200 OK reply to the registered set of contacts. Although this flag breaks RFC 3261, it is often required in Push Notification setups.
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#param_attr_avp|Attributes AVP]] storage and retrieval (on par with registrar)
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|Path Header (RFC 3327) Support]], via the '''p0, p1''' and '''p2 options to [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]] (on par with registrar).
to:
* NEW: [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_max_contacts|max_contacts]] modparam and [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]] option (on par with registrar)
* NEW: '''"o" (Only request contacts)''' flag for [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]]. Limits the Contacts included in the 200 OK reply to the registered set of contacts. Although this flag breaks RFC 3261, it is often required in Push Notification setups.
* NEW: [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#param_attr_avp|Attributes AVP]] storage and retrieval (on par with registrar)
* NEW: [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|Path Header (RFC 3327) Support]], via the '''p0, p1''' and '''p2 options to [[https://opensips.org/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]] (on par with registrar).
Changed lines 50-51 from:
* new [[https://opensips.org/html/docs/modules/3.2.x/rest_client.html#tran_rest.escape|{rest.escape}]] and [[https://opensips.org/html/docs/modules/3.2.x/rest_client.html#tran_rest.unescape|{rest.unescape}]] transformations (contributed by Callum Guy)
to:
* new [[https://opensips.org/docs/modules/3.2.x/rest_client.html#tran_rest.escape|{rest.escape}]] and [[https://opensips.org/docs/modules/3.2.x/rest_client.html#tran_rest.unescape|{rest.unescape}]] transformations (contributed by Callum Guy)
Changed lines 53-56 from:
* Add support for intercepting RFC 22833/4733 DTMF events and trigger them in OpenSIPS using the new [[https://opensips.org/html/docs/modules/3.2.x/rtpproxy.html#event_E_RTPPROXY_DTMF_EVENT|E_RTPPROXY_DTMF_EVENT]]. This feature is currently available in the RTPProxy [[https://github.com/sippy/rtpproxy/tree/rtpp_2_1_dtmf|rtpp_2_1_dtmf]] branch.
* Provide means to specify a custom notification socket for RTPProxy by adding it as a parameter to the @@n@@ flag. Find more information in the [[https://opensips.org/html/docs/modules/3.2.x/rtpproxy.html#func_rtpproxy_engage|rtpproxy_engage]] documentation.
* Add new functions to manipulate RTP streams from rtpproxy, such as @@rtpengine_play_media@@, @@rtpengine_stop_media@@, @@rtpengine_block_media@@, @@rtpengine_unblock_media@@, @@rtpengine_block_dtmf@@, @@rtpengine_unblock_dtmf@@, @@rtpengine_start_forwarding@@, @@rtpengine_stop_forwarding@@, @@rtpengine_play_dtmf@@. You can find all the available functions [[https://opensips.org/html/docs/modules/3.2.x/rtpengine.html#func_rtpengine_play_media|here]].
to:
* Add support for intercepting RFC 22833/4733 DTMF events and trigger them in OpenSIPS using the new [[https://opensips.org/docs/modules/3.2.x/rtpproxy.html#event_E_RTPPROXY_DTMF_EVENT|E_RTPPROXY_DTMF_EVENT]]. This feature is currently available in the RTPProxy [[https://github.com/sippy/rtpproxy/tree/rtpp_2_1_dtmf|rtpp_2_1_dtmf]] branch.
* Provide means to specify a custom notification socket for RTPProxy by adding it as a parameter to the @@n@@ flag. Find more information in the [[https://opensips.org/docs/modules/3.2.x/rtpproxy.html#func_rtpproxy_engage|rtpproxy_engage]] documentation.
* Add new functions to manipulate RTP streams from rtpproxy, such as @@rtpengine_play_media@@, @@rtpengine_stop_media@@, @@rtpengine_block_media@@, @@rtpengine_unblock_media@@, @@rtpengine_block_dtmf@@, @@rtpengine_unblock_dtmf@@, @@rtpengine_start_forwarding@@, @@rtpengine_stop_forwarding@@, @@rtpengine_play_dtmf@@. You can find all the available functions [[https://opensips.org/docs/modules/3.2.x/rtpengine.html#func_rtpengine_play_media|here]].
Changed lines 58-59 from:
* The [[https://opensips.org/html/docs/modules/3.2.x/proto_smpp#func_send_smpp_message|send_smpp_message]] function can now accept variable source and destination numbers, as well as body and encoding.
to:
* The [[https://opensips.org/docs/modules/3.2.x/proto_smpp#func_send_smpp_message|send_smpp_message]] function can now accept variable source and destination numbers, as well as body and encoding.
Changed line 61 from:
* The [[https://opensips.org/html/docs/modules/3.2.x/tls_mgm#param_tls_method|tls_method]] parameter can now accept a range of TLS versions to accept.
to:
* The [[https://opensips.org/docs/modules/3.2.x/tls_mgm#param_tls_method|tls_method]] parameter can now accept a range of TLS versions to accept.
February 03, 2020, at 07:35 PM by liviu -
Added lines 40-42:
!!!! CFGUTILS module
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/cfgutils.html#func_get_accurate_time|get_accurate_time()]], useful whenever '''$Ts''' and '''$Tsm''' cannot be read atomically
Changed lines 44-45 from:
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#param_max_contacts|max_contacts]] modparam and [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|save()]] option (on par with registrar)
* NEW: '''"o" (Only request contacts)''' flag for [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|save()]]. Limits the Contacts included in the 200 OK reply to the registered set of contacts. Although this flag breaks RFC 3261, it is often required in Push Notification setups.
to:
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#param_max_contacts|max_contacts]] modparam and [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]] option (on par with registrar)
* NEW: '''"o" (Only request contacts)''' flag for [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]]. Limits the Contacts included in the 200 OK reply to the registered set of contacts. Although this flag breaks RFC 3261, it is often required in Push Notification setups.
Changed line 47 from:
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|Path Header (RFC 3327) Support]], via the '''p0, p1''' and '''p2 options to [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|save()]] (on par with registrar).
to:
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|Path Header (RFC 3327) Support]], via the '''p0, p1''' and '''p2 options to [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|mid_registrar_save()]] (on par with registrar).
February 03, 2020, at 07:32 PM by liviu -
Changed line 44 from:
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|Path Header (RFC 3327) Support]], via the '''p0, p1 and p2 options''' (on par with registrar).
to:
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|Path Header (RFC 3327) Support]], via the '''p0, p1''' and '''p2 options to [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|save()]] (on par with registrar).
February 03, 2020, at 07:31 PM by liviu -
Added lines 39-44:

!!!! MID_REGISTRAR module
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#param_max_contacts|max_contacts]] modparam and [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|save()]] option (on par with registrar)
* NEW: '''"o" (Only request contacts)''' flag for [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|save()]]. Limits the Contacts included in the 200 OK reply to the registered set of contacts. Although this flag breaks RFC 3261, it is often required in Push Notification setups.
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#param_attr_avp|Attributes AVP]] storage and retrieval (on par with registrar)
* NEW: [[https://opensips.org/html/docs/modules/3.2.x/mid_registrar.html#func_mid_registrar_save|Path Header (RFC 3327) Support]], via the '''p0, p1 and p2 options''' (on par with registrar).
February 03, 2020, at 07:03 PM by liviu -
Changed line 17 from:
* the '''break''' keyword now fully works with the '''switch''', '''while''' and '''for-each''' statements
to:
* the '''break''' keyword now fully works with any (nested) '''switch''', '''while''' and '''for-each''' statements
February 03, 2020, at 12:16 PM by liviu -
Changed line 41 from:
* new [[https://opensips.org/html/docs/modules/3.2.x/rest_client.html#tran_rest.escape|{rest.escape}]] and [[https://opensips.org/html/docs/modules/3.2.x/rest_client.html#tran_rest.unescape|{rest_unescape}]] transformations (contributed by Callum Guy)
to:
* new [[https://opensips.org/html/docs/modules/3.2.x/rest_client.html#tran_rest.escape|{rest.escape}]] and [[https://opensips.org/html/docs/modules/3.2.x/rest_client.html#tran_rest.unescape|{rest.unescape}]] transformations (contributed by Callum Guy)
February 03, 2020, at 12:15 PM by liviu -
Added lines 39-41:

!!!! REST_CLIENT module
* new [[https://opensips.org/html/docs/modules/3.2.x/rest_client.html#tran_rest.escape|{rest.escape}]] and [[https://opensips.org/html/docs/modules/3.2.x/rest_client.html#tran_rest.unescape|{rest_unescape}]] transformations (contributed by Callum Guy)
January 21, 2020, at 06:41 PM by razvancrainea -
Changed lines 43-49 from:
* Add new functions to manipulate RTP streams from rtpproxy, such as @@rtpengine_play_media@@, @@rtpengine_stop_media@@, @@rtpengine_block_media@@, @@rtpengine_unblock_media@@, @@rtpengine_block_dtmf@@, @@rtpengine_unblock_dtmf@@, @@rtpengine_start_forwarding@@, @@rtpengine_stop_forwarding@@, @@rtpengine_play_dtmf@@. You can find all the available functions [[https://opensips.org/html/docs/modules/3.2.x/rtpengine.html#func_rtpengine_play_media|here]].
to:
* Add new functions to manipulate RTP streams from rtpproxy, such as @@rtpengine_play_media@@, @@rtpengine_stop_media@@, @@rtpengine_block_media@@, @@rtpengine_unblock_media@@, @@rtpengine_block_dtmf@@, @@rtpengine_unblock_dtmf@@, @@rtpengine_start_forwarding@@, @@rtpengine_stop_forwarding@@, @@rtpengine_play_dtmf@@. You can find all the available functions [[https://opensips.org/html/docs/modules/3.2.x/rtpengine.html#func_rtpengine_play_media|here]].

!!!! SMPP module
* The [[https://opensips.org/html/docs/modules/3.2.x/proto_smpp#func_send_smpp_message|send_smpp_message]] function can now accept variable source and destination numbers, as well as body and encoding.

!!!! TLS_MGM module
* The [[https://opensips.org/html/docs/modules/3.2.x/tls_mgm#param_tls_method|tls_method]] parameter can now accept a range of TLS versions to accept.
January 14, 2020, at 05:17 PM by razvancrainea -
Changed line 38 from:
* provide a new parameter, [[https://opensips.org/html/docs/modules/3.2.x/event_rabbitmq.html#param_suppress_event_name|param_suppress_event_name]] that can be used to suppress the name of the event sent in raised notifications.
to:
* provide a new parameter, [[https://opensips.org/html/docs/modules/3.2.x/event_rabbitmq.html#param_suppress_event_name|suppress_event_name]] that can be used to suppress the name of the event sent in raised notifications.
January 14, 2020, at 05:16 PM by razvancrainea -
Added lines 36-38:

!!!! Event RabbitMQ module
* provide a new parameter, [[https://opensips.org/html/docs/modules/3.2.x/event_rabbitmq.html#param_suppress_event_name|param_suppress_event_name]] that can be used to suppress the name of the event sent in raised notifications.
January 08, 2020, at 04:36 PM by razvancrainea -
Changed lines 39-40 from:
* Provide means to specify a custom notification socket for RTPProxy by adding it as a parameter to the @@n@@ flag. Find more information in the [[https://opensips.org/html/docs/modules/3.2.x/rtpproxy.html#func_rtpproxy_engage|rtpproxy_engage]] documentation.
to:
* Provide means to specify a custom notification socket for RTPProxy by adding it as a parameter to the @@n@@ flag. Find more information in the [[https://opensips.org/html/docs/modules/3.2.x/rtpproxy.html#func_rtpproxy_engage|rtpproxy_engage]] documentation.
* Add new functions to manipulate RTP streams from rtpproxy, such as @@rtpengine_play_media@@, @@rtpengine_stop_media@@, @@rtpengine_block_media@@, @@rtpengine_unblock_media@@, @@rtpengine_block_dtmf@@, @@rtpengine_unblock_dtmf@@, @@rtpengine_start_forwarding@@, @@rtpengine_stop_forwarding@@, @@rtpengine_play_dtmf@@. You can find all the available functions [[https://opensips.org/html/docs/modules/3.2.x/rtpengine.html#func_rtpengine_play_media|here]].
December 03, 2019, at 09:50 AM by razvancrainea -
Changed lines 38-39 from:
* Add support for intercepting RFC 22833/4733 DTMF events and trigger them in OpenSIPS using the new [[https://opensips.org/html/docs/modules/3.2.x/rtpproxy.html#event_E_RTPPROXY_DTMF_EVENT|E_RTPPROXY_DTMF_EVENT]].
to:
* Add support for intercepting RFC 22833/4733 DTMF events and trigger them in OpenSIPS using the new [[https://opensips.org/html/docs/modules/3.2.x/rtpproxy.html#event_E_RTPPROXY_DTMF_EVENT|E_RTPPROXY_DTMF_EVENT]]. This feature is currently available in the RTPProxy [[https://github.com/sippy/rtpproxy/tree/rtpp_2_1_dtmf|rtpp_2_1_dtmf]] branch.
* Provide means to specify a custom notification socket for RTPProxy by adding it as a parameter to the @@n@@ flag. Find more information in the [[https://opensips.org/html/docs/modules/3.2.x/rtpproxy.html#func_rtpproxy_engage|rtpproxy_engage]] documentation.
December 03, 2019, at 09:46 AM by razvancrainea -
Changed lines 35-38 from:
* support for non-digit characters in routing prefixes was added. The new modparam [[https://opensips.org/html/docs/modules/3.2.x/drouting.html#param_extra_prefix_char|extra_prefix_chars]] allows the definition of a list of such extra non-digit chars.
to:
* support for non-digit characters in routing prefixes was added. The new modparam [[https://opensips.org/html/docs/modules/3.2.x/drouting.html#param_extra_prefix_char|extra_prefix_chars]] allows the definition of a list of such extra non-digit chars.

!!!! RTPProxy module
* Add support for intercepting RFC 22833/4733 DTMF events and trigger them in OpenSIPS using the new [[https://opensips.org/html/docs/modules/3.2.x/rtpproxy.html#event_E_RTPPROXY_DTMF_EVENT|E_RTPPROXY_DTMF_EVENT]].
November 14, 2019, at 03:09 PM by 109.99.227.30 -
Added lines 22-23:

* '''auto_aliases''' parameter's default value was changed to off/no/0.
October 04, 2019, at 05:25 PM by razvancrainea -
Added lines 26-29:

!!!! OpenSIPS core MI functions

* you can now raise an event using the [[https://www.opensips.org/Documentation/Interface-CoreMI-3-2#toc20|raise_event]] core MI function.
September 19, 2019, at 02:45 PM by 109.99.227.30 -
Changed line 29 from:
* support for non-digit characters in routing prefixes was added. The new modparam '''extra_prefix_chars''' allows the definition of a list of such extra non-digit chars.
to:
* support for non-digit characters in routing prefixes was added. The new modparam [[https://opensips.org/html/docs/modules/3.2.x/drouting.html#param_extra_prefix_char|extra_prefix_chars]] allows the definition of a list of such extra non-digit chars.
September 19, 2019, at 02:44 PM by 109.99.227.30 -
Changed lines 25-29 from:
* core functions now benefit from the same function parameter interface introduced in OpenSIPS 3.0 for module functions. See the function calling conventions [[https://www.opensips.org/Documentation/Script-Syntax-3-2#function-calling-conventions|here]].
to:
* core functions now benefit from the same function parameter interface introduced in OpenSIPS 3.0 for module functions. See the function calling conventions [[https://www.opensips.org/Documentation/Script-Syntax-3-2#function-calling-conventions|here]].


!!!! Dynamic Routing module
* support for non-digit characters in routing prefixes was added. The new modparam '''extra_prefix_chars''' allows the definition of a list of such extra non-digit chars.
August 08, 2019, at 06:25 PM by rvlad_patrascu -
Changed line 8 from:
!!! Migration from 3.0.x to 3.2.0
to:
!!! [[Documentation/Migration-3-0-0-to-3-2-0|Migration from 3.0.x to 3.2.0]]
August 08, 2019, at 06:19 PM by rvlad_patrascu -
Added lines 23-25:
!!!! OpenSIPS core

* core functions now benefit from the same function parameter interface introduced in OpenSIPS 3.0 for module functions. See the function calling conventions [[https://www.opensips.org/Documentation/Script-Syntax-3-2#function-calling-conventions|here]].
July 27, 2019, at 12:56 PM by liviu -
Changed line 17 from:
* simplified iteration: the '''break''' keyword now fully works with the '''switch''', '''while''' and '''for-each''' statements
to:
* the '''break''' keyword now fully works with the '''switch''', '''while''' and '''for-each''' statements
July 27, 2019, at 01:58 AM by liviu -
Changed line 17 from:
* simplified iteration: the '''break''' keyword now fully works with the ''switch'', ''while'' and ''for-each'' statements
to:
* simplified iteration: the '''break''' keyword now fully works with the '''switch''', '''while''' and '''for-each''' statements
July 27, 2019, at 01:58 AM by liviu -
Changed lines 8-9 from:
!!! Migration from 3.0.x to 3.2.0]]
to:
!!! Migration from 3.0.x to 3.2.0
Added line 17:
* simplified iteration: the '''break''' keyword now fully works with the ''switch'', ''while'' and ''for-each'' statements
June 28, 2019, at 05:15 PM by 109.99.227.30 -
Changed lines 18-21 from:
* added new string transformation [[https://www.opensips.org/Documentation/Script-Tran-3-2#ip.isprivate|{isprivate}]] to test if an IP address (as string) is a private or not
to:
* added new IP transformation [[https://www.opensips.org/Documentation/Script-Tran-3-2#ip.isprivate|{isprivate}]] to test if an IP address (as string) is a private or not

* added new IP transformations [[https://www.opensips.org/Documentation/Script-Tran-3-2#ip.isip4|{isip4}]] and [[https://www.opensips.org/Documentation/Script-Tran-3-2#ip.isip6|{isip6}]] to test if an IP address (as string) is an IPv4 or IPv6 address
June 28, 2019, at 05:11 PM by 109.99.227.30 -
Added lines 6-18:


!!! Migration from 3.0.x to 3.2.0]]

----

!!! What is new in 3.2.0


!!!! OpenSIPS script


* added new string transformation [[https://www.opensips.org/Documentation/Script-Tran-3-2#ip.isprivate|{isprivate}]] to test if an IP address (as string) is a private or not
April 16, 2019, at 10:26 PM by 109.99.227.30 -
Deleted lines 5-185:


Get familiar with the philosophy behind this release by reading the [[http://www.opensips.org/About/Version-Overview-3-2-0 | OpenSIPS 3.2 Overview ]].


!!! [[Documentation/Migration-2-4-0-to-3-2-0|Migration from 2.4.x to 3.2.0]]

----

!!! What is new in 3.2.0

!!!! OpenSIPS script

* new core pseudo-variable '''$hdr_name''' (details [[ http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc95 | here ]]) that returns the name of a SIP header at a given index.

* new SDP transformation '''{sdp.stream,media}''' which returns a specific stream from an SDP body. Read more [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc81 | here ]].

* new SDP transformation '''{sdp.stream-delete,media}''' used to delete a stream based on its index or media type. Read more [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc80 | here ]].

* global parameter ''xlog_default_level''' was renamed as '''xlog_print_level'''

* added new global parameter '''xlog_level''' - similar to '''log_level''' but independently controls the verbosity of the xlog() functions.

* added new script variable '''$xlog_level''' to set/reset per process bases the value of the xlog'ing threshold.

* added new string transformation '''{s.reverse}''' to reverse a string

* added new IP transformation '''{ip.matches,ip/masklen}''' for checking IPs against network masks (in short format).

!!!! OpenSIPS core

* added '''xlog_level''' MI command added to set/reset the global value for the xlog'ing threshold.

* added '''restart_persistency_cache_file''' and '''restart_persistency_size''' parameters that control the restart persistence mechanism.


!!!! Routing Script Re-load

OpenSIPS 3.2 exposes the valuable ability of reloading the routes (not the module configuration) during runtime, with zero penalties and with zero loses as traffic.
See the documentation of the [[https://www.opensips.org/Documentation/Interface-CoreMI-3-2#toc8|MI "reload_routes" function]].

!!!! Processes Auto-Scaling Support

This is the ability of OpenSIPS to scale up and down the number of processes at runtime. Basically OpenSIPS is able to automatically scale up (by forking new processes) according to the volume of traffic, or to scale down (terminating some worker processes) if the internal load is low. This means you do not have to worry if your estimation on the number for worker processes is correct or not (will my OpenSIPS hold to the traffic??) or to worry about planning restarts during the night (to manually resize the number of processes).\\
Read a full description of this feature [[https://blog.opensips.org/2019/02/25/auto-process-scaling-a-cure-for-load-and-resources-concerns/|here]].


!!!! Generic Preprocessor Support

This feature adds full built-in pre-processing support for the OpenSIPS script. OpenSIPS 3.2 integrates various existing pre-processors within OpenSIPS. This simplify the scripting itself, the script portability across multiple servers and not to mention the entire deployment process of more complex platforms (where OpenSIPS is just a part of it). Even more, you will be able to use your preferred pre-processor and align OpenSIPS with the rest of your system (M4, Jinja, Embedded Ruby or others).\\
Read a full description of this feature [[https://blog.opensips.org/2019/03/05/generic-preprocessor-support-in-opensips-3-2/|here]].

!!!! New OpenSIPS CLI (Command Line Interface) tool

Starting with OpenSIPS 3.2, the old ''opensipsctl'' tool becomes deprecated (as functionality and as software) and it is replaced by the new ''opensips-cli'' - a powerful Python3 application that allows you to interact in a smart way with OpenSIPS, to invoke advanced tools such as [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/diagnose.md|diagnose]] or [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/tracer.md|tracer]], as well as to perform DB provisioning.
Read a full description of ''opensips-cli'' [[https://blog.opensips.org/2019/03/13/new-opensips-cli-tool-for-the-new-management-interface-in-opensips-3-2/|here]].

!!!! Selectable Memory Allocator Support

This feature allows the internal memory manager to be selected at startup time. In OpenSIPS 3.2, the memory manager selection becomes a startup option, via command line arguments, allowing you to change it without any need to recompile or redeploy.
Read a full description of this feature [[https://blog.opensips.org/2019/03/21/containing-memory-related-issues-in-an-easy-way-with-opensips-3-2/|here]].

!!!! Internal Memory Persistence during Restart

As there are several modules caching (in OpenSIPS internal memory, not in external no-sql cachers) large chunks of data, like Dynamic Routing, Dialplan, Dispatcher or Permissions, OpenSIPS 3.2 is able to avoid the date loading and caching penalty during a restart - this segments of the internal memory do "survive" during the restart. This dramatically reduces the time to restart of the entire service. \\
Read a full description of this feature [[https://blog.opensips.org/2019/04/04/no-downtime-for-opensips-3-2-restarts/|here]].

!!!! MI Interaction Standardization
An extensive rework of the Management Interface in an attempt to standardize and speed up development of external applications which need to interact with OpenSIPS. The custom, JSON-based HTTP calls of OpenSIPS 2.X are now replaced with the JSON-RPC version 2 standard. The custom, line-oriented syntax was completely dropped. XMLRPC and mi_html (former mi_http) were kept backwards-compatible. Read a detailed description of the new interactions [[https://www.opensips.org/Documentation/Interface-MI-3-2#protocols|here]]

!!!! Module Functions Now Benefit From a New Parameter Interface
As a response to frequent mailing list complaints of wildly varying behaviors across different module functions (e.g. some accept integers/strings as inputs while others accept both integers/strings or variables holding such values), we've introduced an abstract layer which handles the parameter passing task for all module functions, effectively making all of them more powerful by globally allowing flexible input. An added benefit is that new OpenSIPS modules are now even faster to develop. See the new function calling conventions [[https://www.opensips.org/Documentation/Script-Syntax-3-2#function-calling-conventions|here]].

!!!! SMPP module (NEW)

OpenSIPS 3.2 provides a [[https://opensips.org/html/docs/modules/3.2.x/proto_smpp.html|new SMPP module]] that allows you to do bidirectional gatewaying between SIP and SMPP traffic - this is a powerful but flexible way to integrate with most of the SMS providers / gateways.
Read a full description of this feature [[https://blog.opensips.org/2019/01/24/gateway-between-sip-and-smpp-messages/|here]].

!!!! RABBITMQ_CONSUMER (NEW)
A new [[https://opensips.org/html/docs/modules/3.2.x/rabbitmq_consumer.html|RabbitMQ consumer module]] which manages connections with one or more brokers, subscribes for events and exports them at OpenSIPS script level via the event interface.

!!!! TLS_MGM module

* The mechanism for matching an incoming/outgoing TLS connection with a virtual TLS domain(both server and client) is now more flexible and relies on two new DB columns/module parameters: ''match_ip_address'' and ''match_ip_address''.

* Added TLS SNI(Server Name Indication) support for matching TLS server domains.

* Added '''[[http://www.opensips.org/html/docs/modules/3.2.x/tls_mgm.html#param_match_ip_address|match_ip_address]]''' and '''[[http://www.opensips.org/html/docs/modules/3.2.x/tls_mgm.html#param_match_sip_domain|match_sip_domain]]''' module parameters which accept a list of IP:port address and respectively, a list of FQDNs, that are used in the TLS domain matching process.

* Added '''[[http://www.opensips.org/html/docs/modules/3.2.x/tls_mgm.html#param_client_sip_domain_avp|client_sip_domain_avp]]''' module parameter that the defines the AVP to use in the TLS client domain matching process.


!!!! AUTH_AAA module
* functions '''aaa_does_uri_exist()''' and '''aaa_does_uri_user_exist()''' imported from the old URI module.

!!!! AUTH_DB module
* functions '''db_does_uri_exist()''', '''db_is_to_authorized()''', '''db_is_from_authorized()''' and '''db_get_auth_id()''' imported from the URI module

!!!! AVPOPS module
* '''avp_insert()''' was dropped in favour of the equivalent, already existing syntax: '''$(avp(foo)[append]) = "bar";''' (for appending to end-of-list) and '''$(avp(foo)[3]) = "bar";''' (for writing at a specific AVP index)

!!!! CACHEDB_LOCAL module
* Added [[http://www.opensips.org/html/docs/modules/3.2.x/cachedb_local.html#clustering|data replication]] capability (for the cached data) via the clusterer engine
* Added new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/cachedb_local.html#param_cluster_id|cluster_id]] and [[http://www.opensips.org/html/docs/modules/3.2.x/cachedb_local.html#param_cluster_persistency|cluster_persistency]] for controlling the data clustering.

!!!! CLUSTERER module
* the module provides now an unified sharing tag support - it is the only one responsible for managing the sharing tags (definitions, cluster ops, etc). The other module that needs to check the sharing tags can do it via the clusterer API. The sharing tag managing from presence and dialog modules was removed.
** added the '''[[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#param_sharing_tag|sharing_tag]]''' module parameter for sharing tag definition.
** added '''[[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#mi_clusterer_list_shtags|clusterer_list_shtags]]''' for listing all know tags (and their state)
** added '''[[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#mi_clusterer_shtag_set_active|clusterer_shtag_set_active]]''' for switching a tag to active
** new script variable '''[[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#var_cluster_sh_tag|$cluster.sh_tag(tag/cluster_id)]]''' is now available at script level for read/write operations over the sharing tags

!!!! DB_MYSQL module
* New module parameter: '''[[http://www.opensips.org/html/docs/modules/3.2.x/db_mysql.html#param_use_tls|use_tls]]''' that allows the use of TLS for MySQL connections.
* In order to enable TLS for a specific MySQL connection the syntax for DB URLs now supports the ''tls_domain=dom_name'' parameter.


!!!! DB_POSTGRES module
* New module parameter: '''[[http://www.opensips.org/html/docs/modules/3.2.x/db_postgres.html#param_timeout|timeout]]''' that allows configuration of a timeout threshold for the PostgreSQL connections.
* async support for running raw postgres queries from script level via avp_db_query()

!!!! DIALOG module
* The sharing tag management was moved into the clusterer module:
** removed the module parameter '''dlg_sharing_tag''' (provided now by clusterer module)
** removed the MI commands '''dlg_set_sharing_tag_active''' and '''dlg_list_sharing_tags''' (provided now by clusterer module)
* the default value of [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#param_dlg_match_mode|dlg_match_mode]] has been switched from DID_ONLY to DID_FALLBACK.
* full control over CANCEL/200 OK race conditions via the new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#race_condition_timeout|race_condition_timeout]] modparam and '''"E"''' flag of [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_create_dialog|create_dialog()]]

!!!! DISPATCHER module
* Added clustering support for deciding (based on sharing tags) which is the node to perform the pinging and for replicating the changes of the destinations:
** added the new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/dispatcher.html#param_cluster_id|cluster_id]]
** added the new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/dispatcher.html#param_cluster_sharing_tag|cluster_sharing_tag]] to define which is the sharing tag governing the actions taken by the module (like pinging gateways or replicating the status of the gateways)

!!!! DROUTING module
* New module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#param_probing_socket|probing_socket]] to globally force a specific socket/listener for sending the SIP probing to the gateways.
* enhanced the clustering support in the module:
** module parameter '''status_replication_cluster''' replaced with [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#param_cluster_id|cluster_id]] with the same meaning
** added the new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#param_cluster_sharing_tag|cluster_sharing_tag]] to define which is the sharing tag governing the actions taken by the module (like pinging gateways or replicating the status of the gateways)
* added support for restart persistency memory to cache data duriing restart. This can be enabled using the [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#param_enable_restart_persistency|enable_restart_persistency]] parameter.

!!!! EVENT_FLATSTORE module
* A new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/event_flatstore.html#param_suppress_event_name|suppress_event_name]] was added to configure whether the event's name should be dumped in the file or not.

!!!! EVENT_ROUTING module
* the '''notify_on_event''' and '''wait_for_event''' functions accept variables for the timeout parameter.

!!!! LOAD_BALANCER module
* enhanced the clustering support in the module:
** module parameter '''status_replication_cluster''' replaced with [[http://www.opensips.org/html/docs/modules/3.2.x/load_balancer.html#param_cluster_id|cluster_id]] with the same meaning
** added the new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/load_balancer.html#param_cluster_sharing_tag|cluster_sharing_tag]] to define which is the sharing tag governing the actions taken by the module (like pinging destinations or replicating the status of the destinations)

!!!! NAT_TRAVERSAL module
* Added clustering support for controlling which is the node responsible for pinging inside a cluster (via sharing tags). New module parameters [[http://www.opensips.org/html/docs/modules/3.2.x/nat_traversal.html#param_cluster_id|cluster_id]] and [[http://www.opensips.org/html/docs/modules/3.2.x/nat_traversal.html#param_cluster_sharing_tag|cluster_sharing_tag]] were added.

!!!! NATHELPER module
* Added clustering support for controlling which is the node responsible for pinging inside a cluster (via sharing tags). New module parameters [[http://www.opensips.org/html/docs/modules/3.2.x/nathelper.html#param_cluster_id|cluster_id]] and [[http://www.opensips.org/html/docs/modules/3.2.x/nathelper.html#param_cluster_sharing_tag|cluster_sharing_tag]] were added.

!!!! PRESENCE module
* The sharing tag management was moved into the clusterer module:
** removed the module parameter '''cluster_sharing_tags''' (provided now by clusterer module)
** removed the MI commands '''pres_set_sharing_tag_active''' and '''pres_list_sharing_tags''' (provided now by clusterer module)

!!!! RTPPROXY module
* The [[https://opensips.org/html/docs/modules/3.2.x/rtpproxy.html#param_rtpproxy_sock|'''rtpproxy_sock''']] parameter, as well as DB entries, now support an extra IP that will be used instead of the one indicated by RTPProxy. This is useful in NATTed environments where RTPProxy listens on a private IP, but you need to advertise a public IP.

!!!! RTPENGINE module
* '''rtpengine_offer()''', '''rtpengine_answer()''', '''rtpengine_manage()''' now can receive the SDP body to send to rtpengine as a parameter. This is useful when you want to manipulate the SDP body sent to RTPengine (i.e. to remove, or add additional streams).

!!!! SIPMSGOPS module
* functions '''has_totag()''', '''ruri_has_param()''', '''ruri_has_param()''', '''ruri_del_param()''', '''ruri_tel2sip()''', '''is_uri_user_e164()''' imported from the URI module.
* '''remove_hf()''' was split into '''remove_hf()''', '''remove_hf_re()''' and '''remove_hf_glob()'''. As a result, the "flags" parameter was dropped.

!!!! URI module (removed)
* function '''is_user()''' obsoleted as it can simply and more flexible be replaced with '''$au==$var(username)'''
* functions '''has_totag()''', '''uri_param()''', '''add_uri_param()''', '''del_uri_param()''', '''tel2sip()''', '''is_uri_user_e164()''' moved into the SIPMSGOPS module. Note that their names were slightly changes for a better understanding.
* functions '''db_check_to()''', '''db_check_from()''', '''db_does_uri_exist()''', '''db_get_auth_id()''' and all DB related module parameters moved to the AUTH_DB modules. Note that their names or prototypes may have been changed for a better integration.
* functions '''aaa_does_uri_exist()''' and '''aaa_does_uri_user_exist()''' moved into the AUTH_AAA module.

!!!! USRLOC module
* the '''shared_pinging''' module parameter has been obsoleted in favour of the [[https://opensips.org/html/docs/modules/3.2.x/usrloc.html#param_pinging_mode|pinging_mode]], which more accurately describes/explains the different pinging heuristics of the module.
----
April 16, 2019, at 09:53 PM by 109.99.227.30 -
Changed line 8 from:
Get familiar with the philosophy behind this release by reading the [[http://www.opensips.org/Development/Opensips-3-2-Planning | OpenSIPS 3.2 Overview ]].
to:
Get familiar with the philosophy behind this release by reading the [[http://www.opensips.org/About/Version-Overview-3-2-0 | OpenSIPS 3.2 Overview ]].
April 16, 2019, at 09:23 PM by liviu -
Changed line 77 from:
As a response to frequent mailing list complaints of wildly varying behaviors across different module functions (e.g. some accept integers/strings as inputs while others accept both integers/strings or variables holding such values), we've introduced an abstract layer which handles the parameter passing task for all module functions, effectively making all of them more powerful by allowing flexible input. An added benefit is that new OpenSIPS modules are now even faster to develop. See the new function calling conventions [[https://www.opensips.org/Documentation/Script-Syntax-3-2#function-calling-conventions|here]].
to:
As a response to frequent mailing list complaints of wildly varying behaviors across different module functions (e.g. some accept integers/strings as inputs while others accept both integers/strings or variables holding such values), we've introduced an abstract layer which handles the parameter passing task for all module functions, effectively making all of them more powerful by globally allowing flexible input. An added benefit is that new OpenSIPS modules are now even faster to develop. See the new function calling conventions [[https://www.opensips.org/Documentation/Script-Syntax-3-2#function-calling-conventions|here]].
April 16, 2019, at 09:22 PM by liviu -
Changed line 77 from:
As a response to frequent mailing list complaints of wildly varying behaviors across different module functions (e.g. some accept integers/strings as inputs while others accept integers/strings or variables holding such values), we've introduced an abstract layer which handles the parameter passing task for all module functions, effectively making all of them more powerful by allowing flexible input. An added benefit is that new OpenSIPS modules are now even faster to develop. See the new function calling conventions [[https://www.opensips.org/Documentation/Script-Syntax-3-2#function-calling-conventions|here]].
to:
As a response to frequent mailing list complaints of wildly varying behaviors across different module functions (e.g. some accept integers/strings as inputs while others accept both integers/strings or variables holding such values), we've introduced an abstract layer which handles the parameter passing task for all module functions, effectively making all of them more powerful by allowing flexible input. An added benefit is that new OpenSIPS modules are now even faster to develop. See the new function calling conventions [[https://www.opensips.org/Documentation/Script-Syntax-3-2#function-calling-conventions|here]].
April 16, 2019, at 09:21 PM by liviu -
Changed line 77 from:
As a response to frequent mailing list complaints of wildly varying behaviors across different module functions (e.g. some accept integers/strings as inputs while others accept integers/strings or variables holding such values), we've introduced an abstract layer which handles the parameter passing task for all module functions, effectively making all of them more powerful by allowing flexible input. See the new function calling conventions [[https://www.opensips.org/Documentation/Script-Syntax-3-2#function-calling-conventions|here]].
to:
As a response to frequent mailing list complaints of wildly varying behaviors across different module functions (e.g. some accept integers/strings as inputs while others accept integers/strings or variables holding such values), we've introduced an abstract layer which handles the parameter passing task for all module functions, effectively making all of them more powerful by allowing flexible input. An added benefit is that new OpenSIPS modules are now even faster to develop. See the new function calling conventions [[https://www.opensips.org/Documentation/Script-Syntax-3-2#function-calling-conventions|here]].
April 16, 2019, at 09:15 PM by liviu -
Changed line 74 from:
An extensive rework of the Management Interface in an attempt to standardize and speed up development of external applications which need to interact with OpenSIPS. The custom, JSON-based HTTP calls of OpenSIPS 2.X are now replaced with the JSON-RPC version 2 standard. The custom MI FIFO syntax was completely dropped. XMLRPC and mi_html (former mi_http) were kept backwards-compatible. Read a detailed description of the new interactions [[https://www.opensips.org/Documentation/Interface-MI-3-2#protocols|here]]
to:
An extensive rework of the Management Interface in an attempt to standardize and speed up development of external applications which need to interact with OpenSIPS. The custom, JSON-based HTTP calls of OpenSIPS 2.X are now replaced with the JSON-RPC version 2 standard. The custom, line-oriented syntax was completely dropped. XMLRPC and mi_html (former mi_http) were kept backwards-compatible. Read a detailed description of the new interactions [[https://www.opensips.org/Documentation/Interface-MI-3-2#protocols|here]]
April 16, 2019, at 09:14 PM by liviu -
Changed line 74 from:
An extensive rework of the Management Interface in an attempt to standardize and speed up development of external applications which need to interact with OpenSIPS. The custom, JSON-based HTTP calls are now replaced with the JSON-RPC version 2 standard. The custom MI FIFO syntax was completely dropped. XMLRPC and mi_html (former mi_http) were kept backwards-compatible. Read a detailed description of the new interactions [[https://www.opensips.org/Documentation/Interface-MI-3-2#protocols|here]]
to:
An extensive rework of the Management Interface in an attempt to standardize and speed up development of external applications which need to interact with OpenSIPS. The custom, JSON-based HTTP calls of OpenSIPS 2.X are now replaced with the JSON-RPC version 2 standard. The custom MI FIFO syntax was completely dropped. XMLRPC and mi_html (former mi_http) were kept backwards-compatible. Read a detailed description of the new interactions [[https://www.opensips.org/Documentation/Interface-MI-3-2#protocols|here]]
April 16, 2019, at 09:13 PM by liviu -
Added lines 73-77:
!!!! MI Interaction Standardization
An extensive rework of the Management Interface in an attempt to standardize and speed up development of external applications which need to interact with OpenSIPS. The custom, JSON-based HTTP calls are now replaced with the JSON-RPC version 2 standard. The custom MI FIFO syntax was completely dropped. XMLRPC and mi_html (former mi_http) were kept backwards-compatible. Read a detailed description of the new interactions [[https://www.opensips.org/Documentation/Interface-MI-3-2#protocols|here]]

!!!! Module Functions Now Benefit From a New Parameter Interface
As a response to frequent mailing list complaints of wildly varying behaviors across different module functions (e.g. some accept integers/strings as inputs while others accept integers/strings or variables holding such values), we've introduced an abstract layer which handles the parameter passing task for all module functions, effectively making all of them more powerful by allowing flexible input. See the new function calling conventions [[https://www.opensips.org/Documentation/Script-Syntax-3-2#function-calling-conventions|here]].
April 16, 2019, at 08:58 PM by liviu -
Changed line 65 from:
This feature allows the selection of the memory manager to be used at startup time. In OpenSIPS 3.2, the memory manager selection is a startup option, via command line arguments, allowing you to change it without any need to recompile or redeploy.
to:
This feature allows the internal memory manager to be selected at startup time. In OpenSIPS 3.2, the memory manager selection becomes a startup option, via command line arguments, allowing you to change it without any need to recompile or redeploy.
April 16, 2019, at 08:57 PM by liviu -
Deleted line 62:
Changed lines 65-66 from:
This feature allows thes election of the memory manager to use at the startup time. In OpenSIPS 3.2, the memory manager selection is a startup option, via command line arguments, allowing you to change it with any need to recompile / redeploy.
Embedded Ruby or others).\\
to:
This feature allows the selection of the memory manager to be used at startup time. In OpenSIPS 3.2, the memory manager selection is a startup option, via command line arguments, allowing you to change it without any need to recompile or redeploy.
Changed line 70 from:
As there are several modules caching (in OpenSIPS internal memory, not in external no-sql cachers) large chunks of data, like Dynamic Routing, Dialplan, Dispatcher or Permissions, OpenSIPS 3.2 is able to avoid the date loading and caching penalty during a restart - OpenSIPS 3.2 is able to ensure that segments of the internal memory do "survive" during the restart. This dramatically reduces the time to restart of the entire service. \\
to:
As there are several modules caching (in OpenSIPS internal memory, not in external no-sql cachers) large chunks of data, like Dynamic Routing, Dialplan, Dispatcher or Permissions, OpenSIPS 3.2 is able to avoid the date loading and caching penalty during a restart - this segments of the internal memory do "survive" during the restart. This dramatically reduces the time to restart of the entire service. \\
Added lines 79-80:
!!!! RABBITMQ_CONSUMER (NEW)
A new [[https://opensips.org/html/docs/modules/3.2.x/rabbitmq_consumer.html|RabbitMQ consumer module]] which manages connections with one or more brokers, subscribes for events and exports them at OpenSIPS script level via the event interface.
April 16, 2019, at 08:44 PM by liviu -
Changed lines 60-61 from:
Starting with OpenSIPS 3.2, the old "opensipsctl" tool becomes deprecated (as functionality and as software) and it is replaced by the new ''"opensips-cli"'' tool - a powerful Python3 application that allows you to interact in a smart way with OpenSIPS, to run advanced tools such as [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/diagnose.md|diagnose]] or [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/tracer.md|tracer]] and to do DB provisioning.
Read a full description of ''"opensips-cli"'' [[https://blog.opensips.org/2019/03/13/new-opensips-cli-tool-for-the-new-management-interface-in-opensips-3-2/|here]].
to:
Starting with OpenSIPS 3.2, the old ''opensipsctl'' tool becomes deprecated (as functionality and as software) and it is replaced by the new ''opensips-cli'' - a powerful Python3 application that allows you to interact in a smart way with OpenSIPS, to invoke advanced tools such as [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/diagnose.md|diagnose]] or [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/tracer.md|tracer]], as well as to perform DB provisioning.
Read a full description of ''opensips-cli'' [[https://blog.opensips.org/2019/03/13/new-opensips-cli-tool-for-the-new-management-interface-in-opensips-3-2/|here]].
April 16, 2019, at 08:42 PM by liviu -
Changed lines 60-61 from:
Starting with OpenSIPS 3.2, the old "opensipsctl" tool becomes deprecated (as functionality and as software) and it is replaced by the new ''opensips-cli'' tool - a powerful Python3 application that allows you to interact in a smart way with OpenSIPS, to run advanced tools such as [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/diagnose.md|diagnose]] or [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/tracer.md|tracer]] and to do DB provisioning.
Read a full description of the "opensips-cli" [[https://blog.opensips.org/2019/03/13/new-opensips-cli-tool-for-the-new-management-interface-in-opensips-3-2/|here]].
to:
Starting with OpenSIPS 3.2, the old "opensipsctl" tool becomes deprecated (as functionality and as software) and it is replaced by the new ''"opensips-cli"'' tool - a powerful Python3 application that allows you to interact in a smart way with OpenSIPS, to run advanced tools such as [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/diagnose.md|diagnose]] or [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/tracer.md|tracer]] and to do DB provisioning.
Read a full description of ''"opensips-cli"'' [[https://blog.opensips.org/2019/03/13/new-opensips-cli-tool-for-the-new-management-interface-in-opensips-3-2/|here]].
April 16, 2019, at 08:42 PM by liviu -
Changed line 60 from:
Starting with OpenSIPS 3.2, the old "opensipsctl" tool becomes deprecated (as functionality and as software) and it is replaced by the new ''opensips-cli'' tool - a powerful Python3 application that allows you to interact in a smart way with OpenSIPS, to run advanced tools like [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/diagnose.md|diagnose]] or [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/tracer.md|tracer]] and to do DB provisioning.
to:
Starting with OpenSIPS 3.2, the old "opensipsctl" tool becomes deprecated (as functionality and as software) and it is replaced by the new ''opensips-cli'' tool - a powerful Python3 application that allows you to interact in a smart way with OpenSIPS, to run advanced tools such as [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/diagnose.md|diagnose]] or [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/tracer.md|tracer]] and to do DB provisioning.
April 16, 2019, at 08:41 PM by liviu -
Changed line 60 from:
Starting with OpenSIPS 3.2, the old "opensipsctl" tool becomes deprecated (as functionality and as software) and it is replaced by the new 'opensips-cli' tool - a powerful python application that allows you to interact in a smart way with OpenSIPS, to run advanced tools like the Diagnoses or the Tracing tools and to do DB provisioning.
to:
Starting with OpenSIPS 3.2, the old "opensipsctl" tool becomes deprecated (as functionality and as software) and it is replaced by the new ''opensips-cli'' tool - a powerful Python3 application that allows you to interact in a smart way with OpenSIPS, to run advanced tools like [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/diagnose.md|diagnose]] or [[https://github.com/OpenSIPS/opensips-cli/blob/master/docs/modules/tracer.md|tracer]] and to do DB provisioning.
April 16, 2019, at 08:03 PM by liviu -
Deleted lines 128-132:
!!!! DIALPLAN module
* '''[[https://opensips.org/html/docs/modules/3.2.x/dialplan.html#func_dp_translate|dp_translate()]]''' parameters have been reworked to be more clear:
** the composite "partition:id" parameter was split into "id" (mandatory) and "partition" (optional)
** the composite "src/dest" parameter was split into "input" (mandatory) and "out_var" (optional)
Changed lines 133-140 from:
* '''[[https://opensips.org/html/docs/modules/3.2.x/dispatcher.html#func_ds_select_dst|ds_select_dst()]]''' parameters have been reworked to be easier to understand and maintain. Specifically:
** the "s" (skip destination) flag was dropped (equivalent logic: "$du == NULL && ds_select_dst()")
** the "a" (append destination) flag was added, replacing all the complex set / algorithm / flags list-parameter logic in favour of simply calling ds_select_dst() multiple times.
** the "set" composite parameter was decoupled into two basic parameters: "set" (mandatory) and "partition" (optional)
* '''[[https://opensips.org/html/docs/modules/3.2.x/dispatcher.html#func_ds_select_domain|ds_select_domain()]]''' parameters have been reworked to be easier to understand and maintain. The changes follow the same pattern as ds_select_dst().
* '''[[https://opensips.org/html/docs/modules/3.2.x/dispatcher.html#func_ds_count|ds_count()]]''''s complex "set" parameter has been split in two simple parameters: "set" (mandatory) and "partition" (optional).
* '''[[https://opensips.org/html/docs/modules/3.2.x/dispatcher.html#func_ds_is_in_list|ds_is_in_list()]]''''s complex "set" parameter has been split in two simple parameters: "set" (mandatory) and "partition" (optional).
to:
Changed lines 140-147 from:
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_do_routing|do_routing()]]''''s composite "[partition:]group_id" parameter has been split in two parameters: "group_id" (mandatory) and "partition" (optional)
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_route_to_carrier|route_to_carrier()]]''''s composite "[partition:]carrier_id" parameter has been split in two parameters: "carriers" (mandatory) and "partition" (optional)
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_route_to_gw|route_to_gw()]]''''s composite "[partition:]gw_id" parameter has been split in two parameters: "gw_id" CSV (mandatory) and "partition" (optional)
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_use_next_gw|use_next_gw()]]''''s parameter order has been changed for consistency reasons ("partition" is last now)
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_goes_to_gw|goes_to_gw()]]''''s parameter order has been changed for consistency reasons ("partition" is last now)
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_is_from_gw|is_from_gw()]]''''s parameter order has been changed for consistency reasons ("partition" is last now)
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_dr_is_gw|dr_is_gw()]]''''s parameter order has been changed for consistency reasons ("partition" is last now)
to:
Deleted lines 157-161:
!!!! PERMISSIONS module
* '''[[https://opensips.org/html/docs/modules/3.2.x/permissions.html#func_check_address|check_address()]]''''s composite "[partition:]group_id" parameter has been split in two parameters: "group_id" (mandatory) and "partition" (optional)
* '''[[https://opensips.org/html/docs/modules/3.2.x/permissions.html#func_check_source_address|check_source_address()]]''''s composite "[partition:]group_id" parameter has been split in two parameters: "group_id" (mandatory) and "partition" (optional)
* '''[[https://opensips.org/html/docs/modules/3.2.x/permissions.html#func_get_source_group|get_source_group()]]''''s composite "[partition:]var" parameter has been split in two parameters: "var" (mandatory) and "partition" (optional)
Deleted lines 168-172:
!!!! SIPCAPTURE module
* '''[[https://opensips.org/html/docs/modules/3.2.x/sipcapture.html#func_report_capture|report_capture()]]''' parameter order has changed
* '''[[https://opensips.org/html/docs/modules/3.2.x/sipcapture.html#func_hep_set|hep_set()]]''' parameter order has changed
* '''[[https://opensips.org/html/docs/modules/3.2.x/sipcapture.html#func_hep_get|hep_get()]]''' parameter order has changed
Deleted lines 171-173:

!!!! UAC_REDIRECT module
* '''[[https://opensips.org/html/docs/modules/3.2.x/uac_redirect.html#func_get_redirects|get_redirects()]]''' -> the deprecated "reason" parameter, along with the accounting logic behind it have been completely dropped
April 16, 2019, at 07:54 PM by 109.99.227.30 -
Changed line 45 from:
See the documentation of the [[https://www.opensips.org/Documentation/Interface-CoreMI-3-2#toc8|MI "reload_script" function]].
to:
See the documentation of the [[https://www.opensips.org/Documentation/Interface-CoreMI-3-2#toc8|MI "reload_routes" function]].
April 16, 2019, at 07:39 PM by 109.99.227.30 -
Changed lines 42-46 from:
to:
!!!! Routing Script Re-load

OpenSIPS 3.2 exposes the valuable ability of reloading the routes (not the module configuration) during runtime, with zero penalties and with zero loses as traffic.
See the documentation of the [[https://www.opensips.org/Documentation/Interface-CoreMI-3-2#toc8|MI "reload_script" function]].
Changed lines 61-63 from:
Read a full description of the "opensips-cli" [[https://blog.opensips.org/2019/03/13/new-opensips-cli-tool-for-the-new-management-interface-in-opensips-3-2/|here].

to:
Read a full description of the "opensips-cli" [[https://blog.opensips.org/2019/03/13/new-opensips-cli-tool-for-the-new-management-interface-in-opensips-3-2/|here]].

Added lines 69-74:

!!!! Internal Memory Persistence during Restart

As there are several modules caching (in OpenSIPS internal memory, not in external no-sql cachers) large chunks of data, like Dynamic Routing, Dialplan, Dispatcher or Permissions, OpenSIPS 3.2 is able to avoid the date loading and caching penalty during a restart - OpenSIPS 3.2 is able to ensure that segments of the internal memory do "survive" during the restart. This dramatically reduces the time to restart of the entire service. \\
Read a full description of this feature [[https://blog.opensips.org/2019/04/04/no-downtime-for-opensips-3-2-restarts/|here]].
April 16, 2019, at 07:23 PM by 109.99.227.30 -
Changed lines 54-59 from:
to:
!!!! New OpenSIPS CLI (Command Line Interface) tool

Starting with OpenSIPS 3.2, the old "opensipsctl" tool becomes deprecated (as functionality and as software) and it is replaced by the new 'opensips-cli' tool - a powerful python application that allows you to interact in a smart way with OpenSIPS, to run advanced tools like the Diagnoses or the Tracing tools and to do DB provisioning.
Read a full description of the "opensips-cli" [[https://blog.opensips.org/2019/03/13/new-opensips-cli-tool-for-the-new-management-interface-in-opensips-3-2/|here].

Changed lines 62-70 from:
TODO
to:
This feature allows thes election of the memory manager to use at the startup time. In OpenSIPS 3.2, the memory manager selection is a startup option, via command line arguments, allowing you to change it with any need to recompile / redeploy.
Embedded Ruby or others).\\
Read a full description of this feature [[https://blog.opensips.org/2019/03/21/containing-memory-related-issues-in-an-easy-way-with-opensips-3-2/|here]].

!!!! SMPP module (NEW)

OpenSIPS 3.2 provides a [[https://opensips.org/html/docs/modules/3.2.x/proto_smpp.html|new SMPP module]] that allows you to do bidirectional gatewaying between SIP and SMPP traffic - this is a powerful but flexible way to integrate with most of the SMS providers / gateways.
Read a full description of this feature [[https://blog.opensips.org/2019/01/24/gateway-between-sip-and-smpp-messages/|here]].
April 16, 2019, at 07:13 PM by 109.99.227.30 -
Changed lines 45-46 from:
TODO
to:
This is the ability of OpenSIPS to scale up and down the number of processes at runtime. Basically OpenSIPS is able to automatically scale up (by forking new processes) according to the volume of traffic, or to scale down (terminating some worker processes) if the internal load is low. This means you do not have to worry if your estimation on the number for worker processes is correct or not (will my OpenSIPS hold to the traffic??) or to worry about planning restarts during the night (to manually resize the number of processes).\\
Read a full description of this feature [[https://blog.opensips.org/2019/02/25/auto-process-scaling-a-cure-for-load-and-resources-concerns/|here]].

Changed lines 51-53 from:
TODO
to:
This feature adds full built-in pre-processing support for the OpenSIPS script. OpenSIPS 3.2 integrates various existing pre-processors within OpenSIPS. This simplify the scripting itself, the script portability across multiple servers and not to mention the entire deployment process of more complex platforms (where OpenSIPS is just a part of it). Even more, you will be able to use your preferred pre-processor and align OpenSIPS with the rest of your system (M4, Jinja, Embedded Ruby or others).\\
Read a full description of this feature [[https://blog.opensips.org/2019/03/05/generic-preprocessor-support-in-opensips-3-2/|here]].
April 16, 2019, at 05:53 PM by liviu -
Changed lines 102-106 from:
to:
!!!! DIALPLAN module
* '''[[https://opensips.org/html/docs/modules/3.2.x/dialplan.html#func_dp_translate|dp_translate()]]''' parameters have been reworked to be more clear:
** the composite "partition:id" parameter was split into "id" (mandatory) and "partition" (optional)
** the composite "src/dest" parameter was split into "input" (mandatory) and "out_var" (optional)
Changed lines 125-132 from:
to:
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_do_routing|do_routing()]]''''s composite "[partition:]group_id" parameter has been split in two parameters: "group_id" (mandatory) and "partition" (optional)
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_route_to_carrier|route_to_carrier()]]''''s composite "[partition:]carrier_id" parameter has been split in two parameters: "carriers" (mandatory) and "partition" (optional)
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_route_to_gw|route_to_gw()]]''''s composite "[partition:]gw_id" parameter has been split in two parameters: "gw_id" CSV (mandatory) and "partition" (optional)
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_use_next_gw|use_next_gw()]]''''s parameter order has been changed for consistency reasons ("partition" is last now)
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_goes_to_gw|goes_to_gw()]]''''s parameter order has been changed for consistency reasons ("partition" is last now)
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_is_from_gw|is_from_gw()]]''''s parameter order has been changed for consistency reasons ("partition" is last now)
* '''[[https://opensips.org/html/docs/modules/3.2.x/drouting.html#func_dr_is_gw|dr_is_gw()]]''''s parameter order has been changed for consistency reasons ("partition" is last now)
Added lines 149-153:

!!!! PERMISSIONS module
* '''[[https://opensips.org/html/docs/modules/3.2.x/permissions.html#func_check_address|check_address()]]''''s composite "[partition:]group_id" parameter has been split in two parameters: "group_id" (mandatory) and "partition" (optional)
* '''[[https://opensips.org/html/docs/modules/3.2.x/permissions.html#func_check_source_address|check_source_address()]]''''s composite "[partition:]group_id" parameter has been split in two parameters: "group_id" (mandatory) and "partition" (optional)
* '''[[https://opensips.org/html/docs/modules/3.2.x/permissions.html#func_get_source_group|get_source_group()]]''''s composite "[partition:]var" parameter has been split in two parameters: "var" (mandatory) and "partition" (optional)
April 16, 2019, at 04:56 PM by liviu -
Changed line 110 from:
** the setid and partition were decoupled into two separate parameters
to:
** the "set" composite parameter was decoupled into two basic parameters: "set" (mandatory) and "partition" (optional)
April 16, 2019, at 04:54 PM by liviu -
Changed lines 108-110 from:
* * the "s" (skip destination) flag was dropped (equivalent logic: "$du == NULL && ds_select_dst()")
* * the "a" (append destination) flag was added, replacing all the complex set / algorithm / flags list-parameter logic in favour of simply calling ds_select_dst() multiple times.
* * the setid and partition were decoupled into two separate parameters
to:
** the "s" (skip destination) flag was dropped (equivalent logic: "$du == NULL && ds_select_dst()")
** the "a" (append destination) flag was added, replacing all the complex set / algorithm / flags list-parameter logic in favour of simply calling ds_select_dst() multiple times.
** the setid and partition were decoupled into two separate parameters
April 16, 2019, at 04:53 PM by liviu -
Changed lines 8-10 from:
Get familiar with what is planned to bed done for this release by reading the [[http://www.opensips.org/Development/Opensips-3-2-Planning | OpenSIPS 3.2 Overview ]].

to:
Get familiar with the philosophy behind this release by reading the [[http://www.opensips.org/Development/Opensips-3-2-Planning | OpenSIPS 3.2 Overview ]].

Changed lines 73-74 from:
* '''avp_insert()''' was dropped in favour of the already existing '''$(avp(foo)[append]) = "bar";''' syntax
to:
* '''avp_insert()''' was dropped in favour of the equivalent, already existing syntax: '''$(avp(foo)[append]) = "bar";''' (for appending to end-of-list) and '''$(avp(foo)[3]) = "bar";''' (for writing at a specific AVP index)
Changed lines 107-114 from:
to:
* '''[[https://opensips.org/html/docs/modules/3.2.x/dispatcher.html#func_ds_select_dst|ds_select_dst()]]''' parameters have been reworked to be easier to understand and maintain. Specifically:
* * the "s" (skip destination) flag was dropped (equivalent logic: "$du == NULL && ds_select_dst()")
* * the "a" (append destination) flag was added, replacing all the complex set / algorithm / flags list-parameter logic in favour of simply calling ds_select_dst() multiple times.
* * the setid and partition were decoupled into two separate parameters
* '''[[https://opensips.org/html/docs/modules/3.2.x/dispatcher.html#func_ds_select_domain|ds_select_domain()]]''' parameters have been reworked to be easier to understand and maintain. The changes follow the same pattern as ds_select_dst().
* '''[[https://opensips.org/html/docs/modules/3.2.x/dispatcher.html#func_ds_count|ds_count()]]''''s complex "set" parameter has been split in two simple parameters: "set" (mandatory) and "partition" (optional).
* '''[[https://opensips.org/html/docs/modules/3.2.x/dispatcher.html#func_ds_is_in_list|ds_is_in_list()]]''''s complex "set" parameter has been split in two simple parameters: "set" (mandatory) and "partition" (optional).
Added lines 150-154:
!!!! SIPCAPTURE module
* '''[[https://opensips.org/html/docs/modules/3.2.x/sipcapture.html#func_report_capture|report_capture()]]''' parameter order has changed
* '''[[https://opensips.org/html/docs/modules/3.2.x/sipcapture.html#func_hep_set|hep_set()]]''' parameter order has changed
* '''[[https://opensips.org/html/docs/modules/3.2.x/sipcapture.html#func_hep_get|hep_get()]]''' parameter order has changed
Changed lines 157-160 from:
* '''remove_hf()''' was split into '''remove_hf()''', '''remove_hf_re()''' and '''remove_hf_glob()'''. The "flags" parameter was dropped.
to:
* '''remove_hf()''' was split into '''remove_hf()''', '''remove_hf_re()''' and '''remove_hf_glob()'''. As a result, the "flags" parameter was dropped.

!!!! UAC_REDIRECT module
* '''[[https://opensips.org/html/docs/modules/3.2.x/uac_redirect.html#func_get_redirects|get_redirects()]]''' -> the deprecated "reason" parameter, along with the accounting logic behind it have been completely dropped
April 08, 2019, at 05:27 PM by liviu -
Deleted line 68:
Added lines 72-74:
!!!! AVPOPS module
* '''avp_insert()''' was dropped in favour of the already existing '''$(avp(foo)[append]) = "bar";''' syntax
Added line 145:
* '''remove_hf()''' was split into '''remove_hf()''', '''remove_hf_re()''' and '''remove_hf_glob()'''. The "flags" parameter was dropped.
April 08, 2019, at 05:22 PM by liviu -
Added lines 48-51:

TODO

!!!! Selectable Memory Allocator Support
March 28, 2019, at 04:49 PM by razvancrainea -
Changed lines 39-40 from:

to:
* added '''restart_persistency_cache_file''' and '''restart_persistency_size''' parameters that control the restart persistence mechanism.


Added line 107:
* added support for restart persistency memory to cache data duriing restart. This can be enabled using the [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#param_enable_restart_persistency|enable_restart_persistency]] parameter.
March 18, 2019, at 06:45 PM by 109.99.227.30 -
Added lines 6-10:


Get familiar with what is planned to bed done for this release by reading the [[http://www.opensips.org/Development/Opensips-3-2-Planning | OpenSIPS 3.2 Overview ]].

March 13, 2019, at 06:29 PM by 109.99.227.30 -
Changed lines 16-19 from:
* new SDP transformation '''sdp.stream''' which returns a specific stream from an SDP body. Read more [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc81 | here ]].

* new SDP transformation '''sdp.stream-delete''' used to delete a stream based on its index or media type. Read more [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc80 | here ]].
to:
* new SDP transformation '''{sdp.stream,media}''' which returns a specific stream from an SDP body. Read more [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc81 | here ]].

* new SDP transformation '''{sdp.stream-delete,media}''' used to delete a stream based on its index or media type. Read more [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc80 | here ]].
Changed lines 26-28 from:
* added new string transformation '''s.reverse''' to reverse a string
to:
* added new string transformation '''{s.reverse}''' to reverse a string

* added new IP transformation '''{ip.matches,ip/masklen}''' for checking IPs against network masks (in short format).
March 12, 2019, at 09:43 AM by 109.99.227.30 -
Added line 26:
* added new string transformation '''s.reverse''' to reverse a string
March 08, 2019, at 09:20 PM by 109.99.227.30 -
Added lines 25-31:


!!!! OpenSIPS core

* added '''xlog_level''' MI command added to set/reset the global value for the xlog'ing threshold.

March 08, 2019, at 08:58 PM by 109.99.227.30 -
Added lines 23-24:

* added new script variable '''$xlog_level''' to set/reset per process bases the value of the xlog'ing threshold.
March 08, 2019, at 08:47 PM by 109.99.227.30 -
Added lines 21-22:

* added new global parameter '''xlog_level''' - similar to '''log_level''' but independently controls the verbosity of the xlog() functions.
March 08, 2019, at 02:52 PM by 109.99.227.30 -
Added lines 19-20:

* global parameter ''xlog_default_level''' was renamed as '''xlog_print_level'''
February 22, 2019, at 07:22 PM by liviu -
Added lines 21-24:

TODO

!!!! Generic Preprocessor Support
February 15, 2019, at 04:24 PM by razvancrainea -
Changed line 104 from:
* The '''rtpproxy_sock''' parameter, as well as DB entries, now support an extra IP that will be used instead of the one indicated by RTPProxy. This is useful in NATTed environments where RTPProxy listens on a private IP, but you need to advertise a public IP.
to:
* The [[https://opensips.org/html/docs/modules/3.2.x/rtpproxy.html#param_rtpproxy_sock|'''rtpproxy_sock''']] parameter, as well as DB entries, now support an extra IP that will be used instead of the one indicated by RTPProxy. This is useful in NATTed environments where RTPProxy listens on a private IP, but you need to advertise a public IP.
February 15, 2019, at 04:23 PM by razvancrainea -
Added lines 102-104:

!!!! RTPPROXY module
* The '''rtpproxy_sock''' parameter, as well as DB entries, now support an extra IP that will be used instead of the one indicated by RTPProxy. This is useful in NATTed environments where RTPProxy listens on a private IP, but you need to advertise a public IP.
February 13, 2019, at 02:31 PM by 109.99.227.30 -
Added lines 19-22:

!!!! Processes Auto-Scaling Support

TODO
January 19, 2019, at 07:53 PM by liviu -
Changed line 63 from:
* full protection against CANCEL/200 OK race conditions via the new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#race_condition_timeout|race_condition_timeout]] modparam and '''"E"''' flag of [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_create_dialog|create_dialog()]]
to:
* full control over CANCEL/200 OK race conditions via the new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#race_condition_timeout|race_condition_timeout]] modparam and '''"E"''' flag of [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_create_dialog|create_dialog()]]
January 19, 2019, at 05:27 PM by liviu -
Changed line 56 from:
* async support for running raw postgres queries from script level via avp_sb_queries()
to:
* async support for running raw postgres queries from script level via avp_db_query()
January 19, 2019, at 01:23 PM by liviu -
Changed line 112 from:
* the '''shared_pinging''' module parameter has been obsoleted in favour of the [[https://opensips.org/html/docs/modules/3.2.x/usrloc.html#param_pinging_mode|pinging_mode]], which mode accurately describes/explains the different pinging heuristics of the module.
to:
* the '''shared_pinging''' module parameter has been obsoleted in favour of the [[https://opensips.org/html/docs/modules/3.2.x/usrloc.html#param_pinging_mode|pinging_mode]], which more accurately describes/explains the different pinging heuristics of the module.
January 19, 2019, at 01:14 PM by liviu -
Changed line 63 from:
* full protection against CANCEL/200 OK race conditions via the new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#race_condition_timeout|race_condition_timeout]] modparam and '''E''' flag of [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_create_dialog|create_dialog()]]
to:
* full protection against CANCEL/200 OK race conditions via the new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#race_condition_timeout|race_condition_timeout]] modparam and '''"E"''' flag of [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_create_dialog|create_dialog()]]
January 19, 2019, at 01:13 PM by liviu -
Added line 63:
* full protection against CANCEL/200 OK race conditions via the new [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#race_condition_timeout|race_condition_timeout]] modparam and '''E''' flag of [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#func_create_dialog|create_dialog()]]
January 19, 2019, at 12:02 PM by liviu -
Added line 62:
* the default value of [[https://opensips.org/html/docs/modules/3.2.x/dialog.html#param_dlg_match_mode|dlg_match_mode]] has been switched from DID_ONLY to DID_FALLBACK.
January 18, 2019, at 07:12 PM by liviu -
Added lines 109-110:
!!!! USRLOC module
* the '''shared_pinging''' module parameter has been obsoleted in favour of the [[https://opensips.org/html/docs/modules/3.2.x/usrloc.html#param_pinging_mode|pinging_mode]], which mode accurately describes/explains the different pinging heuristics of the module.
January 05, 2019, at 06:47 PM by 109.99.227.30 -
Added lines 57-62:

!!!! DIALOG module
* The sharing tag management was moved into the clusterer module:
** removed the module parameter '''dlg_sharing_tag''' (provided now by clusterer module)
** removed the MI commands '''dlg_set_sharing_tag_active''' and '''dlg_list_sharing_tags''' (provided now by clusterer module)
January 05, 2019, at 06:43 PM by 109.99.227.30 -
Changed lines 80-85 from:
to:
!!!! NAT_TRAVERSAL module
* Added clustering support for controlling which is the node responsible for pinging inside a cluster (via sharing tags). New module parameters [[http://www.opensips.org/html/docs/modules/3.2.x/nat_traversal.html#param_cluster_id|cluster_id]] and [[http://www.opensips.org/html/docs/modules/3.2.x/nat_traversal.html#param_cluster_sharing_tag|cluster_sharing_tag]] were added.

!!!! NATHELPER module
* Added clustering support for controlling which is the node responsible for pinging inside a cluster (via sharing tags). New module parameters [[http://www.opensips.org/html/docs/modules/3.2.x/nathelper.html#param_cluster_id|cluster_id]] and [[http://www.opensips.org/html/docs/modules/3.2.x/nathelper.html#param_cluster_sharing_tag|cluster_sharing_tag]] were added.
Changed line 87 from:
* the sharing tag management was moved into the clusterer module:
to:
* The sharing tag management was moved into the clusterer module:
January 05, 2019, at 06:39 PM by 109.99.227.30 -
Added lines 38-41:
!!!! CACHEDB_LOCAL module
* Added [[http://www.opensips.org/html/docs/modules/3.2.x/cachedb_local.html#clustering|data replication]] capability (for the cached data) via the clusterer engine
* Added new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/cachedb_local.html#param_cluster_id|cluster_id]] and [[http://www.opensips.org/html/docs/modules/3.2.x/cachedb_local.html#param_cluster_persistency|cluster_persistency]] for controlling the data clustering.
Added lines 57-61:

!!!! DISPATCHER module
* Added clustering support for deciding (based on sharing tags) which is the node to perform the pinging and for replicating the changes of the destinations:
** added the new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/dispatcher.html#param_cluster_id|cluster_id]]
** added the new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/dispatcher.html#param_cluster_sharing_tag|cluster_sharing_tag]] to define which is the sharing tag governing the actions taken by the module (like pinging gateways or replicating the status of the gateways)
January 05, 2019, at 06:19 PM by 109.99.227.30 -
Added line 30:
Added lines 62-70:

!!!! EVENT_ROUTING module
* the '''notify_on_event''' and '''wait_for_event''' functions accept variables for the timeout parameter.

!!!! LOAD_BALANCER module
* enhanced the clustering support in the module:
** module parameter '''status_replication_cluster''' replaced with [[http://www.opensips.org/html/docs/modules/3.2.x/load_balancer.html#param_cluster_id|cluster_id]] with the same meaning
** added the new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/load_balancer.html#param_cluster_sharing_tag|cluster_sharing_tag]] to define which is the sharing tag governing the actions taken by the module (like pinging destinations or replicating the status of the destinations)
January 05, 2019, at 06:13 PM by 109.99.227.30 -
Changed lines 40-41 from:
** added '''[[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#mi_clusterer_list_shtags|clusterer_list_shtags]] for listing all know tags (and their state)
** added '''[[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#mi_clusterer_shtag_set_active|clusterer_shtag_set_active]] for switching a tag to active
to:
** added '''[[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#mi_clusterer_list_shtags|clusterer_list_shtags]]''' for listing all know tags (and their state)
** added '''[[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#mi_clusterer_shtag_set_active|clusterer_shtag_set_active]]''' for switching a tag to active
Changed lines 55-58 from:
to:
* enhanced the clustering support in the module:
** module parameter '''status_replication_cluster''' replaced with [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#param_cluster_id|cluster_id]] with the same meaning
** added the new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#param_cluster_sharing_tag|cluster_sharing_tag]] to define which is the sharing tag governing the actions taken by the module (like pinging gateways or replicating the status of the gateways)
Added lines 61-65:

!!!! PRESENCE module
* the sharing tag management was moved into the clusterer module:
** removed the module parameter '''cluster_sharing_tags''' (provided now by clusterer module)
** removed the MI commands '''pres_set_sharing_tag_active''' and '''pres_list_sharing_tags''' (provided now by clusterer module)
January 05, 2019, at 06:03 PM by 109.99.227.30 -
Changed lines 39-41 from:
* added the '''[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#param_sharing_tag|sharing_tag]''' module parameter for sharing tag definition.
* new script variable '''[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#var_cluster_sh_tag|$cluster.sh_tag(tag/cluster_id)]''' is now available at script level for read/write operations over the sharing tags
to:
** added the '''[[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#param_sharing_tag|sharing_tag]]''' module parameter for sharing tag definition.
** added '''[[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#mi_clusterer_list_shtags|clusterer_list_shtags]] for listing all know tags (and their state)
** added '''[[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#mi_clusterer_shtag_set_active|clusterer_shtag_set_active]] for switching a tag to active
** new script variable '''[[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#var_cluster_sh_tag|$cluster.sh_tag(tag/cluster_id)]]''' is now available at script level for read/write operations over the sharing tags
Deleted line 49:
Added line 51:
* async support for running raw postgres queries from script level via avp_sb_queries()
January 05, 2019, at 05:57 PM by 109.99.227.30 -
Changed lines 37-40 from:
to:
!!!! CLUSTERER module
* the module provides now an unified sharing tag support - it is the only one responsible for managing the sharing tags (definitions, cluster ops, etc). The other module that needs to check the sharing tags can do it via the clusterer API. The sharing tag managing from presence and dialog modules was removed.
* added the '''[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#param_sharing_tag|sharing_tag]''' module parameter for sharing tag definition.
* new script variable '''[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#var_cluster_sh_tag|$cluster.sh_tag(tag/cluster_id)]''' is now available at script level for read/write operations over the sharing tags
December 07, 2018, at 01:27 PM by razvancrainea -
Changed lines 49-50 from:
* New module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#probing_socket|probing_socket]] to globally force a specific socket/listener for sending the SIP probing to the gateways.
to:
* New module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#param_probing_socket|probing_socket]] to globally force a specific socket/listener for sending the SIP probing to the gateways.
Changed line 52 from:
* A new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/event_flatstore.html#suppress_event_name|suppress_event_name]] was added to configure whether the event's name should be dumped in the file or not.
to:
* A new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/event_flatstore.html#param_suppress_event_name|suppress_event_name]] was added to configure whether the event's name should be dumped in the file or not.
December 07, 2018, at 01:26 PM by razvancrainea -
Added lines 50-52:

!!!! EVENT_FLATSTORE module
* A new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/event_flatstore.html#suppress_event_name|suppress_event_name]] was added to configure whether the event's name should be dumped in the file or not.
October 30, 2018, at 06:08 PM by razvancrainea -
Added lines 50-52:

!!!! RTPENGINE module
* '''rtpengine_offer()''', '''rtpengine_answer()''', '''rtpengine_manage()''' now can receive the SDP body to send to rtpengine as a parameter. This is useful when you want to manipulate the SDP body sent to RTPengine (i.e. to remove, or add additional streams).
October 30, 2018, at 05:53 PM by razvancrainea -
Changed lines 16-18 from:
* new SDP transformation '''sdp.stream-delete''' used to delete a stream based on its index or media type. Read more [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc81 | here ]].
to:
* new SDP transformation '''sdp.stream''' which returns a specific stream from an SDP body. Read more [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc81 | here ]].

* new SDP transformation '''sdp.stream-delete''' used to delete a stream based on its index or media type. Read more [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc80 | here ]].
October 30, 2018, at 12:27 PM by 109.99.227.30 -
Changed lines 28-29 from:

to:
!!!! AUTH_AAA module
* functions '''aaa_does_uri_exist()''' and '''aaa_does_uri_user_exist()''' imported from the old URI module.

Deleted line 32:
Added lines 35-36:

Deleted line 37:
Changed line 52 from:
!!!! URI module
to:
!!!! URI module (removed)
Added line 56:
* functions '''aaa_does_uri_exist()''' and '''aaa_does_uri_user_exist()''' moved into the AUTH_AAA module.
October 30, 2018, at 12:18 PM by razvancrainea -
Added lines 15-16:

* new SDP transformation '''sdp.stream-delete''' used to delete a stream based on its index or media type. Read more [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc81 | here ]].
October 09, 2018, at 05:04 PM by 173.271.100.30 -
Added lines 42-43:
!!!! DROUTING module
* New module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#probing_socket|probing_socket]] to globally force a specific socket/listener for sending the SIP probing to the gateways.
October 03, 2018, at 02:36 PM by 109.99.227.30 -
Added lines 26-31:


!!!! AUTH_DB module

* functions '''db_does_uri_exist()''', '''db_is_to_authorized()''', '''db_is_from_authorized()''' and '''db_get_auth_id()''' imported from the URI module
Changed lines 48-49 from:
* functions '''has_totag()''', '''uri_param()''', '''add_uri_param()''', '''del_uri_param()''', '''tel2sip()''', '''is_uri_user_e164()''' moved into the SIPMSGOPS module. Note that their names was slightly changes for a better understanding.
to:
* functions '''has_totag()''', '''uri_param()''', '''add_uri_param()''', '''del_uri_param()''', '''tel2sip()''', '''is_uri_user_e164()''' moved into the SIPMSGOPS module. Note that their names were slightly changes for a better understanding.
* functions '''db_check_to()''', '''db_check_from()''', '''db_does_uri_exist()''', '''db_get_auth_id()''' and all DB related module parameters moved to the AUTH_DB modules. Note that their names or prototypes may have been changed for a better integration.
October 01, 2018, at 09:51 AM by razvancrainea -
Changed line 34 from:
* New module parameter: '''[[http://www.opensips.org/html/docs/modules/3.2.x/db_mysql.html#param_timeout|timeout]]''' that allows configuration of a timeout threshold for the PostgreSQL connections.
to:
* New module parameter: '''[[http://www.opensips.org/html/docs/modules/3.2.x/db_postgres.html#param_timeout|timeout]]''' that allows configuration of a timeout threshold for the PostgreSQL connections.
October 01, 2018, at 09:50 AM by razvancrainea -
Deleted line 28:
Added lines 30-35:


!!!! DB_POSTGRES module

* New module parameter: '''[[http://www.opensips.org/html/docs/modules/3.2.x/db_mysql.html#param_timeout|timeout]]''' that allows configuration of a timeout threshold for the PostgreSQL connections.
September 28, 2018, at 07:12 PM by 109.99.227.30 -
Added lines 31-37:

!!!! SIPMSGOPS module
* functions '''has_totag()''', '''ruri_has_param()''', '''ruri_has_param()''', '''ruri_del_param()''', '''ruri_tel2sip()''', '''is_uri_user_e164()''' imported from the URI module.

!!!! URI module
* function '''is_user()''' obsoleted as it can simply and more flexible be replaced with '''$au==$var(username)'''
* functions '''has_totag()''', '''uri_param()''', '''add_uri_param()''', '''del_uri_param()''', '''tel2sip()''', '''is_uri_user_e164()''' moved into the SIPMSGOPS module. Note that their names was slightly changes for a better understanding.
July 24, 2018, at 02:00 PM by rvlad_patrascu -
Added lines 25-30:

!!!! DB_MYSQL module

* New module parameter: '''[[http://www.opensips.org/html/docs/modules/3.2.x/db_mysql.html#param_use_tls|use_tls]]''' that allows the use of TLS for MySQL connections.

* In order to enable TLS for a specific MySQL connection the syntax for DB URLs now supports the ''tls_domain=dom_name'' parameter.
July 24, 2018, at 01:50 PM by rvlad_patrascu -
Changed line 18 from:
* The mechanism for matching an incoming/outgoing TLS connection with a virtual TLS domains(both server and client) is now more flexible and relies on two new DB columns/module parameters: ''match_ip_address'' and ''match_ip_address''.
to:
* The mechanism for matching an incoming/outgoing TLS connection with a virtual TLS domain(both server and client) is now more flexible and relies on two new DB columns/module parameters: ''match_ip_address'' and ''match_ip_address''.
July 24, 2018, at 01:49 PM by rvlad_patrascu -
Added lines 15-25:

!!!! TLS_MGM module

* The mechanism for matching an incoming/outgoing TLS connection with a virtual TLS domains(both server and client) is now more flexible and relies on two new DB columns/module parameters: ''match_ip_address'' and ''match_ip_address''.

* Added TLS SNI(Server Name Indication) support for matching TLS server domains.

* Added '''[[http://www.opensips.org/html/docs/modules/3.2.x/tls_mgm.html#param_match_ip_address|match_ip_address]]''' and '''[[http://www.opensips.org/html/docs/modules/3.2.x/tls_mgm.html#param_match_sip_domain|match_sip_domain]]''' module parameters which accept a list of IP:port address and respectively, a list of FQDNs, that are used in the TLS domain matching process.

* Added '''[[http://www.opensips.org/html/docs/modules/3.2.x/tls_mgm.html#param_client_sip_domain_avp|client_sip_domain_avp]]''' module parameter that the defines the AVP to use in the TLS client domain matching process.
May 15, 2018, at 07:24 PM by rvlad_patrascu -
Changed lines 12-14 from:
!!!! TBD
to:
!!!! OpenSIPS script

* new core pseudo-variable '''$hdr_name''' (details [[ http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc95 | here ]]) that returns the name of a SIP header at a given index.
March 28, 2018, at 06:35 PM by razvancrainea -
Changed lines 6-7 from:
!!! [[Documentation/Migration-2-3-2-to-3-2-0|Migration from 2.3.x to 3.2.0]]
to:
!!! [[Documentation/Migration-2-4-0-to-3-2-0|Migration from 2.4.x to 3.2.0]]
Changed lines 12-114 from:
!!!! OpenSIPS script

* "-f -" was introduced for '''reading the config file via stdin''' instead from a file.
* new core function [[ http://www.opensips.org/Documentation/Script-CoreFunctions-3-2#toc24 | is_myself ]] that tests if a host is a local address that OpenSIPS listens on
* new core variable [[ http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc19 | $af ]] that returns the address family (IPv6 or IPv4) of the received SIP message
* any script variable now supports comparison via the '==' and '!=' logical operators with IP addresses and netmasks (eg. ''$var(ip) == 10.10.0.0/24''). This tests whether the IP address in the variable matches the subnet given in the expression.
* old keywords were dropped (src_ip, dst_ip, src_port, dst_port, uri, from_uri, to_uri, method, status, myself, proto and msg:len)
* OpenSIPS can now be configured to listen for a specific protocol on any interface, including IPv6, using the '''*''' token (i.e. @@listen = udp:*:5060@@ will bind all available IPs on port 5060)
* you can now mark an interface as an anycast interface using the @@anycast@@ keyword - doing so, the '''tm module''' will automatically detect replies that are not destined to the current OpenSIPS instance and will handle them accordingly.

!!!! OpenSIPS core

!!!!! "Load" statistics
OpenSIPS 3.2 comes with a complete re-design of the statistics that gives information about the OpenSIPS internal load. The load is defined as percentage of time spent in doing processing versus total time. Following the model of "top", there are three load values, calculated over different periods of time:
* '''realtime load''' - calculated over the last 1 second
* '''last minute load''' - calculated over the last 1 minute
* '''last 10 minutes load''' - calculated over the last 10 minutes
The new load class overs a more granular access to the load information:
* load per process
* load per OpenSIPS core (covering only core/SIP processes)
* load per entire OpenSIPS (covering all processes, core and modules)
Find the full list of available load statistics (and their description) [[http://www.opensips.org/Documentation/Interface-CoreStatistics-3-2#load|here]].

!!!!! DB interface
* added the '''escaping/encoding of unsupported characters inside a DB URL'''. Using %xy hexa encoding, you can push any sort of characters in key fields of the URL as username and password.

!!!!! InterProcess Communication (IPC) support
* added the '''job dispatching''' capability - to send an internal job to be executed/handled by any available process (kind of a pseudo load-balancing of the internal jobs among the processes). The FreeSWITCH module is using this in order to execute the incoming FS events in any idle process.
* added '''Remote Procedure Call (RPC)''' support via IPC - a process can trigger the execution of a function in a different process. This is used by the TCP core to "externalize" the execution of its functions responsible for generating statistics.
* '''shutdown sequence''' is now implemented via RPC - the attendant/main process executes in all IPC aware processes a terminate function. This leads to a controlled process termination versus the old brutal approach based on simply killing the processes. Such killing may result in an inconsistent state of the shared resources and even more in a failed shutdown process with lost data. For the future, a per-process cleanup handler may be exported by each module.

!!!!! SIP Parser
* the "To" like headers (like PPI or PAI) are now properly parsed as multi-value (comma separated) name-addr/addr-spec headers

!!!! NEW SIPREC module
The new [[http://www.opensips.org/Documentation/Tutorials-SIPREC-3-2|SIPREC]] module in OpenSIPS 3.2 provides the means to do call recording to an external recorder using the SIPREC standard.

!!!! NEW EVENT_JSONRPC module
The new [[http://www.opensips.org/html/docs/modules/3.2.x/event_jsonrpc.html | EVENT_JSONRPC]] module in OpenSIPS 3.2 implements a transport protocol for the OpenSIPS Event Interface. Using this module, you can notify applications about OpenSIPS internal events using the JSON-RPC protocol.

!!!! NEW JSONRPC module
[[http://www.opensips.org/html/docs/modules/3.2.x/jsonrpc.html | JSONRPC]] is a new module in OpenSIPS 3.2 that provides functions to run JSON-RPC commands on a remote JSON-RPC server, and retrieve the call's response back.

!!!! CACHEDB_REDIS module
* OpenSIPS will now start even if Redis is unreachable. A new modparam, '''[[http://www.opensips.org/html/docs/modules/3.2.x/cachedb_redis.html#idp5549200|shutdown_on_error]]''', can be enabled in order to revert to the old behavior.

!!!! CGRateS module
* Adapt to the newly added SessionV1 interface, which provides mechanisms to access enhanced CGRateS submodules (such as AttributeS or SuppplierS modules). One can activate each of these new features by setting the [[http://www.opensips.org/html/docs/modules/3.2.x/cgrates#idp4232944| '''$cgr_opt(name)''']] variable.
* Provide a simple mechanism to access the values returned by CGRateS using the [[http://www.opensips.org/html/docs/modules/3.2.x/cgrates#idp3831104| '''$cgr_ret(name)''']] variable. The old @@$cgrret@@ variable has been deprecated and replaced by the newly added @@$cgr_ret(name)@@, although when used without a name (i.e. @@$cgr_ret@@) it has the same behavior as the old @@$cgrret@@).

!!!! DNS_CACHE module
* proper handling of '''TTL 0 in DNS answers'''. RFC1035 states that "zero TTL values are interpreted to mean that the RR can only be used for the transaction in progress, and should not be cached".

!!!! JSON module
* Two new variables that control the way the JSON object is printed as string have been added:
** '''[[http://www.opensips.org/html/docs/modules/3.2.x/json.html#idp5560288|$json_pretty(id)]]''' - dumps the JSON in a nice, readable form, by adding spaces and tabs to the output.
** '''[[http://www.opensips.org/html/docs/modules/3.2.x/json.html#idp5562480|$json_compact(id)]]''' - outputs the JSON in a compact manner, avoiding any extra spaces in the output.

!!!! PRESENCE module
Added clustering capabilities in terms of full data sharing or/and federated clusters. The clustering support allows the presence node to share data between them (full sharing versus data partitioning with replication) and to synchronize/coordinate the nodes in terms of taking actions over data (broadcast & querying over the cluster, tag sharing).\\
The clustering support enabled several scenarios:
* active - backup High Availability
* multi-active Load Balancing
* multi-active Federation (partitioning)
* mix between HA and Federation scenarios
For a detailed description of those scenarios, please refer to the this [[https://blog.opensips.org/2018/03/27/clustering-presence-services-with-opensips-3-2/|blog post]].

!!!! RTPENGINE module
* The rtpengine has support for two new parameters: '''in-iface''' and '''out-iface''' that can be used to specify which listening interface rtpengine should advertise when running in bridge mode.
* Adapt with the latest transcoding features added in [[https://github.com/sipwise/rtpengine#transcoding | rtpengine]].
* Provide access to the entire information of a RTPEngine session using the [[http://www.opensips.org/html/docs/modules/3.2.x/rtpengine#idp5784944 | @@$rtpquery@@]] variable
* Provide an easy way to get statistics from a RTP call such as MOS (Mean Opinion Score) value using the [[ http://www.opensips.org/html/docs/modules/3.2.x/rtpengine#idp5771184 | $rtpstat(name) ]] variable.
* Make the RTPEngine provisioning more flexible by adding database support for specifying rtpengine sockets.

!!!! RTPPROXY module
* The rtpproxy module can now instruct the RTPProxy server to duplicate the stream RTP to a remote destination.
* The new [[http://www.opensips.org/html/docs/modules/3.2.x/rtpproxy#idp5528144|default_set]] parameter can be used to specify a custom default set, instead of the hardocoded '''0'''.
* The [[http://www.opensips.org/html/docs/modules/3.2.x/rtpproxy#idp5600160| rtpproxy_offer()]] function can now return the IP and port used by rtpproxy to receive the media.

!!!! SIP_I module
* added the ability to push '''custom headers in body parts''' via the '''default_part_headers''' module parameter or as an optional extra parameter to '''add_isup_part([isup_msg_type][,extra_headers])''' function - this is very useful for managing the "Content-Disposition" header per body part.

!!!! SIPTRACE module
The '''tracing capabilities were extended''' in order to capture the following SIP messages which were not traced so far:
* 100 trying generated by OpenSIPS
* incoming ACK for negative replies
* outgoing ACK to negative replies
* incoming replies to CANCEL requests
* incoming request retransmissions
* outgoing request retransmissions
* outgoing reply retransmissions

!!!! SIPMSGOPS module
* added the ability to push '''custom headers in body parts''' as an option extra parameter to ''add_body_part(body,mime[,headers])''' function - this is very useful for managing the "Content-Disposition" header per body part.

!!!! TM module
* Added support for '''Content-Disposition: no-cancel''' by forcing the "0x10" flag in t_relay() - as per RFC3841, section 9.1, the TM module may be instructed not to cancel all ongoing branches when a 2xx reply is received. It will keep the pending branches ongoing until (1) all branches will receive a final reply or (2) the transaction hits the timeout. This is work sponsored by Harris Corporation (https://www.harris.com).
* Added support for handling transactions in a distributed environment, with multiple active-active servers, such as ANYCAST setups. Read more about the Full Anycast support on [[ https://blog.opensips.org/2018/03/21/full-anycast-support-in-opensips-3-2/ | our blog]].

!!!! USRLOC module
* migrate the "expires" column from DATETIME to INT. Instead of keeping the expires value as DATETIME, better keep it as UNIX timestamp in order to avoid any impact due TZ and DST changes.
* a new extra field '''attr''' provided by the E_UL_CONTACT_INSERT event
to:
!!!! TBD
March 28, 2018, at 02:25 PM by razvancrainea -
Changed line 53 from:
[[http://www.opensips.org/html/docs/modules/3.2.x/jsonrpc.html | JSONRPC]] is a new module in OpenSIPS 3.2 that provides functions to run JSON-RPC commands on a remote JSON-RPC server, and retrieve the response back.
to:
[[http://www.opensips.org/html/docs/modules/3.2.x/jsonrpc.html | JSONRPC]] is a new module in OpenSIPS 3.2 that provides functions to run JSON-RPC commands on a remote JSON-RPC server, and retrieve the call's response back.
March 28, 2018, at 02:24 PM by razvancrainea -
Added lines 48-53:

!!!! NEW EVENT_JSONRPC module
The new [[http://www.opensips.org/html/docs/modules/3.2.x/event_jsonrpc.html | EVENT_JSONRPC]] module in OpenSIPS 3.2 implements a transport protocol for the OpenSIPS Event Interface. Using this module, you can notify applications about OpenSIPS internal events using the JSON-RPC protocol.

!!!! NEW JSONRPC module
[[http://www.opensips.org/html/docs/modules/3.2.x/jsonrpc.html | JSONRPC]] is a new module in OpenSIPS 3.2 that provides functions to run JSON-RPC commands on a remote JSON-RPC server, and retrieve the response back.
March 28, 2018, at 02:18 PM by razvancrainea -
Added line 20:
* you can now mark an interface as an anycast interface using the @@anycast@@ keyword - doing so, the '''tm module''' will automatically detect replies that are not destined to the current OpenSIPS instance and will handle them accordingly.
March 28, 2018, at 02:14 PM by razvancrainea -
Deleted line 57:
Added line 102:
* Added support for handling transactions in a distributed environment, with multiple active-active servers, such as ANYCAST setups. Read more about the Full Anycast support on [[ https://blog.opensips.org/2018/03/21/full-anycast-support-in-opensips-3-2/ | our blog]].
March 28, 2018, at 02:04 PM by razvancrainea -
Changed line 53 from:
* Provide a simple mechanism to access the values returned by CGRateS using the [[http://www.opensips.org/html/docs/modules/3.2.x/cgrates#idp3831104| '''$cgr_ret(name)''']] variable.
to:
* Provide a simple mechanism to access the values returned by CGRateS using the [[http://www.opensips.org/html/docs/modules/3.2.x/cgrates#idp3831104| '''$cgr_ret(name)''']] variable. The old @@$cgrret@@ variable has been deprecated and replaced by the newly added @@$cgr_ret(name)@@, although when used without a name (i.e. @@$cgr_ret@@) it has the same behavior as the old @@$cgrret@@).
March 28, 2018, at 02:01 PM by razvancrainea -
Added lines 75-78:
* Adapt with the latest transcoding features added in [[https://github.com/sipwise/rtpengine#transcoding | rtpengine]].
* Provide access to the entire information of a RTPEngine session using the [[http://www.opensips.org/html/docs/modules/3.2.x/rtpengine#idp5784944 | @@$rtpquery@@]] variable
* Provide an easy way to get statistics from a RTP call such as MOS (Mean Opinion Score) value using the [[ http://www.opensips.org/html/docs/modules/3.2.x/rtpengine#idp5771184 | $rtpstat(name) ]] variable.
* Make the RTPEngine provisioning more flexible by adding database support for specifying rtpengine sockets.
March 28, 2018, at 01:51 PM by razvancrainea -
Added lines 50-53:

!!!! CGRateS module
* Adapt to the newly added SessionV1 interface, which provides mechanisms to access enhanced CGRateS submodules (such as AttributeS or SuppplierS modules). One can activate each of these new features by setting the [[http://www.opensips.org/html/docs/modules/3.2.x/cgrates#idp4232944| '''$cgr_opt(name)''']] variable.
* Provide a simple mechanism to access the values returned by CGRateS using the [[http://www.opensips.org/html/docs/modules/3.2.x/cgrates#idp3831104| '''$cgr_ret(name)''']] variable.
March 28, 2018, at 01:27 PM by razvancrainea -
Added line 75:
* The [[http://www.opensips.org/html/docs/modules/3.2.x/rtpproxy#idp5600160| rtpproxy_offer()]] function can now return the IP and port used by rtpproxy to receive the media.
March 28, 2018, at 01:24 PM by razvancrainea -
Changed line 19 from:
* OpenSIPS can now be configured to listen for a specific protocol on any interface using the '''*''' token (i.e. @@listen = udp:*:5060@@ will bind all available IPs on port 5060)
to:
* OpenSIPS can now be configured to listen for a specific protocol on any interface, including IPv6, using the '''*''' token (i.e. @@listen = udp:*:5060@@ will bind all available IPs on port 5060)
March 28, 2018, at 01:23 PM by razvancrainea -
Changed lines 19-20 from:
to:
* OpenSIPS can now be configured to listen for a specific protocol on any interface using the '''*''' token (i.e. @@listen = udp:*:5060@@ will bind all available IPs on port 5060)
Deleted line 43:
March 28, 2018, at 01:15 PM by razvancrainea -
Added line 74:
* The new [[http://www.opensips.org/html/docs/modules/3.2.x/rtpproxy#idp5528144|default_set]] parameter can be used to specify a custom default set, instead of the hardocoded '''0'''.
March 28, 2018, at 12:09 PM by 109.99.227.30 -
Added lines 44-47:

!!!! NEW SIPREC module
The new [[http://www.opensips.org/Documentation/Tutorials-SIPREC-3-2|SIPREC]] module in OpenSIPS 3.2 provides the means to do call recording to an external recorder using the SIPREC standard.
Deleted lines 89-91:

!!!! SIPREC module
* The new [[http://www.opensips.org/Documentation/Tutorials-SIPREC-3-2|SIPREC]] module in OpenSIPS 3.2 provides the means to do call recording to an external recorder using the SIPREC standard.
March 28, 2018, at 12:07 PM by 109.99.227.30 -
Changed line 14 from:
* "-f -" config file via stdin
to:
* "-f -" was introduced for '''reading the config file via stdin''' instead from a file.
Added line 18:
* old keywords were dropped (src_ip, dst_ip, src_port, dst_port, uri, from_uri, to_uri, method, status, myself, proto and msg:len)
March 28, 2018, at 12:03 PM by 109.99.227.30 -
Added lines 72-81:

!!!! SIPTRACE module
The '''tracing capabilities were extended''' in order to capture the following SIP messages which were not traced so far:
* 100 trying generated by OpenSIPS
* incoming ACK for negative replies
* outgoing ACK to negative replies
* incoming replies to CANCEL requests
* incoming request retransmissions
* outgoing request retransmissions
* outgoing reply retransmissions
March 28, 2018, at 11:36 AM by 109.99.227.30 -
Added lines 40-42:
!!!!! SIP Parser
* the "To" like headers (like PPI or PAI) are now properly parsed as multi-value (comma separated) name-addr/addr-spec headers
Added lines 46-49:
!!!! DNS_CACHE module
* proper handling of '''TTL 0 in DNS answers'''. RFC1035 states that "zero TTL values are interpreted to mean that the RR can only be used for the transaction in progress, and should not be cached".

Added line 84:
* a new extra field '''attr''' provided by the E_UL_CONTACT_INSERT event
March 28, 2018, at 11:20 AM by 109.99.227.30 -
Added lines 34-38:

!!!!! InterProcess Communication (IPC) support
* added the '''job dispatching''' capability - to send an internal job to be executed/handled by any available process (kind of a pseudo load-balancing of the internal jobs among the processes). The FreeSWITCH module is using this in order to execute the incoming FS events in any idle process.
* added '''Remote Procedure Call (RPC)''' support via IPC - a process can trigger the execution of a function in a different process. This is used by the TCP core to "externalize" the execution of its functions responsible for generating statistics.
* '''shutdown sequence''' is now implemented via RPC - the attendant/main process executes in all IPC aware processes a terminate function. This leads to a controlled process termination versus the old brutal approach based on simply killing the processes. Such killing may result in an inconsistent state of the shared resources and even more in a failed shutdown process with lost data. For the future, a per-process cleanup handler may be exported by each module.
March 27, 2018, at 04:18 PM by 109.99.227.30 -
Changed line 68 from:
* Added support for '''Content-Disposition: no-cancel''' by forcing the "0x10" flag in t_relay() - as per RFC3841, section 9.1, the TM module may be instructed not to cancel all ongoing branches when a 2xx reply is received. It will keep the pending branches ongoing until (1) all branches will receive a final reply or (2) the transaction hits the timeout.
to:
* Added support for '''Content-Disposition: no-cancel''' by forcing the "0x10" flag in t_relay() - as per RFC3841, section 9.1, the TM module may be instructed not to cancel all ongoing branches when a 2xx reply is received. It will keep the pending branches ongoing until (1) all branches will receive a final reply or (2) the transaction hits the timeout. This is work sponsored by Harris Corporation (https://www.harris.com).
March 27, 2018, at 04:17 PM by 109.99.227.30 -
Added lines 66-68:

!!!! TM module
* Added support for '''Content-Disposition: no-cancel''' by forcing the "0x10" flag in t_relay() - as per RFC3841, section 9.1, the TM module may be instructed not to cancel all ongoing branches when a 2xx reply is received. It will keep the pending branches ongoing until (1) all branches will receive a final reply or (2) the transaction hits the timeout.
March 27, 2018, at 03:50 PM by 109.99.227.30 -
Added lines 66-69:

!!!! USRLOC module
* migrate the "expires" column from DATETIME to INT. Instead of keeping the expires value as DATETIME, better keep it as UNIX timestamp in order to avoid any impact due TZ and DST changes.
March 27, 2018, at 03:47 PM by 109.99.227.30 -
Added lines 31-33:

!!!!! DB interface
* added the '''escaping/encoding of unsupported characters inside a DB URL'''. Using %xy hexa encoding, you can push any sort of characters in key fields of the URL as username and password.
March 27, 2018, at 03:44 PM by 109.99.227.30 -
Added lines 54-59:

!!!! SIP_I module
* added the ability to push '''custom headers in body parts''' via the '''default_part_headers''' module parameter or as an optional extra parameter to '''add_isup_part([isup_msg_type][,extra_headers])''' function - this is very useful for managing the "Content-Disposition" header per body part.

!!!! SIPMSGOPS module
* added the ability to push '''custom headers in body parts''' as an option extra parameter to ''add_body_part(body,mime[,headers])''' function - this is very useful for managing the "Content-Disposition" header per body part.
March 27, 2018, at 03:38 PM by 109.99.227.30 -
Changed lines 21-22 from:
!!!!! '''"Load" statistics class reworked''' - the statistics giving information about the OpenSIPS internal load. The load is defined as percentage of time spent in doing processing versus total time. Following the model of "top", there are three load values, calculated over different periods of time:
to:
!!!!! "Load" statistics
OpenSIPS 3.2 comes with a complete re-design of the statistics that gives information about the OpenSIPS internal load. The load is defined as percentage of time spent in doing processing versus total time. Following the model of "top", there are three load values, calculated over different periods of time:
March 27, 2018, at 03:35 PM by 109.99.227.30 -
Added lines 18-29:

!!!! OpenSIPS core

!!!!! '''"Load" statistics class reworked''' - the statistics giving information about the OpenSIPS internal load. The load is defined as percentage of time spent in doing processing versus total time. Following the model of "top", there are three load values, calculated over different periods of time:
* '''realtime load''' - calculated over the last 1 second
* '''last minute load''' - calculated over the last 1 minute
* '''last 10 minutes load''' - calculated over the last 10 minutes
The new load class overs a more granular access to the load information:
* load per process
* load per OpenSIPS core (covering only core/SIP processes)
* load per entire OpenSIPS (covering all processes, core and modules)
Find the full list of available load statistics (and their description) [[http://www.opensips.org/Documentation/Interface-CoreStatistics-3-2#load|here]].
March 27, 2018, at 03:24 PM by 109.99.227.30 -
Added lines 26-34:

!!!! PRESENCE module
Added clustering capabilities in terms of full data sharing or/and federated clusters. The clustering support allows the presence node to share data between them (full sharing versus data partitioning with replication) and to synchronize/coordinate the nodes in terms of taking actions over data (broadcast & querying over the cluster, tag sharing).\\
The clustering support enabled several scenarios:
* active - backup High Availability
* multi-active Load Balancing
* multi-active Federation (partitioning)
* mix between HA and Federation scenarios
For a detailed description of those scenarios, please refer to the this [[https://blog.opensips.org/2018/03/27/clustering-presence-services-with-opensips-3-2/|blog post]].
January 05, 2018, at 12:06 PM by razvancrainea -
Added lines 22-26:
!!!! JSON module
* Two new variables that control the way the JSON object is printed as string have been added:
** '''[[http://www.opensips.org/html/docs/modules/3.2.x/json.html#idp5560288|$json_pretty(id)]]''' - dumps the JSON in a nice, readable form, by adding spaces and tabs to the output.
** '''[[http://www.opensips.org/html/docs/modules/3.2.x/json.html#idp5562480|$json_compact(id)]]''' - outputs the JSON in a compact manner, avoiding any extra spaces in the output.
Deleted line 31:
November 07, 2017, at 02:37 PM by razvancrainea -
Added lines 19-21:
!!!! CACHEDB_REDIS module
* OpenSIPS will now start even if Redis is unreachable. A new modparam, '''[[http://www.opensips.org/html/docs/modules/3.2.x/cachedb_redis.html#idp5549200|shutdown_on_error]]''', can be enabled in order to revert to the old behavior.
Changed lines 28-29 from:
!!!! CACHEDB_REDIS module
* OpenSIPS will now start even if Redis is unreachable. A new modparam, '''[[http://www.opensips.org/html/docs/modules/3.2.x/cachedb_redis.html#idp5549200|shutdown_on_error]]''', can be enabled in order to revert to the old behavior.
to:

!!!! SIPREC module
* The new [[http://www.opensips.org/Documentation/Tutorials-SIPREC-3-2|SIPREC]] module in OpenSIPS 3.2 provides the means to do call recording to an external recorder using the SIPREC standard.
October 09, 2017, at 11:07 AM by liviu -
Added lines 24-26:

!!!! CACHEDB_REDIS module
* OpenSIPS will now start even if Redis is unreachable. A new modparam, '''[[http://www.opensips.org/html/docs/modules/3.2.x/cachedb_redis.html#idp5549200|shutdown_on_error]]''', can be enabled in order to revert to the old behavior.
September 12, 2017, at 04:45 PM by rvlad_patrascu -
Changed line 17 from:
* any script variable now supports comparison via the '==' and '!=' logical operators with IP addresses and netmasks (eg. ''$var(ip) == 10.10.0.0/24''). This tests weather the IP address in the variable matches the subnet given in the expression.
to:
* any script variable now supports comparison via the '==' and '!=' logical operators with IP addresses and netmasks (eg. ''$var(ip) == 10.10.0.0/24''). This tests whether the IP address in the variable matches the subnet given in the expression.
July 14, 2017, at 05:25 PM by rvlad_patrascu -
Changed line 17 from:
* any script variable supports comparison via the '==' and '!=' logical operators with IP addresses and subnet masks (eg. ''$var(ip) == 10.10.0.0/24''). This tests weather the IP address in the variable is equal to the IP in the right operand (in case no subnet mask or '/32' is used) or matches the subnet of the given right operand.
to:
* any script variable now supports comparison via the '==' and '!=' logical operators with IP addresses and netmasks (eg. ''$var(ip) == 10.10.0.0/24''). This tests weather the IP address in the variable matches the subnet given in the expression.
July 14, 2017, at 02:42 PM by rvlad_patrascu -
Added lines 12-13:
!!!! OpenSIPS script
Added lines 15-17:
* new core function [[ http://www.opensips.org/Documentation/Script-CoreFunctions-3-2#toc24 | is_myself ]] that tests if a host is a local address that OpenSIPS listens on
* new core variable [[ http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc19 | $af ]] that returns the address family (IPv6 or IPv4) of the received SIP message
* any script variable supports comparison via the '==' and '!=' logical operators with IP addresses and subnet masks (eg. ''$var(ip) == 10.10.0.0/24''). This tests weather the IP address in the variable is equal to the IP in the right operand (in case no subnet mask or '/32' is used) or matches the subnet of the given right operand.
July 03, 2017, at 06:04 PM by liviu -
Added lines 11-12:

* "-f -" config file via stdin
June 26, 2017, at 07:30 PM by razvancrainea -
Added lines 14-16:

!!!! RTPPROXY module
* The rtpproxy module can now instruct the RTPProxy server to duplicate the stream RTP to a remote destination.
May 11, 2017, at 07:56 PM by razvancrainea -
Changed lines 12-14 from:
!!!! TBA

* TBA
to:
!!!! RTPENGINE module
* The rtpengine has support for two new parameters: '''in-iface''' and '''out-iface''' that can be used to specify which listening interface rtpengine should advertise when running in bridge mode.
----
March 16, 2017, at 07:44 PM by razvancrainea -
Changed lines 12-14 from:
!!!! TBA
to:
!!!! TBA

* TBA
March 16, 2017, at 07:39 PM by razvancrainea -
Changed lines 12-19 from:
!!!! OpenSIPS core

* TBA

!!!! OpenSIPS script

* TBA
----
to:
!!!! TBA
March 16, 2017, at 07:39 PM by razvancrainea -
Changed lines 6-7 from:
!!! [[Documentation/Migration-2-2-0-to-3-2-0|Migration from 2.2.x to 3.2.0]]
to:
!!! [[Documentation/Migration-2-3-2-to-3-2-0|Migration from 2.3.x to 3.2.0]]
Changed lines 14-24 from:
* support for armv6 and armv7 locking
* support for fast-locks on mips and mips64el architectures
* support for native umutex in freebsd
* added a new statistic for the SHM memory groups that prints the maximum memory used of a group
* added '''content-aware body (multi-part) changing''' - this allows parsing and modification of the body via the "body parts" list; parts can be modified (with function or lumps), can be deleted and new ones can be added. Any type of modification (and any of them) is allowed. The body is completely rebuild based on the resulting list of body parts. Also we support transparent transitions from no body to body, single part body to multi-part body or the other way around - with automatic update of the Content-Type and Content-Len headers, of course.
* '''major rework of body and SDP parsing''' - unified and consistent way of parsing and accessing the body parts (single or multi part body). This results in a transparent way of parsing and freeing the parts content (like SDP or ISUP).
* address '''potential starvation for the timer tasks''' - even if the timer tasks have priority in the asyns reactor (for being handled), if all the worker processes are already busy in handling some SIP tasks which takes too long, may lead into a starvation of the timer tasks. For the moment we address this by creating a extra worker processes (similar to the SIP workers) which is dedicated to executing the timer tasks. Still, based on their availability and load, the SIP workers are able to consume timer tasks.
* added the first basic version of an '''IPC support''' - this is an internal mechanism that allows any process to pass a job to another process. the IPC support is internally used by the '''Event Routing''' module and by the TCP stack. In the next version, more custom existing inter-process communication will be migrated to this generic IPC support. Also, the IPC mechanism opens new possibilities when comes to improvements or creation of new features.


to:
* TBA
Changed lines 18-313 from:
* new [[http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc47 | '''$xlog_level''']] core pseudo-variable that prints the level of message printed at syslog
* new custom index '''append''' for $avp variables to allow you to add new values at the end of the list (at the bottom of the stack) - '' $(avp(name)[append]) = "last value"; ''
* '''$rb''' can now take as name a mime, in order to access the body parts by mime : $rb(application/sdp) - get the first SDP body part ; $(rb(application/isup)[-1]) - get the last ISUP body part
* the the xlog messages include now the time and process ID when printing to stderr (to be consistent with the syslog logging)

!!!! Async layer

* new '''launch()''' statement to starts a function/job in async mode and continue the script immediately, without waiting for the job to be terminated. A "report" route may be triggered (outside the context of the msg launching the job) when the job is terminated to be able to access the return code and the possible returned data. See for [[http://www.opensips.org/Documentation/Script-Async-3-2#toc5|more]].
* '''new internal (non-scripting) support for async I/O operations''' - internal functions can register FDs into the reactor in order to be triggered when data is available (and run a handler). For example this is internally used by the [[http://www.opensips.org/html/docs/modules/3.2.x/cgrates.html|cgrates]] module in order to handle its communication with the external ''cgrates'' engine
* enhanced the ASYNC API to allows '''resume via non-FD events (outside I/O reactor scope)''' ; The resume/suspect logic is reused, but the waiting and triggering can now by done via other means (like event based) rather than being I/O reactor based.

!!!! OpenSIPS Enhanced tracing

Starting with this versions multiple events can be traced, other than sip packets. There are two types of events:
* events that take place when a certain type of SIP packet is processed, events happening in a '''sip context that can be controlled using [[http://www.opensips.org/html/docs/modules/3.2.x/siptrace|siptrace]] module;
* events that don't take place in a sip context that are controlled directly via [[http://www.opensips.org/html/docs/modules/3.2.x/proto_hep|proto_hep]] module;

At the moment, OpenSIPS 3.2 supports tracing for the following sip context events:
* xlog messages;
* [[http://www.opensips.org/html/docs/modules/3.2.x/rest_client|rest_client]] module queries ( requests and replies );
These events are controlled via [[http://www.opensips.org/html/docs/modules/3.2.x/siptrace#id293458|sip_trace]] function which was enhanced with a new parameter through which one can specify which of these events shall be traced. All these events will be traced in the sip context that is given to the function, that is if '''rest''' tracing is activated for a dialog, all rest requests and replies that will occur for that dialog shall be traced.

The following non sip events can be traced:
* transport layer events( currently available for [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp|TCP]], [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tls|TLS]], [[http://www.opensips.org/html/docs/modules/3.2.x/proto_ws|WS]] and [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss|WSS]] transport layers;
* mi commands ( all mi protocols are available );
For these types of events the hep ids defined directly in [[http://www.opensips.org/html/docs/modules/3.2.x/proto_hep|proto_hep]] module, since there is no sip context( see [[http://www.opensips.org/html/docs/modules/3.2.x/mi_fifo#id293508|mi_fifo]] exmaple).
For the mi commands there is the posibilty to define blacklists or whitlists of commands to be traced in order to avoid tracing commands that are not useful( see [[http://www.opensips.org/html/docs/modules/3.2.x/mi_fifo#id293563 | mi_fifo ]] example ).
For transport layer protocols the unit we are working with is a connection. All protocol events such as connect or accept events, connection closed events for TCP, certificate information and master key for TLS and WSS and http request and reply used during the handshake for WS and WSS. Tracing can be activated via MI ( [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#wss-trace|WSS]] example ) and the connections that will be traced can be controlled via a filter route in which users will ses source and destination IPs and ports for that connection ( [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#id293818|WSS]] example ).

!!!! OpenSIPS troubleshooting / development


!!!! CGRATES module (new)
* the [[http://www.opensips.org/html/docs/modules/3.2.x/cgrates.html|cgrates]] module provides an interface to the CGRateS rating eninge. Using this module you can do multi-tenant prepaid and postpaid billing in the OpenSIPS script. Read more information [[https://blog.opensips.org/2017/01/25/real-time-billing-using-cgrates|here]].

!!!! EVENT ROUTING module (new)
* The [[http://www.opensips.org/html/docs/modules/3.2.x/event_routing.html|Event (based) Routing]] module, or shortly the EBR module, provides a mechanism that allows different SIP processings (of messages in script) to communicate and synchronize between through OpenSIPS Events.
* This mechanism is based on the Subscribe-Notify concept. Any SIP processing may subscribe to various OpenSIPS Events Upon Event raising, the subscriber will be notified, so it will be able to make use of the data attached to the Event. Note that the Event raising may take place in a completely different SIP processing context, completely unrelated to the subscriber processing.
* The EBR support allows implementation of more advanced SIP scenarios like Push Notification or Call Pickup

!!!! FREESWITCH module (new)
* the [[ http://www.opensips.org/html/docs/modules/3.2.x/freeswitch.html | freeswitch ]] module acts as a connection manager for FreeSWITCH Event Socket Layer sockets. It currently provides dynamic statistics from FreeSWITCH in order to update routing behavior for the ''dispatcher'' and ''load_balancer'' modules.

!!!! SIP_I module (new)
* the [[ http://www.opensips.org/html/docs/modules/3.2.x/sip_i.html | SIP-I ]] module provides '''SIP-I to SIP gatewaying and ISUP awarness''' by offering the possibility of processing ISDN User Part(ISUP) messages encapsulated in SIP. The available operations are: reading and modifying parameters from an ISUP message, removing or adding new optional parameters, adding an ISUP part to a SIP message body. This is done explicitly via script variables and functions. The supported ISUP message types are only the ones that can be included in a SIP message according to the SIP-I(SIP with encapsulated ISUP) protocol defined by ITU-T.


!!!! MID_REGISTRAR module (new)
* the [[ http://www.opensips.org/html/docs/modules/3.2.x/mid_registrar.html | mid_registrar ]] enables a series of scenarios in which OpenSIPS acts as a ''SIP registration front-end''. This novel SIP platform component is able to '''throttle down''' SIP registration traffic rates on the way to existing farms of SIP registrars, by extending contact expiration intervals. Moreover, it can also be configured to take over all parallel forking duties for these existing SIP infrastructures.

!!!! RABBITMQ module (new)
* a new [[http://www.opensips.org/html/docs/modules/3.2.x/rabbitmq.html|RabbitMQ]] module provides a more flexible and easy to use interface to a RabbitMQ server. Check out [[https://blog.opensips.org/2017/02/08/rabbitmq-evolution-with-opensips-3-2/|more]]!

!!!! XML module (new)
* the [[ http://www.opensips.org/html/docs/modules/3.2.x/xml.html | XML ]] module allows the processing of XML documents from the script by exposing a variable that provides access to the elements and their contents and attributes. In this way you can modify, add or remove nodes in the XML tree.

!!!! ACC module
* '''diameter''' support has been removed;
* extra variables engine was reworked(including both extra and leg engine); '''*_extra''' and '''*_extra_bye''' parameters have been replaced with '''extra_fields''' with which you can define tags to be used in the script using '''acc_extra''' script variable; the variable can be set/modified until the accounting is being made;
* leg variables engine was also reworked; now you can define leg variables for each of the available backends(log, db, aaa, evi); the modparam section is the same as for the '''extra_fields''' parameter whereas in the script you can use '''acc_leg''' variable to set the leg values; the variable can be indexed with the index of the leg; it accepts both positive index(0 is the first leg) and negative indexes(-1 is the last leg);
* the leg accounting engine is not based anymore on AVPs; each time you want to create a new leg you have to call '''acc_new_leg''' function which will create a new leg for you; the value of the last leg shall be accessed with '''acc_current_leg''' variable;
* for further information read the [[ http://www.opensips.org/html/docs/modules/3.2.x/acc#id294905 | docs ]]

!!!! Call Center module
* new ''queue_pos_param'' module paramter to report the queue position - the parameter value is the name of an SIP URI parameter to be used to report the position in the waiting queue when sending the call to media server for onwait/queue playback. The position 0 means it is the next call to be delivered to an agent.

!!!! Clusterer module
* the module was reworked and enhanced in order to provide a better node availability detection mechanism and inter-cluster routing of BIN messages (if the link between nodes A and B is down the message might be routed through node C). As there were no explicit probes at the clusterer module level, an active pinging mechanism was introduced which establishes the state of the connections of the current node with other nodes in the cluster at BIN interface level. Based on this, a link-state resembling protocol was implemented in order to learn the cluster topology and compute a routing 'table' used for sending BIN messages between nodes. Also the possibility of adding new nodes to the cluster without additional provisioning for the existing components was introduced.
* new module parameters for tweaking the probing mechanism:
** [[ http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#id293821 | ping_interval ]] - the interval in seconds between regular pings sent to a neighbour node
** [[ http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#id293857 | ping_timeout ]] - the time in milliseconds to wait for a reply to a previously sent ping before retrying or considering the link with the neighbour node down. This is also the interval between successive retries if the send fails.
** [[ http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#id293894 | node_timeout ]] - the time in seconds to wait before pinging is restarted for a failed node
* the module's *''_col'' parameters were changed to reflect the modified DB column names
* the MI command [[ http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#id293983 | clusterer_list ]] now lists information about the other nodes in the cluster from the current node's perspective
* new MI command [[ http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#id294040 | clusterer_list_topology ]] that lists the cluster's topology from the current node's perspective as an adjacency list
* for further information read the [[ http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html | module documentation ]]

!!!! DB MYSQL module
* new '''[[ http://www.opensips.org/html/docs/modules/3.2.x/db_mysql#modparam-tls-client-domain | tls_client_domain ]]''' module parameter - Quickly enable TLS usage for a given MySQL backend

!!!! Dialog module
* the [[ http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id297013 | dlg_list ]] and [[http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#dlg_end_dlg | dlg_end_dlg]] MI commands are now also using (display and accept) the dialog ID as dialog identifier - this is a single unique numerical ID ; Still, the h_label and h_id are accepted as old way to identify the dialogs.
* added new script function [[ http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id296110 | get_dialog_vals() ]] for fetching all the values of a dialog found by callid string. The dialog values are returned as a parallel arrays of names and values.

!!!! Dispatcher module
* the module now supports dynamically calculated weights for FreeSWITCH destinations! As such:
** the '''weight''' column type is now "string", as it can hold either an integer weight or a FreeSWITCH ESL socket. However, OpenSIPS still retains internal backwards-compatibility with the previous schema
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/dispatcher.html#id294490 | fetch_freeswitch_stats ]]''' - enables the dynamic weight calculation engine
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/dispatcher.html#id294579 | max_freeswitch_weight ]]''' - control the maximum weight of a FreeSWITCH destination computed using its runtime resource usage
* the round-robin algorithm now supports weights - each destination is chosen until its count reaches the weight, and only then moves to a different destination.
* new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/dispatcher.html#id293611 | ds_ping_maxfwd ]] - this parameter allows you to set a custom value for inserted Max-Forward header in the SIP ping requests generated by dispatcher module. If not used, it will let TM to add a default value.

!!!! DROUTING module
* the '''do_routing()''' accepts now any kind of variable for the routing group parameter; previously this was limited to AVP variables.
* added support for '''replicating the gateways and carrier status''' (upon changes) to other OpenSIPS nodes inside a cluster (using the clusterer module and BIN interface). New control parameters were added:
** [[ http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id294744 | replicate_status_to ]] - the cluster ID for replication pool
** [[ http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id294788 | accept_replicated_status ]] - the cluster ID for accepting incoming replication data

!!!! Cachedb_local module
* in previous versions the module had only one "database"(one hash); now multiple such databases can be defined, each of these representing an unique collection having it's own set of keys and values;
* the collections can be defined using ''cache_collections'' module parameter;
* each collection should be assigned to a ''cachedb_url''; same collection can be assign to multiple ''cachedb_urls'';
* for more information check the [[ http://www.opensips.org/html/docs/modules/3.2.x/cachedb_local | official documentation ]]

!!!! Load Balancer module
* the module now supports dynamically calculated max resource values for FreeSWITCH destinations! As such:
** resources may also be provisioned with a FreeSWITCH ESL socket URL as "max value" apart from an integer, as shown [[ http://www.opensips.org/html/docs/modules/3.2.x/load_balancer#id293646 | here ]]
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/load_balancer#id293646 | fetch_freeswitch_stats ]]''' - enables the runtime max resource value calculation engine
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/load_balancer#id293722 | initial_freeswitch_load ]]''' - the starting "max resource" value, until the first batch of statistics arrive from FreeSWITCH
* '''preserve destination's status during reload''' - preserve the status (enabled or not) of the destinations during a data reload from DB.
* more detailed return code for functions starting/continuing the LB process. In case of LB failure, the ret code may be:
** -1 generic internal error
** -2 no capacity left
** -3 no available destinations
** -4 bad resources
* added support for '''replicating the destination status''' (upon changes) to other OpenSIPS nodes inside a cluster (using the clusterer module and BIN interface). New control parameters were added:
** [[ http://www.opensips.org/html/docs/modules/3.2.x/load_balancer.html#id293769 | replicate_status_to ]] - the cluster ID for replication pool
** [[ http://www.opensips.org/html/docs/modules/3.2.x/load_balancer.html#id293813| accept_replicated_status ]] - the cluster ID for accepting incoming replication data


!!!! MI FIFO module

* trace mi datagram requests
** command
** parameters
** module name
* ''and'' replies
** code
** reason
** part of the reply message
* see [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_fifo#id293501 | official documentation ]];
* add blacklists/whitelists for traced mi commands (see [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_fifo#id293556 | official documentation ]]);

!!!! MI HTTP module

* trace mi datagram requests:
** command;
** parameters;
** module name;
* ''and'' replies:
** code;
** reason;
** part of the reply message;
* for more information check the [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_http#id249618 | official documentation ]];
* add blacklists/whitelists for traced mi commands (see [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_http#id249677 | official documentation ]]);

!!!! MI JSON module

* trace mi datagram requests:
** command;
** parameters;
** module name;
* ''and'' replies:
** code;
** reason;
** part of the reply message;
* for more information check the [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_json#id248031 | official documentation ]];
* add blacklists/whitelists for traced mi commands (see [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_json#id249622 | official documentation ]]);

!!!! MI XMLRPC NG module

* trace mi datagram requests:
** command;
** parameters;
** module name;
* ''and'' replies:
** code;
** reason;
** part of the reply message;
* for more information check the [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_xmlrpc_ng#id249627 | official documentation ]];
* add blacklists/whitelists for traced mi commands (see [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_xmlrpc_ng#id249686 | official documentation ]]);

!!!! MI DATAGRAM module


* trace mi datagram requests:
** command;
** parameters;
** module name;
* ''and'' replies:
** code;
** reason;
** part of the reply message;
* for more information check the [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_datagram#id293533 | official documentation ]];
* add blacklists/whitelists for traced mi commands (see [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_datagram#id293588 | official documentation ]]);

!!!! OSP module
* Support for SUBSCRIBE/NOTIFY CNAM;
* Updated for OSP Toolkit 4.12.0 (see [[ http://www.opensips.org/html/docs/modules/3.2.x/osp | official documentation ]] for more information).

!!!! PRESENCE module
* New ''E_PRESENCE_EXPOSED'' event that can be triggered over the MI interface and simulates the receiving of a PUBLISH message (see [[ http://www.opensips.org/html/docs/modules/3.2.x/presence#id294529 | documentation ]]);

!!!! PROTO HEP module
* be able to define hep destinations ( called [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_hep#id248031 | hep ids ]] ) that will be used by other modules;
* message payloads are now encapsulated using JSON format;
* new ''extra_correlation'' chunk used for correlating different types of messages( such as sip with xlog or rest, or transport messages with sip messages);

!!!! PROTO TCP module
* enable tracing for TCP [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp#id293589 | connection events ]] ( information about all accepted and created connections and information concerning closed connections );
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp#trace-destination|trace_destination]] module parameter to define tracing destination;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp#trace-on|trace_on]] module parameter to set tracing on and off at startup;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp#id293892|trace_filter_route]] module parameter to define a route which can be used for filtering traced connections;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp#tcp-trace|tcp_trace]] mi function to control tracing ( on/off switch );


!!!! PROTO TLS module
* enable tracing for TLS [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tls#id293824 | connection events ]] ( trace certificate info, master key along with information about all accepted and created connections and information concerning closed connections);
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tls#trace-destination|trace_destination]] module parameter to define tracing destination;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tls#trace-on|trace_on]] module parameter to set tracing on and off at startup;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tls#id294122|trace_filter_route]] module parameter to define a route which can be used for filtering traced connections;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tls#tls-trace|tls_trace]] mi function to control tracing ( on/off switch );



!!!! PROTO WS module
* enable tracing for WS [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_ws#id293434 | connection events ]] ( http request and reply used in web socket handshake along with information about all accepted and created connections and information concerning closed connections);
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_ws#trace-destination|trace_destination]] module parameter to define tracing destination;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_ws#trace-on|trace_on]] module parameter to set tracing on and off at startup;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_ws#id293729|trace_filter_route]] module parameter to define a route which can be used for filtering traced connections;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_ws#ws-trace|ws_trace]] mi function to control tracing ( on/off switch );

!!!! PROTO WSS module
* enable tracing for WSS [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#id293512 | connection events ]] ( http request and reply used in web socket handshake, certificate info, master key along with information about all accepted and created connections and information concerning closed connections);
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#trace-destination|trace_destination]] module parameter to define tracing destination;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#trace-on|trace_on]] module parameter to set tracing on and off at startup;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#id293818|trace_filter_route]] module parameter to define a route which can be used for filtering traced connections;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#wss-trace|wss_trace]] mi function to control tracing ( on/off switch );


!!!! Registrar module
* the obsolete functions ''registered()'' and ''is_other_contact()'' finally removed. You should we their replacements '''is_registered()'' and ''is_ip_registered()''.

!!!! REST client module
* '''Connection reusage''' support added for all synchronous requests (see commit [[ https://github.com/OpenSIPS/opensips/commit/79d02f379 | 79d02f379 ]]
* new '''[[ http://www.opensips.org/html/docs/modules/3.2.x/rest_client.html#id249608 | connect_poll_interval ]]''' module parameter - Allows complete control over how quickly we want to detect libcurl's completed TCP handshakes.
* new '''[[ http://www.opensips.org/html/docs/modules/3.2.x/rest_client.html#id248871 | max_async_transfers ]]''' module parameter - Maximum number of asynchronous HTTP transfers a single OpenSIPS worker is allowed to run simultaneously.
* new '''[[ http://www.opensips.org/html/docs/modules/3.2.x/rest_client.html#rest_put | rest_put() ]]''' script function, including async support (see commit [[ https://github.com/OpenSIPS/opensips/commit/c4807008b | c4807008b ]])
* ability to trace HTTP traffic using the [[ http://www.opensips.org/html/docs/modules/3.2.x/siptrace#id293469 | sip_trace() ]] function from [[ http://www.opensips.org/html/docs/modules/3.2.x/siptrace | siptrace ]] module

!!!! RTPProxy module
* add support to specify RTPProxy to record both streams in a single file;
* add support for the latest notification mechanism in the RTPProxy master branch;
* add new ''rtpproxy_stats'' command that returns statistics about the call, such as packet loss, messages received from each side, etc.;
* add new ''rtpproxy_all_stats'' command that returns advanced statistics about the call, such as SSRC changes. This is only available in the RTPProxy master branch.
* add support for mangling RTP session TTL for both caller and callee.

!!!! RTPEngine module
* pass the flags from the rtpengine_offer/answer() functions to rtpengine, even though they are not known by OpenSIPS - loose the flags check restrictions to relax integration with further extensions.
* add new ''sock_pvar'' parameter to all rtpengine_* functions that can be used to return the rtpengine socket used for that call;
* add new ''sdp_pvar'' parameter to rtpengine_offer/answer/manage() functions that will store the SDP returned by rtpengine - Note that if you store the SDP body in a pvar, it will not be reflected in the outgoing message automatically, you will have to do it manually.
* added new [[http://www.opensips.org/html/docs/modules/3.2.x/rtpengine.html#rtpengine.m.teardown | teardown]] MI command as alias to [[http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#dlg_end_dlg|dlg_end_dlg]] from dialog module

!!!! SIPMSGOPS module
* following the work on the multi-part body support, the following functions has changed in the module:
** old '''filter_body()''' and '''strip_body()''' functions merged under the new [[http://www.opensips.org/html/docs/modules/3.2.x/sipmsgops.html#id294132 | remove_body_part() ]] function
** old '''has_body()''' function (not yet removed) is replaced by the new [[http://www.opensips.org/html/docs/modules/3.2.x/sipmsgops.html#id294006 | has_body_part() ]] function
** old '''add_body()''' function removed and replaced by the new [[http://www.opensips.org/html/docs/modules/3.2.x/sipmsgops.html#id294201 | add_body_part() ]] function

!!!! SIPTRACE module
* use hep ids defined in '''proto_hep''' instead of defining the hep ids in siptrace using [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_hep#id248031 | trace_id]] module parameter;
* allow tracing multiple types of events(xlog messages, rest HTTP requests and replies) using [[ http://www.opensips.org/html/docs/modules/3.2.x/siptrace#id293469 | sip_trace ]] function;

!!!! STATISTICS module
* add support for statistic groups and easy iteration over them in the OpenSIPS script. New control module parameters:
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/statistics.html#modparam-stat-groups | stat_groups ]]''' - define the statistic groups before startup
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/statistics.html#modfunc-stat-iter-init | stat_iter_init() ]]''' - begin iteration over the statistics contained within a group
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/statistics.html#modfunc-stat-iter-next | stat_iter_next() ]]''' - fetch the current statistic, move on to the next one if possible
* allow stats to be updated via variables - the [[ http://www.opensips.org/html/docs/modules/3.2.x/statistics.html#id249610 | update_stat() ]] function accepts variables for passing the update value.

!!!! TOPOLOGY HIDING module
* new ''D'' flag of the [[ http://www.opensips.org/html/docs/modules/3.2.x/topology_hiding.html#id293540 | topology_hiding() ]] function forces the insertion of the dialog ID (DID) into the Contact Username, rather than Contact URI parameters (as before).

!!!! TM module
* Added support for dynamic branch manipulation - new functions were added to allow remote injecting of new branches into an ongoing transaction:
** [[ http://www.opensips.org/html/docs/modules/3.2.x/tm.html#t_inject_branches | t_inject_branches(source, flags) ]] - injects new branches;
** [[ http://www.opensips.org/html/docs/modules/3.2.x/tm.html#t_wait_for_new_branches | t_wait_for_new_branches() ]] - instruct the transaction to wait more (even if all current branches are completed) for possible new branch injections.
* new script variable ''$T_id'' to expose the transaction internal ID as an opaque hexa string.
* new [[http://www.opensips.org/html/docs/modules/3.2.x/tm.html#id295804|t_add_cancel_reason()]] script function to allow the insertion of a custom Reason header into a CANCEL request.


!!!! TLS MGM module
* support for the latest OpenSSL library version 1.1.0;
* for all module parameters accepting a TLS domain ID in their value, the syntax was changed : "tls_dom:value" was replaced with "[tls_dom]value", to avoid any conflicts between the separator and the actual value.
* '''full DB support added'' - instead of storing in DB the file path for certificate, private key, CA list and DH params, the DB holds the actual data (as BLOB). So, the TLS configuration is 100% DB driven, no files needed any more.


!!!! USRLOC module
* The E_UL_CONTACT_INSERT, E_UL_CONTACT_UPDATE and E_UL_CONTACT_DELETE events have now more attributes (full set to describe the contact):
** path string
** q value
** socket description
** branch flags
** expires
** uri as former "address"
* when listing contact records via MI command, the '''Contact ID''' is also printed (this helps with correlating the in-memory records with the DB records)
to:
* TBA
March 16, 2017, at 06:25 PM by ionutionita92 -
Added line 43:
Added line 48:
March 16, 2017, at 06:24 PM by ionutionita92 -
Changed lines 6-7 from:
!!! [[Documentation/Migration-2-1-0-to-3-2-0|Migration from 2.1.x to 3.2.0]]
to:
!!! [[Documentation/Migration-2-2-0-to-3-2-0|Migration from 2.2.x to 3.2.0]]
Changed lines 13-20 from:
* default DB engine for MySQL was moved from '''MyISAM to InnoDB'''
* '''debug''' MI command was renamed to '''log_level''' (same functionality, input and output)
* when '''dns_try_ipv6''' is set, try to resolve first as IPv6 (AAA record) instead of IPv4 (A record)
* auto-correction of timer drifting - correlate and keep the internal timer in sync with the OS timer
* 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)

to:

* support for armv6 and armv7 locking
* support for fast-locks on mips and mips64el architectures
* support for native umutex in freebsd
* added a new statistic for the SHM memory groups that prints the maximum memory used of a group
* added '''content-aware body (multi-part) changing''' - this allows parsing and modification of the body via the "body parts" list; parts can be modified (with function or lumps), can be deleted and new ones can be added. Any type of modification (and any of them) is allowed. The body is completely rebuild based on the resulting list of body parts. Also we support transparent transitions from no body to body, single part body to multi-part body or the other way around - with automatic update of the Content-Type and Content-Len headers, of course.
* '''major rework of body and SDP parsing''' - unified and consistent way of parsing and accessing the body parts (single or multi part body). This results in a transparent way of parsing and freeing the parts content (like SDP or ISUP).
* address '''potential starvation for the timer tasks''' - even if the timer tasks have priority in the asyns reactor (for being handled), if all the worker processes are already busy in handling some SIP tasks which takes too long, may lead into a starvation of the timer tasks. For the moment we address this by creating a extra worker processes (similar to the SIP workers) which is dedicated to executing the timer tasks. Still, based on their availability and load, the SIP workers are able to consume timer tasks.
* added the first basic version of an '''IPC support''' - this is an internal mechanism that allows any process to pass a job to another process. the IPC support is internally used by the '''Event Routing''' module and by the TCP stack. In the next version, more custom existing inter-process communication will be migrated to this generic IPC support. Also, the IPC mechanism opens new possibilities when comes to improvements or creation of new features.


Changed lines 26-43 from:
* '''debug''' global parameter was 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 [[Documentation/Script-CoreParameters-3-2#debug_mode|debug_mode]] parameter to replace the outdated [[Documentation/Script-CoreParameters-3-2#fork|fork]] parameter
* '''script flags and functions have been removed'''
* global parameters '''user/uid''' and '''group/gid''' were removed (use the command line options for these settings)
* '''new string transformations''':
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc23 | {s.width} ]] - truncates or expands the input to the given len
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc27 | {s.b64encode} ]] - represents binary input data into ASCII
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc28 | {s.b64decode} ]] - decodes Base64 input
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc29 | {s.xor} ]] - encodes the input by XOR'ing with a key
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc22 | {s.trim}, {s.triml}, {s.trimr} ]] - string trimming transformations
* '''ViM syntax highlighting''' for OpenSIPS config script
* 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
* for-each statement: add '''support for $json iterators'''
* new '''$cfg_file, $cfg_line''' script variables to return the name of the config file and the line inside the file.
* new [[http://www.opensips.org/Documentation/Script-CoreParameters-3-2#memgroup|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.
* new '''xlog_default_level''' parameter to configure the default logging level for all xlog() prints.
to:

* new [[http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc47 | '''$xlog_level''']] core pseudo-variable that prints the level of message printed at syslog
* new custom index '''append''' for $avp variables to allow you to add new values at the end of the list (at the bottom of the stack) - '' $(avp(name)[append]) = "last value"; ''
* '''$rb''' can now take as name a mime, in order to access the body parts by mime : $rb(application/sdp) - get the first SDP body part ; $(rb(application/isup)[-1]) - get the last ISUP body part
* the the xlog messages include now the time and process ID when printing to stderr (to be consistent with the syslog logging)

!!!! Async layer

* new '''launch()''' statement to starts a function/job in async mode and continue the script immediately, without waiting for the job to be terminated. A "report" route may be triggered (outside the context of the msg launching the job) when the job is terminated to be able to access the return code and the possible returned data. See for [[http://www.opensips.org/Documentation/Script-Async-3-2#toc5|more]].
* '''new internal (non-scripting) support for async I/O operations''' - internal functions can register FDs into the reactor in order to be triggered when data is available (and run a handler). For example this is internally used by the [[http://www.opensips.org/html/docs/modules/3.2.x/cgrates.html|cgrates]] module in order to handle its communication with the external ''cgrates'' engine
* enhanced the ASYNC API to allows '''resume via non-FD events (outside I/O reactor scope)''' ; The resume/suspect logic is reused, but the waiting and triggering can now by done via other means (like event based) rather than being I/O reactor based.

!!!! OpenSIPS Enhanced tracing

Starting with this versions multiple events can be traced, other than sip packets. There are two types of events:
* events that take place when a certain type of SIP packet is processed, events happening in a '''sip context that can be controlled using [[http://www.opensips.org/html/docs/modules/3.2.x/siptrace|siptrace]] module;
* events that don't take place in a sip context that are controlled directly via [[http://www.opensips.org/html/docs/modules/3.2.x/proto_hep|proto_hep]] module;
At the moment, OpenSIPS 3.2 supports tracing for the following sip context events:
* xlog messages;
* [[http://www.opensips.org/html/docs/modules/3.2.x/rest_client|rest_client]] module queries ( requests and replies );
These events are controlled via [[http://www.opensips.org/html/docs/modules/3.2.x/siptrace#id293458|sip_trace]] function which was enhanced with a new parameter through which one can specify which of these events shall be traced. All these events will be traced in the sip context that is given to the function, that is if '''rest''' tracing is activated for a dialog, all rest requests and replies that will occur for that dialog shall be traced.
The following non sip events can be traced:
* transport layer events( currently available for [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp|TCP]], [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tls|TLS]], [[http://www.opensips.org/html/docs/modules/3.2.x/proto_ws|WS]] and [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss|WSS]] transport layers;
* mi commands ( all mi protocols are available );
For these types of events the hep ids defined directly in [[http://www.opensips.org/html/docs/modules/3.2.x/proto_hep|proto_hep]] module, since there is no sip context( see [[http://www.opensips.org/html/docs/modules/3.2.x/mi_fifo#id293508|mi_fifo]] exmaple).
For the mi commands there is the posibilty to define blacklists or whitlists of commands to be traced in order to avoid tracing commands that are not useful( see [[http://www.opensips.org/html/docs/modules/3.2.x/mi_fifo#id293563 | mi_fifo ]] example ).
For transport layer protocols the unit we are working with is a connection. All protocol events such as connect or accept events, connection closed events for TCP, certificate information and master key for TLS and WSS and http request and reply used during the handshake for WS and WSS. Tracing can be activated via MI ( [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#wss-trace|WSS]] example ) and the connections that will be traced can be controlled via a filter route in which users will ses source and destination IPs and ports for that connection ( [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#id293818|WSS]] example ).
Changed lines 55-96 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.
* overall allocator rework
* three allocators: F_MALLOC, QM_MALLOC, HP_MALLOC. Any of them can be run in troubleshooting mode with -DDBG_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)
* logging improvements on out-of-memory errors, DB errors, TCP errors, parsing errors, memory logging

!!!!! 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 3.2 is not backward compatible !''

!!!! CLUSTERER module (new)
* The new [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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.

!!!! DB_SQLITE module (new)
New DB module to provides SQLite backend support for OpenSIPS.

!!!! PROTO_BIN module (new)
OpenSIPS 3.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 [[http://www.opensips.org/html/docs/modules/3.2.x/proto_bin.html|module documentation]]

!!!! 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.

!!!! 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.

!!!! 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 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.\\
See the [[http://www.opensips.org/html/docs/modules/3.2.x/sql_cacher.html|module documentation]]

!!!! 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.

!!!! 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 [[http://www.opensips.org/html/docs/modules/3.2.x/event_virtual.html|module documentation]]
to:


!!!! CGRATES module (new)
* the [[http://www.opensips.org/html/docs/modules/3.2.x/cgrates.html|cgrates]] module provides an interface to the CGRateS rating eninge. Using this module you can do multi-tenant prepaid and postpaid billing in the OpenSIPS script. Read more information [[https://blog.opensips.org/2017/01/25/real-time-billing-using-cgrates|here]].

!!!! EVENT ROUTING module (new)
* The [[http://www.opensips.org/html/docs/modules/3.2.x/event_routing.html|Event (based) Routing]] module, or shortly the EBR module, provides a mechanism that allows different SIP processings (of messages in script) to communicate and synchronize between through OpenSIPS Events.
* This mechanism is based on the Subscribe-Notify concept. Any SIP processing may subscribe to various OpenSIPS Events Upon Event raising, the subscriber will be notified, so it will be able to make use of the data attached to the Event. Note that the Event raising may take place in a completely different SIP processing context, completely unrelated to the subscriber processing.
* The EBR support allows implementation of more advanced SIP scenarios like Push Notification or Call Pickup

!!!! FREESWITCH module (new)
* the [[ http://www.opensips.org/html/docs/modules/3.2.x/freeswitch.html | freeswitch ]] module acts as a connection manager for FreeSWITCH Event Socket Layer sockets. It currently provides dynamic statistics from FreeSWITCH in order to update routing behavior for the ''dispatcher'' and ''load_balancer'' modules.

!!!! SIP_I module (new)
* the [[ http://www.opensips.org/html/docs/modules/3.2.x/sip_i.html | SIP-I ]] module provides '''SIP-I to SIP gatewaying and ISUP awarness''' by offering the possibility of processing ISDN User Part(ISUP) messages encapsulated in SIP. The available operations are: reading and modifying parameters from an ISUP message, removing or adding new optional parameters, adding an ISUP part to a SIP message body. This is done explicitly via script variables and functions. The supported ISUP message types are only the ones that can be included in a SIP message according to the SIP-I(SIP with encapsulated ISUP) protocol defined by ITU-T.


!!!! MID_REGISTRAR module (new)
* the [[ http://www.opensips.org/html/docs/modules/3.2.x/mid_registrar.html | mid_registrar ]] enables a series of scenarios in which OpenSIPS acts as a ''SIP registration front-end''. This novel SIP platform component is able to '''throttle down''' SIP registration traffic rates on the way to existing farms of SIP registrars, by extending contact expiration intervals. Moreover, it can also be configured to take over all parallel forking duties for these existing SIP infrastructures.

!!!! RABBITMQ module (new)
* a new [[http://www.opensips.org/html/docs/modules/3.2.x/rabbitmq.html|RabbitMQ]] module provides a more flexible and easy to use interface to a RabbitMQ server. Check out [[https://blog.opensips.org/2017/02/08/rabbitmq-evolution-with-opensips-3-2/|more]]!

!!!! XML module (new)
* the [[ http://www.opensips.org/html/docs/modules/3.2.x/xml.html | XML ]] module allows the processing of XML documents from the script by exposing a variable that provides access to the elements and their contents and attributes. In this way you can modify, add or remove nodes in the XML tree.
Changed lines 82-139 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
* '''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 [[http://lists.opensips.org/pipermail/news/2016-March/000451.html|official announcement]] and the [[http://www.opensips.org/html/docs/modules/3.2.x/acc|documentation]]

!!!! 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.

!!!! 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.

!!!! B2B_ENTITIES module
* fixed the handling for nested requests by properly implementing "491 Pending" support.


!!!! B2B_SCA
* the parameter '''table_name''' moved to default value ''b2b_sca'' (from ''sca'')

!!!! CACHEDB_REDIS
* the '''[[http://www.opensips.org/html/docs/modules/3.2.x/cachedb_redis.html#id248934|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.

!!!! CFGUTILS module
* new asynchronous [[ http://www.opensips.org/html/docs/modules/3.2.x/cfgutils.html#id294676|sleep() and usleep()]] functions. OpenSIPS will not block anymore while performing a sleep operation.

!!!! CPL-C module
* module is renamed to '''cpl_c''' without any additional changes.

!!!! 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.

!!!! DB_POSTGRES
* new parameter '''max_db_queries''' to define how many time a DB query should be retried.

!!!! 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.

!!!! DIALOG module
* 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 ).
* integrated with the [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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)
* allow '''unset_dlg_profile(profile,[value])''' to be used from REQUEST route too.
* new '''profile_end_dlgs''' MI command to terminate all the dialogs for a profile (a value may be also provided).

!!!! DIALPLAN module
* new '''dp_show_partiton''' MI command to list all the details on the defined partitions.

!!!! 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)
* new parameter '''full''' to the '''ds_list''' MI command. This new optional parameter additionally print the weight, priority and description for the listed destinations.
* the '''partitions''' parameter can now be given as a multi-line string

!!!! DB_TEXT module
* new '''dbt_reload''' MI command - causes db_text module to reload cached tables from disk.

!!!! DB_VIRTUAL module
* added '''async raw query support'''
to:
* '''diameter''' support has been removed;
* extra variables engine was reworked(including both extra and leg engine); '''*_extra''' and '''*_extra_bye''' parameters have been replaced with '''extra_fields''' with which you can define tags to be used in the script using '''acc_extra''' script variable; the variable can be set/modified until the accounting is being made;
* leg variables engine was also reworked; now you can define leg variables for each of the available backends(log, db, aaa, evi); the modparam section is the same as for the '''extra_fields''' parameter whereas in the script you can use '''acc_leg''' variable to set the leg values; the variable can be indexed with the index of the leg; it accepts both positive index(0 is the first leg) and negative indexes(-1 is the last leg);
* the leg accounting engine is not based anymore on AVPs; each time you want to create a new leg you have to call '''acc_new_leg''' function which will create a new leg for you; the value of the last leg shall be accessed with '''acc_current_leg''' variable;
* for further information read the [[ http://www.opensips.org/html/docs/modules/3.2.x/acc#id294905 | docs ]]

!!!! Call Center module
* new ''queue_pos_param'' module paramter to report the queue position - the parameter value is the name of an SIP URI parameter to be used to report the position in the waiting queue when sending the call to media server for onwait/queue playback. The position 0 means it is the next call to be delivered to an agent.

!!!! Clusterer module
* the module was reworked and enhanced in order to provide a better node availability detection mechanism and inter-cluster routing of BIN messages (if the link between nodes A and B is down the message might be routed through node C). As there were no explicit probes at the clusterer module level, an active pinging mechanism was introduced which establishes the state of the connections of the current node with other nodes in the cluster at BIN interface level. Based on this, a link-state resembling protocol was implemented in order to learn the cluster topology and compute a routing 'table' used for sending BIN messages between nodes. Also the possibility of adding new nodes to the cluster without additional provisioning for the existing components was introduced.
* new module parameters for tweaking the probing mechanism:
** [[ http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#id293821 | ping_interval ]] - the interval in seconds between regular pings sent to a neighbour node
** [[ http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#id293857 | ping_timeout ]] - the time in milliseconds to wait for a reply to a previously sent ping before retrying or considering the link with the neighbour node down. This is also the interval between successive retries if the send fails.
** [[ http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#id293894 | node_timeout ]] - the time in seconds to wait before pinging is restarted for a failed node
* the module's *''_col'' parameters were changed to reflect the modified DB column names
* the MI command [[ http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#id293983 | clusterer_list ]] now lists information about the other nodes in the cluster from the current node's perspective
* new MI command [[ http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html#id294040 | clusterer_list_topology ]] that lists the cluster's topology from the current node's perspective as an adjacency list
* for further information read the [[ http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html | module documentation ]]

!!!! DB MYSQL module
* new '''[[ http://www.opensips.org/html/docs/modules/3.2.x/db_mysql#modparam-tls-client-domain | tls_client_domain ]]''' module parameter - Quickly enable TLS usage for a given MySQL backend

!!!! Dialog module
* the [[ http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id297013 | dlg_list ]] and [[http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#dlg_end_dlg | dlg_end_dlg]] MI commands are now also using (display and accept) the dialog ID as dialog identifier - this is a single unique numerical ID ; Still, the h_label and h_id are accepted as old way to identify the dialogs.
* added new script function [[ http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id296110 | get_dialog_vals() ]] for fetching all the values of a dialog found by callid string. The dialog values are returned as a parallel arrays of names and values.

!!!! Dispatcher module
* the module now supports dynamically calculated weights for FreeSWITCH destinations! As such:
** the '''weight''' column type is now "string", as it can hold either an integer weight or a FreeSWITCH ESL socket. However, OpenSIPS still retains internal backwards-compatibility with the previous schema
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/dispatcher.html#id294490 | fetch_freeswitch_stats ]]''' - enables the dynamic weight calculation engine
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/dispatcher.html#id294579 | max_freeswitch_weight ]]''' - control the maximum weight of a FreeSWITCH destination computed using its runtime resource usage
* the round-robin algorithm now supports weights - each destination is chosen until its count reaches the weight, and only then moves to a different destination.
* new module parameter [[http://www.opensips.org/html/docs/modules/3.2.x/dispatcher.html#id293611 | ds_ping_maxfwd ]] - this parameter allows you to set a custom value for inserted Max-Forward header in the SIP ping requests generated by dispatcher module. If not used, it will let TM to add a default value.
Changed lines 118-149 from:
* '''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.
* 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).

!!!! EMERGENCY module
* added support for '''subscriber / notify''' functions.

!!!! 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.

!!!! 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 [[http://www.opensips.org/html/docs/modules/3.2.x/ldap.html#ldap-search-async-fn|here]]

!!!! LOAD BALANCER module
* 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.
* '''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.

!!!! 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'''

!!!! MI_XMLRPC_NG
* '''mi_xmlrpc_ng_root''' module parameter was renamed to '''http_root'''
* 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


!!!! 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 [[http://www.opensips.org/html/docs/modules/3.2.x/nathelper.html|here]]. Read paragraph two of the '''Overview''' section to understand how to use this feature.

!!!! NET_TCP module
* '''tcp_accept_aliases''' is now by default set to on/enabled
to:
* the '''do_routing()''' accepts now any kind of variable for the routing group parameter; previously this was limited to AVP variables.
* added support for '''replicating the gateways and carrier status''' (upon changes) to other OpenSIPS nodes inside a cluster (using the clusterer module and BIN interface). New control parameters were added:
** [[ http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id294744 | replicate_status_to ]] - the cluster ID for replication pool
** [[ http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id294788 | accept_replicated_status ]] - the cluster ID for accepting incoming replication data

!!!! Cachedb_local module
* in previous versions the module had only one "database"(one hash); now multiple such databases can be defined, each of these representing an unique collection having it's own set of keys and values;
* the collections can be defined using ''cache_collections'' module parameter;
* each collection should be assigned to a ''cachedb_url''; same collection can be assign to multiple ''cachedb_urls'';
* for more information check the [[ http://www.opensips.org/html/docs/modules/3.2.x/cachedb_local | official documentation ]]

!!!! Load Balancer module
* the module now supports dynamically calculated max resource values for FreeSWITCH destinations! As such:
** resources may also be provisioned with a FreeSWITCH ESL socket URL as "max value" apart from an integer, as shown [[ http://www.opensips.org/html/docs/modules/3.2.x/load_balancer#id293646 | here ]]
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/load_balancer#id293646 | fetch_freeswitch_stats ]]''' - enables the runtime max resource value calculation engine
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/load_balancer#id293722 | initial_freeswitch_load ]]''' - the starting "max resource" value, until the first batch of statistics arrive from FreeSWITCH
* '''preserve destination's status during reload''' - preserve the status (enabled or not) of the destinations during a data reload from DB.
* more detailed return code for functions starting/continuing the LB process. In case of LB failure, the ret code may be:
** -1 generic internal error
** -2 no capacity left
** -3 no available destinations
** -4 bad resources
* added support for '''replicating the destination status''' (upon changes) to other OpenSIPS nodes inside a cluster (using the clusterer module and BIN interface). New control parameters were added:
** [[ http://www.opensips.org/html/docs/modules/3.2.x/load_balancer.html#id293769 | replicate_status_to ]] - the cluster ID for replication pool
** [[ http://www.opensips.org/html/docs/modules/3.2.x/load_balancer.html#id293813| accept_replicated_status ]] - the cluster ID for accepting incoming replication data


!!!! MI FIFO module

* trace mi datagram requests
** command
** parameters
** module name
* ''and'' replies
** code
** reason
** part of the reply message
* see [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_fifo#id293501 | official documentation ]];
* add blacklists/whitelists for traced mi commands (see [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_fifo#id293556 | official documentation ]]);

!!!! MI HTTP module

* trace mi datagram requests:
** command;
** parameters;
** module name;
* ''and'' replies:
** code;
** reason;
** part of the reply message;
* for more information check the [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_http#id249618 | official documentation ]];
* add blacklists/whitelists for traced mi commands (see [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_http#id249677 | official documentation ]]);

!!!! MI JSON module

* trace mi datagram requests:
** command;
** parameters;
** module name;
* ''and'' replies:
** code;
** reason;
** part of the reply message;
* for more information check the [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_json#id248031 | official documentation ]];
* add blacklists/whitelists for traced mi commands (see [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_json#id249622 | official documentation ]]);

!!!! MI XMLRPC NG module

* trace mi datagram requests:
** command;
** parameters;
** module name;
* ''and'' replies:
** code;
** reason;
** part of the reply message;
* for more information check the [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_xmlrpc_ng#id249627 | official documentation ]];
* add blacklists/whitelists for traced mi commands (see [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_xmlrpc_ng#id249686 | official documentation ]]);

!!!! MI DATAGRAM module


* trace mi datagram requests:
** command;
** parameters;
** module name;
* ''and'' replies:
** code;
** reason;
** part of the reply message;
* for more information check the [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_datagram#id293533 | official documentation ]];
* add blacklists/whitelists for traced mi commands (see [[ http://www.opensips.org/html/docs/modules/3.2.x/mi_datagram#id293588 | official documentation ]]);
Changed lines 212-239 from:
* 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()'''

!!!! PIKE module
* new '''pike_rm''' MI command to unblock a detected IP address.

!!!! PROTO_TCP module
* parameter '''tcp_async''' is now by default on !

!!!! 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.

!!!! 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.

!!!! RATELIMT module
* integrated with the [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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)

!!!! 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 [[ http://www.opensips.org/html/docs/modules/3.2.x/registrar.html#id294364 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/aaa_radius.html#id294274 | here]].

!!!! 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 [[http://www.opensips.org/html/docs/modules/3.2.x/rest_client.html#rest_append_hf | module doc]].
to:
* Support for SUBSCRIBE/NOTIFY CNAM;
* Updated for OSP Toolkit 4.12.0 (see [[ http://www.opensips.org/html/docs/modules/3.2.x/osp | official documentation ]] for more information).

!!!! PRESENCE module
* New ''E_PRESENCE_EXPOSED'' event that can be triggered over the MI interface and simulates the receiving of a PUBLISH message (see [[ http://www.opensips.org/html/docs/modules/3.2.x/presence#id294529 | documentation ]]);

!!!! PROTO HEP module
* be able to define hep destinations ( called [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_hep#id248031 | hep ids ]] ) that will be used by other modules;
* message payloads are now encapsulated using JSON format;
* new ''extra_correlation'' chunk used for correlating different types of messages( such as sip with xlog or rest, or transport messages with sip messages);

!!!! PROTO TCP module
* enable tracing for TCP [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp#id293589 | connection events ]] ( information about all accepted and created connections and information concerning closed connections );
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp#trace-destination|trace_destination]] module parameter to define tracing destination;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp#trace-on|trace_on]] module parameter to set tracing on and off at startup;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp#id293892|trace_filter_route]] module parameter to define a route which can be used for filtering traced connections;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp#tcp-trace|tcp_trace]] mi function to control tracing ( on/off switch );


!!!! PROTO TLS module
* enable tracing for TLS [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tls#id293824 | connection events ]] ( trace certificate info, master key along with information about all accepted and created connections and information concerning closed connections);
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tls#trace-destination|trace_destination]] module parameter to define tracing destination;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tls#trace-on|trace_on]] module parameter to set tracing on and off at startup;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tls#id294122|trace_filter_route]] module parameter to define a route which can be used for filtering traced connections;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tls#tls-trace|tls_trace]] mi function to control tracing ( on/off switch );



!!!! PROTO WS module
* enable tracing for WS [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_ws#id293434 | connection events ]] ( http request and reply used in web socket handshake along with information about all accepted and created connections and information concerning closed connections);
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_ws#trace-destination|trace_destination]] module parameter to define tracing destination;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_ws#trace-on|trace_on]] module parameter to set tracing on and off at startup;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_ws#id293729|trace_filter_route]] module parameter to define a route which can be used for filtering traced connections;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_ws#ws-trace|ws_trace]] mi function to control tracing ( on/off switch );

!!!! PROTO WSS module
* enable tracing for WSS [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#id293512 | connection events ]] ( http request and reply used in web socket handshake, certificate info, master key along with information about all accepted and created connections and information concerning closed connections);
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#trace-destination|trace_destination]] module parameter to define tracing destination;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#trace-on|trace_on]] module parameter to set tracing on and off at startup;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#id293818|trace_filter_route]] module parameter to define a route which can be used for filtering traced connections;
* new [[http://www.opensips.org/html/docs/modules/3.2.x/proto_wss#wss-trace|wss_trace]] mi function to control tracing ( on/off switch );


!!!! Registrar module
* the obsolete functions ''registered()'' and ''is_other_contact()'' finally removed. You should we their replacements '''is_registered()'' and ''is_ip_registered()''.

!!!! REST client module
* '''Connection reusage''' support added for all synchronous requests (see commit [[ https://github.com/OpenSIPS/opensips/commit/79d02f379 | 79d02f379 ]]
* new '''[[ http://www.opensips.org/html/docs/modules/3.2.x/rest_client.html#id249608 | connect_poll_interval ]]''' module parameter - Allows complete control over how quickly we want to detect libcurl's completed TCP handshakes.
* new '''[[ http://www.opensips.org/html/docs/modules/3.2.x/rest_client.html#id248871 | max_async_transfers ]]''' module parameter - Maximum number of asynchronous HTTP transfers a single OpenSIPS worker is allowed to run simultaneously.
* new '''[[ http://www.opensips.org/html/docs/modules/3.2.x/rest_client.html#rest_put | rest_put() ]]''' script function, including async support (see commit [[ https://github.com/OpenSIPS/opensips/commit/c4807008b | c4807008b ]])
* ability to trace HTTP traffic using the [[ http://www.opensips.org/html/docs/modules/3.2.x/siptrace#id293469 | sip_trace() ]] function from [[ http://www.opensips.org/html/docs/modules/3.2.x/siptrace | siptrace ]] module

!!!! RTPProxy module
* add support to specify RTPProxy to record both streams in a single file;
* add support for the latest notification mechanism in the RTPProxy master branch;
* add new ''rtpproxy_stats'' command that returns statistics about the call, such as packet loss, messages received from each side, etc.;
* add new ''rtpproxy_all_stats'' command that returns advanced statistics about the call, such as SSRC changes. This is only available in the RTPProxy master branch.
* add support for mangling RTP session TTL for both caller and callee.

!!!! RTPEngine module
* pass the flags from the rtpengine_offer/answer() functions to rtpengine, even though they are not known by OpenSIPS - loose the flags check restrictions to relax integration with further extensions.
* add new ''sock_pvar'' parameter to all rtpengine_* functions that can be used to return the rtpengine socket used for that call;
* add new ''sdp_pvar'' parameter to rtpengine_offer/answer/manage() functions that will store the SDP returned by rtpengine - Note that if you store the SDP body in a pvar, it will not be reflected in the outgoing message automatically, you will have to do it manually.
* added new [[http://www.opensips.org/html/docs/modules/3.2.x/rtpengine.html#rtpengine.m.teardown | teardown]] MI command as alias to [[http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#dlg_end_dlg|dlg_end_dlg]] from dialog module

!!!! SIPMSGOPS module
* following the work on the multi-part body support, the following functions has changed in the module:
** old '''filter_body()''' and '''strip_body()''' functions merged under the new [[http://www.opensips.org/html/docs/modules/3.2.x/sipmsgops.html#id294132 | remove_body_part() ]] function
** old '''has_body()''' function (not yet removed) is replaced by the new [[http://www.opensips.org/html/docs/modules/3.2.x/sipmsgops.html#id294006 | has_body_part() ]] function
** old '''add_body()''' function removed and replaced by the new [[http://www.opensips.org/html/docs/modules/3.2.x/sipmsgops.html#id294201 | add_body_part() ]] function
Changed lines 285-297 from:
* '''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_id'''s via mi; if no parameter used it shall affect all the '''trace_id'''s; 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 [[http://www.opensips.org/html/docs/modules/3.2.x/siptrace|docs]] and the [[http://lists.opensips.org/pipermail/news/2016-March/000453.html|official announcement]] for more information;

!!!! SIPCAPTURE module
* 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, [[https://github.com/sipcapture/HEP/blob/master/docs/HEP3_rev11.pdf|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;
* read the [[http://www.opensips.org/html/docs/modules/3.2.x/sipcapture|docs]] and the [[http://lists.opensips.org/pipermail/news/2016-March/000453.html|official announcement]] for more information;

to:
* use hep ids defined in '''proto_hep''' instead of defining the hep ids in siptrace using [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_hep#id248031 | trace_id]] module parameter;
* allow tracing multiple types of events(xlog messages, rest HTTP requests and replies) using [[ http://www.opensips.org/html/docs/modules/3.2.x/siptrace#id293469 | sip_trace ]] function;

!!!! STATISTICS module
* add support for statistic groups and easy iteration over them in the OpenSIPS script. New control module parameters:
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/statistics.html#modparam-stat-groups | stat_groups ]]''' - define the statistic groups before startup
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/statistics.html#modfunc-stat-iter-init | stat_iter_init() ]]''' - begin iteration over the statistics contained within a group
** '''[[ http://www.opensips.org/html/docs/modules/3.2.x/statistics.html#modfunc-stat-iter-next | stat_iter_next() ]]''' - fetch the current statistic, move on to the next one if possible
* allow stats to be updated via variables - the [[ http://www.opensips.org/html/docs/modules/3.2.x/statistics.html#id249610 | update_stat() ]] function accepts variables for passing the update value.

!!!! TOPOLOGY HIDING module
* new ''D'' flag of the [[ http://www.opensips.org/html/docs/modules/3.2.x/topology_hiding.html#id293540 | topology_hiding() ]] function forces the insertion of the dialog ID (DID) into the Contact Username, rather than Contact URI parameters (as before).
Changed lines 299-308 from:
* 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.
* 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 [[https://github.com/OpenSIPS/opensips/commit/7d090c3|in the commit log]]).


!!!! 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.

!!!! UAC module
* '''CSEQ is properly increased''' during the authentication process.
to:
* Added support for dynamic branch manipulation - new functions were added to allow remote injecting of new branches into an ongoing transaction:
** [[ http://www.opensips.org/html/docs/modules/3.2.x/tm.html#t_inject_branches | t_inject_branches(source, flags) ]] - injects new branches;
** [[ http://www.opensips.org/html/docs/modules/3.2.x/tm.html#t_wait_for_new_branches | t_wait_for_new_branches() ]] - instruct the transaction to wait more (even if all current branches are completed) for possible new branch injections.
* new script variable ''$T_id'' to expose the transaction internal ID as an opaque hexa string.
* new [[http://www.opensips.org/html/docs/modules/3.2.x/tm.html#id295804|t_add_cancel_reason()]] script function to allow the insertion of a custom Reason header into a CANCEL request.


!!!! TLS MGM module
* support for the latest OpenSSL library version 1.1.0;
* for all module parameters accepting a TLS domain ID in their value, the syntax was changed : "tls_dom:value" was replaced with "[tls_dom]value", to avoid any conflicts between the separator and the actual value.
* '''full DB support added'' - instead of storing in DB the file path for certificate, private key, CA list and DH params, the DB holds the actual data (as BLOB). So, the TLS configuration is 100% DB driven, no files needed any more.

Changed lines 313-320 from:
* '''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 [[http://www.opensips.org/html/docs/modules/3.2.x/usrloc.html#max_contact_delete|max_contact_delete]] parameter to specify how many delete requests shall be put together inside a single query.
* '''domain''' DB column is now by default NULL (to save DB space) versus empty string.
* 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.

!!!! 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 [[http://www.opensips.org/html/docs/modules/3.2.x/uri.html|here]]
----
to:
* The E_UL_CONTACT_INSERT, E_UL_CONTACT_UPDATE and E_UL_CONTACT_DELETE events have now more attributes (full set to describe the contact):
** path string
** q value
** socket description
** branch flags
** expires
** uri as former "address"
* when listing contact records via MI command, the '''Contact ID''' is also printed (this helps with correlating the in-memory records with the DB records)
----
March 31, 2016, at 09:38 AM by 85.204.8.247 -
Added lines 52-54:
!!!! CLUSTERER module (new)
* The new [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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 '''[[http://www.opensips.org/html/docs/modules/3.2.x/cachedb_redis.html#id248934|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 3.2 release (TODO list)

|| border=1
||! Importance ||! Module ||! Description ||
||xxxx || TM ||even 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 ||
||xxx || DIALOG ||New events for dialog matched, terminated, etc ||
||xxx || DIALOG ||control 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. ||
||xxx || USRLOC ||distributed storage via a NoSQL DB ||
||xxx || DIALOG ||distributed storage via a NoSQL DB ||
||xxx || DIALOG ||be able to end all dialogs belonging to a certain profile (MI only) ||
||xxx || SIPCAPTURE ||TCP support ||
||xxx || RTPProxy ||add ICE support for rtpproxy ||
||xxx || Event Interface ||add ZeroMQ support for Event Interface ||
||xxx || core ||send function (including from TM) should return a dedicated ret code to indicate network errors (failure in sending) ||
||xxx || core ||fix insert_new_lump()/append_new_lump() logic throughout lumps_len() ||
||xxx || core ||once fixed, replace all single anchor_lump()+insert_new_lump_{before,after}() calls with the simpler insert_new_lump() call ||
||xxx || new ||Integrate OpenSIPS with libpurple library for IM and Presence ||
||xx || TLS core ||add 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) ||
||xx || DROUTING || Allow the option to call do_routing with a particular number, but to propagate downstream a different number ( useful for number portability scenarios ) ||
||xx || TM ||allow dynamic number of branches per transaction (on demand) ||
||xx || Statistics Interface ||replace the BIG LOCK (if other arch than i386) with multiple shared locks (to protect the values) ||
||xx || new ||new cachedb_virtual modules, similar to db_virtual, but for NoSQL databases ||
||xx || db_virtual ||Opensips 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 ||
||xx || B2B ||Support for attended transfers on B2BUA
||xx || event_datagram ||Instead 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 ||
||xx || new ||support for RFC5626 - Managing Client-Initiated Connections in SIP ||
||x || new ||new module mi_stream to provide MI interaction via connection oriented links (TCP or fifo) ||
||x || new ||RFC6140 Registration for Multiple Phone Numbers ||
||x || AVPOPS ||Regexp based filter for avp_db_load - what AVPs to be loaded ||
||x || core ||Be able to specify multiple keys with the "cache_fetch" MI command ||
||x || core ||Handle OpenSIPS variable expansion within the format string of assert() ||
||x || script ||Consider implementing the "continue" and "break" keywords inside while and for-each ||
||x || cachedb core ||Allow results to be written in any PV (not just $avp) ||
||x || script ||Integer 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 [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/clusterer.html|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, [[https://github.com/sipcapture/HEP/blob/master/docs/HEP3_rev11.pdf|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, [[https://github.com/sipcapture/HEP/blob/master/docs/HEP3_rev11.pdf|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 [[http://lists.opensips.org/pipermail/news/2016-March/000451.html|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 [[http://lists.opensips.org/pipermail/news/2016-March/000451.html|official announcement]] and the [[http://www.opensips.org/html/docs/modules/3.2.x/acc|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_id'''s via mi; if no parameter used it shall affect all the '''trace_id'''s; 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 [[http://www.opensips.org/html/docs/modules/3.2.x/siptrace|docs]] and the [[http://lists.opensips.org/pipermail/news/2016-March/000453.html|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, [[https://github.com/sipcapture/HEP/blob/master/docs/HEP3_rev11.pdf|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 [[http://www.opensips.org/html/docs/modules/3.2.x/sipcapture|docs]] and the [[http://lists.opensips.org/pipermail/news/2016-March/000453.html|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 [[http://www.opensips.org/Documentation/Script-CoreParameters-3-2#memgroup|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 3.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 3.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 3.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 [[http://www.opensips.org/html/docs/modules/3.2.x/proto_bin.html|module documentation]]
March 28, 2016, at 06:20 PM by liviu -
Added lines 40-49:
OpenSIPS 3.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 [[http://www.opensips.org/html/docs/modules/3.2.x/proto_bin.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/sql_cacher.html|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:
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc22 | {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:
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc23 | {s.width} ]]''' - truncates or expands the input to the given len
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc27 | {s.b64encode} ]]''' - represents binary input data into ASCII
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc28 | {s.b64decode} ]]''' - decodes Base64 input
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc29 | {s.xor} ]]''' - encodes the input by XOR'ing with a key
to:
* '''new string transformations''':
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc23 | {s.width} ]] - truncates or expands the input to the given len
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc27 | {s.b64encode} ]] - represents binary input data into ASCII
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc28 | {s.b64decode} ]] - decodes Base64 input
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc29 | {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: [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc23 | {s.width} ]]''' - truncates or expands the input to the given len
to:
* '''new string transformations:
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc23 | {s.width} ]]''' - truncates or expands the input to the given len
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc27 | {s.b64encode} ]]''' - represents binary input data into ASCII
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc28 | {s.b64decode} ]]''' - decodes Base64 input
* [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc29 | {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: [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc23 | {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 [[Documentation/Script-CoreParameters-3-2#debug_mode|debug_mode]] parameter to replace the outdated [[Documentation/Script-CoreParameters-3-2#fork|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 [[Documentation/Script-CoreParameters-3-2#debug_mode|debug_mode]] parameter to replace the outdated [[Documentation/Script-CoreParameters-3-2#fork|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 [[http://www.opensips.org/html/docs/modules/3.2.x/rest_client.html#rest_append_hf | module doc]].
Changed line 180 from:
||x || script ||Integer operators: make "+=" and "-=" work! ||
to:
||x || script ||Integer 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 [[ http://www.opensips.org/html/docs/modules/3.2.x/cfgutils.html#id294676|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 [[http://lists.opensips.org/pipermail/news/2016-March/000451.html|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:
||x || script ||Integer operators: make "+=" and "-=" work! ||
to:
||x || script ||Integer 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 [[https://github.com/OpenSIPS/opensips/commit/7d090c3|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 [[https://github.com/OpenSIPS/opensips/commit/7d090c3|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 [[https://github.com/OpenSIPS/opensips/commit/7d090c3|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 3.2.0
to:
!!! [[Documentation/Migration-2-1-0-to-3-2-0|Migration from 2.1.x to 3.2.0]]
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:
* new [[#debug_mode|Documentation/Script-CoreParameters-3-2#debug_mode]] parameter to replace the outdated [[#debug|Documentation/Script-CoreParameters-3-2#fork]] parameter.
to:
* new [[Documentation/Script-CoreParameters-3-2#debug_mode|debug_mode]] parameter to replace the outdated [[Documentation/Script-CoreParameters-3-2#fork|fork]] parameter.
March 25, 2016, at 11:31 AM by 109.102.83.252 -
Added lines 16-18:

!!!! Debugging (core)
* new [[#debug_mode|Documentation/Script-CoreParameters-3-2#debug_mode]] parameter to replace the outdated [[#debug|Documentation/Script-CoreParameters-3-2#fork]] parameter.
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 [[http://www.opensips.org/html/docs/modules/3.2.x/nathelper.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/nathelper.html|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:
||xxxx || DIALOG ||re-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 [[http://www.opensips.org/html/docs/modules/3.2.x/event_virtual.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/uri.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/nathelper.html|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 3.2 is not backward compatible !''
Changed lines 16-18 from:
OpenSIPS 3.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 3.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 3.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 [[http://www.opensips.org/html/docs/modules/3.2.x/proto_bin.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/ldap.html#ldap-search-async-fn|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 [[http://www.opensips.org/html/docs/modules/3.2.x/ldap.html#ldap-search-async-fn|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
[[ http://www.opensips.org/html/docs/modules/3.2.x/registrar.html#id294364 | 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 [[ http://www.opensips.org/html/docs/modules/3.2.x/aaa_radius.html#id294274 | here ]].

!!!! Async ldap_search
'''ldap_search''' function is now async in version 3.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 [[http://www.opensips.org/html/docs/modules/3.2.x/ldap.html#ldap-search-async-fn|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 [[http://www.opensips.org/html/docs/modules/3.2.x/usrloc.html#max_contact_delete|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 [[http://www.opensips.org/html/docs/modules/3.2.x/ldap.html#ldap-search-async-fn|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 [[ http://www.opensips.org/html/docs/modules/3.2.x/registrar.html#id294364 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/aaa_radius.html#id294274 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/usrloc.html#max_contact_delete|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 [[http://www.opensips.org/html/docs/modules/3.2.x/usrloc.html#max_contact_delete|max_contact_delete]] parameter to specify
how many delete requests shall be put together inside a single query.


Deleted line 47:
||xxx || USRLOC ||when db is updated based on timer, combine multiple deletes in a single query ||
Deleted line 56:
||xx || USRLOC ||use 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 3.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 [[http://www.opensips.org/html/docs/modules/3.2.x/ldap.html#ldap-search-async-fn|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
[[ http://www.opensips.org/html/docs/modules/3.2.x/registrar.html#id294364 | 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 [[ http://www.opensips.org/html/docs/modules/3.2.x/aaa_radius.html#id294274 | here ]].
Deleted line 25:
||xxx || REGISTRAR ||lookup() 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:
[[ http://www.opensips.org/Documentation/Migration-1-11-0-to-3-2-0 | A manual for how to migrate/update from 1.11.x to 3.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 3.2 now comes with two built-in transport modules, [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp.html | TCP ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_udp.html | UDP ]], and three optional protocol-modules: [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_ws.html | WebSocket ]], [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tls.html | TLS ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_sctp.html | 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 3.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 3.2 is available here: http://www.opensips.org/Documentation/Script-Async-3-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 3.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 [[http://www.opensips.org/Documentation/Interface-CoreMI-3-2#toc2 | 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: [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp.html#id293402 | tcp_crlf_drop]]''' - set to 1 in order to drop "\r\n" pinging messages

* '''New core parameter: [[ http://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc36 | db_max_async_connections ]]''' - maximum number of connections to a single DB backend from a single worker

* '''New MI command: [[ http://www.opensips.org/Documentation/Interface-CoreMI-3-2#toc12 | 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 [[http://www.opensips.org/Documentation/Script-Async-3-2 | OpenSIPS 3.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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | here]] ...

* '''New assert(statement, message) function''' - If ''statement'' does not hold, OpenSIPS can just print the message or even abort (if [[ http://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc24 | abort_on_assert]] is enabled). More information [[ http://www.opensips.org/Documentation/Script-CoreFunctions-3-2#toc2 | 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 [[http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc97 | 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 [[http://www.opensips.org/Documentation/Script-Tran-3-2 | transformations manual ]] for usage examples

* '''New uri transformation: uri.schema''' - Extract the given URI's schema. More information [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc38 | here ]]

* '''sync/async support for event_route''' - Provides the possibility to run an event route asynchronously. More information [[http://www.opensips.org/Documentation/Script-Routes-3-2#toc9 | here]]

* '''Support for multi-part bodies''' - '''$cT''' ([[ http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc28 | Content-Type]]) and '''$rb''' ([[ http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc66 | 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 [[http://www.opensips.org/Documentation/Tutorials-WebSocket-3-2|usage tutorial]] and the [[http://www.opensips.org/html/docs/modules/3.2.x/proto_ws.html|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 [[http://www.opensips.org/Documentation/Tutorials-TLS-3-2|usage tutorial]] and the [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tls.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/proto_sctp.html|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 [[http://www.opensips.org/Documentation/Tutorials-Compression-3-2|comprehensive tutorial]] is available beside the [[http://www.opensips.org/html/docs/modules/3.2.x/compression.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/emergency.html | here]]. Also, a comprehensive [[http://www.opensips.org/Documentation/Tutorials-Emergency-3-2|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 [[http://www.opensips.org/Documentation/Tutorials-FraudDetection-3-2|usage tutorial]] and the [[http://www.opensips.org/html/docs/modules/3.2.x/fraud_detection.html|module documentation]] for parameters and functions provided by this module.

!!!! NEW RTPENGINE module
A new module that enables media streams to be proxied via [[https://github.com/sipwise/rtpengine | 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 [[http://www.opensips.org/Documentation/Tutorials-Topology-Hiding|usage tutorial]] and the [[http://www.opensips.org/html/docs/modules/3.2.x/topology_hiding.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/avpops#id294986 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/domain#id248926 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/dialplan.html | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html | 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 [[ http://www.opensips.org/html/docs/modules/3.2.x/dispatcher#id294247 | priority ]] column
* New modparam: '''[[ http://www.opensips.org/html/docs/modules/3.2.x/dispatcher#id294021 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id296634 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id296728| 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id296797 | here ]]...
* New modparam: '''[[ http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id294547 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/event_rabbitmq.html#id249573 | here]] ...

!!!! EVENT_ROUTE module
* Added '''async event handling''' - Allows for running the events in an asynchronous mode (in a dedicated process). More information [[http://www.opensips.org/html/docs/modules/3.2.x/event_route#id293492 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/exec.html#exec_sync_exec | here]]

!!!! LDAP module
* StartTLS support introduced. For example configurations, please refer to the [[ http://www.opensips.org/html/docs/modules/3.2.x/ldap.html#id294108 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/load_balancer.html#id248904 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/presence.html#id294405 | here]] ...

!!!! SIPMSGOPS module
* The sipmsg_validate function can now be used to check the From, To and Contact headers. More information [[http://www.opensips.org/html/docs/modules/3.2.x/sipmsgops.html#id294335 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/sipmsgops#id294804 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/rest_client#id293723 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/usrloc.html#id295298 | 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 3.2 release (TODO list)

|| border=1
||! Importance ||! Module ||! Description ||
||xxxx || TM ||even 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 ||
||xxxx || DIALOG ||re-INVITE based in-dialog pinging (with proper SDP handling) ||
||xxx || REGISTRAR ||lookup() should have a flag to force '''lookup on all branches''' (and not only on RURI) ||
||xxx || DIALOG ||New events for dialog matched, terminated, etc ||
||xxx || DIALOG ||control 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. ||
||xxx || USRLOC ||distributed storage via a NoSQL DB ||
||xxx || DIALOG ||distributed storage via a NoSQL DB ||
||xxx || DIALOG ||be able to end all dialogs belonging to a certain profile (MI only) ||
||xxx || USRLOC ||when db is updated based on timer, combine multiple deletes in a single query ||
||xxx || SIPCAPTURE ||TCP support ||
||xxx || RTPProxy ||add ICE support for rtpproxy ||
||xxx || Event Interface ||add ZeroMQ support for Event Interface ||
||xxx || core ||send function (including from TM) should return a dedicated ret code to indicate network errors (failure in sending) ||
||xxx || core ||fix insert_new_lump()/append_new_lump() logic throughout lumps_len() ||
||xxx || core ||once fixed, replace all single anchor_lump()+insert_new_lump_{before,after}() calls with the simpler insert_new_lump() call ||
||xxx || new ||Integrate OpenSIPS with libpurple library for IM and Presence ||
||xx || TLS core ||add 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) ||
||xx || DROUTING || Allow the option to call do_routing with a particular number, but to propagate downstream a different number ( useful for number portability scenarios ) ||
||xx || USRLOC ||use a single Primary Key (non SIP related) for DB ops ||
||xx || TM ||allow dynamic number of branches per transaction (on demand) ||
||xx || Statistics Interface ||replace the BIG LOCK (if other arch than i386) with multiple shared locks (to protect the values) ||
||xx || new ||new cachedb_virtual modules, similar to db_virtual, but for NoSQL databases ||
||xx || db_virtual ||Opensips 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 ||
||xx || B2B ||Support for attended transfers on B2BUA
||xx || event_datagram ||Instead 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 ||
||xx || new ||support for RFC5626 - Managing Client-Initiated Connections in SIP ||
||x || new ||new module mi_stream to provide MI interaction via connection oriented links (TCP or fifo) ||
||x || new ||RFC6140 Registration for Multiple Phone Numbers ||
||x || AVPOPS ||Regexp based filter for avp_db_load - what AVPs to be loaded ||
||x || core ||Be able to specify multiple keys with the "cache_fetch" MI command ||
||x || core ||Handle OpenSIPS variable expansion within the format string of assert() ||
||x || script ||Consider implementing the "continue" and "break" keywords inside while and for-each ||
||x || cachedb core ||Allow results to be written in any PV (not just $avp) ||
||x || script ||Integer operators: make "+=" and "-=" work! ||
March 18, 2015, at 03:40 PM by liviu -
Changed line 6 from:
!!! Migration from 1.11.x to 3.2.0
to:
!!! Migration from 2.1.x to 3.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 [[http://www.opensips.org/html/docs/modules/3.2.x/presence.html#id294405 | 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 [[ http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id296417 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id295470 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/usrloc.html#id295298 | here ]] ...
to:
* Added '''per contact events''' - raised when a new contact is inserted / updated / deleted. Read more [[http://www.opensips.org/html/docs/modules/3.2.x/usrloc.html#id295298 | 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 [[http://www.opensips.org/Documentation/Tutorials-Topology-Hiding|usage tutorial]] and the [[http://www.opensips.org/html/docs/modules/3.2.x/topology_hiding.html|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 [[ http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id296417 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id295470 | 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 [[ http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id296417 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id295470 | 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 [[http://www.opensips.org/Documentation/Script-Routes-3-2#toc9 | here]]
Changed line 200 from:
* Added '''per contact events''' - raised when a new contact is inserted / updated / deleted. Read more [[http://www.opensips.org/html/docs/modules/3.2.x/usrloc.html#id295298 | here ]] ...
to:
* Added '''per contact events''' - raised when a new contact is inserted / updated / deleted. Read more [[http://www.opensips.org/html/docs/modules/3.2.x/usrloc.html#id295298 | here ]] ...
March 17, 2015, at 08:54 PM by razvancrainea -
Deleted lines 200-239:

----
!!! Devel Plan 3.2 release (TODO list)

|| border=1
||! Importance ||! Module ||! Description ||
||xxxx || TM ||even 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 ||
||xxxx || DIALOG ||re-INVITE based in-dialog pinging (with proper SDP handling) ||
||xxx || REGISTRAR ||lookup() should have a flag to force '''lookup on all branches''' (and not only on RURI) ||
||xxx || DIALOG ||New events for dialog matched, terminated, etc ||
||xxx || DIALOG ||control 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. ||
||xxx || USRLOC ||distributed storage via a NoSQL DB ||
||xxx || DIALOG ||distributed storage via a NoSQL DB ||
||xxx || DIALOG ||be able to end all dialogs belonging to a certain profile (MI only) ||
||xxx || USRLOC ||when db is updated based on timer, combine multiple deletes in a single query ||
||xxx || SIPCAPTURE ||TCP support ||
||xxx || RTPProxy ||add ICE support for rtpproxy ||
||xxx || Event Interface ||add ZeroMQ support for Event Interface ||
||xxx || core ||send function (including from TM) should return a dedicated ret code to indicate network errors (failure in sending) ||
||xxx || core ||fix insert_new_lump()/append_new_lump() logic throughout lumps_len() ||
||xxx || core ||once fixed, replace all single anchor_lump()+insert_new_lump_{before,after}() calls with the simpler insert_new_lump() call ||
||xxx || new ||Integrate OpenSIPS with libpurple library for IM and Presence ||
||xx || TLS core ||add 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) ||
||xx || DROUTING || Allow the option to call do_routing with a particular number, but to propagate downstream a different number ( useful for number portability scenarios ) ||
||xx || USRLOC ||use a single Primary Key (non SIP related) for DB ops ||
||xx || TM ||allow dynamic number of branches per transaction (on demand) ||
||xx || Statistics Interface ||replace the BIG LOCK (if other arch than i386) with multiple shared locks (to protect the values) ||
||xx || new ||new cachedb_virtual modules, similar to db_virtual, but for NoSQL databases ||
||xx || db_virtual ||Opensips 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 ||
||xx || B2B ||Support for attended transfers on B2BUA
||xx || event_datagram ||Instead 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 ||
||xx || new ||support for RFC5626 - Managing Client-Initiated Connections in SIP ||
||x || new ||new module mi_stream to provide MI interaction via connection oriented links (TCP or fifo) ||
||x || new ||RFC6140 Registration for Multiple Phone Numbers ||
||x || AVPOPS ||Regexp based filter for avp_db_load - what AVPs to be loaded ||
||x || core ||Be able to specify multiple keys with the "cache_fetch" MI command ||
||x || core ||Handle OpenSIPS variable expansion within the format string of assert() ||
||x || script ||Consider implementing the "continue" and "break" keywords inside while and for-each ||
||x || cachedb core ||Allow results to be written in any PV (not just $avp) ||
||x || script ||Integer 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 [[http://www.opensips.org/html/docs/modules/3.2.x/avpops#id294986 | module documentation]].
to:
* avp_db_query() may now be used asynchronously (with MySQL backend). A usage example can be found in the [[http://www.opensips.org/html/docs/modules/3.2.x/avpops#id294986 | 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 [[http://lists.opensips.org/pipermail/devel/2015-February/016340.html | 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 [[http://www.opensips.org/Documentation/Tutorials-Compression-3-2|comprehensive tutorial]] is available beside the [[http://www.opensips.org/html/docs/modules/3.2.x/compression.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/event_route#id293492 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/exec.html#exec_sync_exec | 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 [[http://lists.opensips.org/pipermail/devel/2015-February/016340.html | here]] ...
to:
A new module which performs both SIP message compression and SIP header compaction. Read more [[http://lists.opensips.org/pipermail/devel/2015-February/016340.html | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/emergency.html | here]]. Also, a comprehensive [[http://www.opensips.org/Documentation/Tutorials-Emergency-3-2|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 [[http://www.opensips.org/html/docs/modules/3.2.x/emergency.html | here]]. Also, a comprehensive [[http://www.opensips.org/Documentation/Tutorials-Emergency-3-2|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 [[https://github.com/sipwise/rtpengine | RTPENGINE]]
to:
A new module that enables media streams to be proxied via [[https://github.com/sipwise/rtpengine | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/proto_sctp.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/proto_sctp.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/emergency.html | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/emergency.html | here]]. Also, a comprehensive [[http://www.opensips.org/Documentation/Tutorials-Emergency-3-2|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 [[http://lists.opensips.org/pipermail/users/2015-February/030974.html | 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 [[http://www.opensips.org/Documentation/Tutorials-FraudDetection-3-2|usage tutorial]] and the [[http://www.opensips.org/html/docs/modules/3.2.x/fraud_detection.html|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 [[http://www.opensips.org/Documentation/Tutorials-TLS-3-2|usage tutorial]] and the [[http://www.opensips.org/html/docs/modules/3.2.x/proto_tls.html|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 [[http://www.opensips.org/html/docs/modules/3.2.x/proto_sctp.html|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 [[http://www.opensips.org/Documentation/Tutorials-WebSocket-3-2|usage tutorial]] and the [[http://www.opensips.org/html/docs/modules/3.2.x/proto_ws.html|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, [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp.html | TCP ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_udp.html | UDP ]], and three optional modules: [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_ws.html | WebSocket ]], [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tls.html | TLS ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_sctp.html | 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 3.2 now comes with two built-in transport modules, [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp.html | TCP ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_udp.html | UDP ]], and three optional protocol-modules: [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_ws.html | WebSocket ]], [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tls.html | TLS ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_sctp.html | 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 3.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 3.2 is available here: http://www.opensips.org/Documentation/Script-Async-3-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 3.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, [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp.html | TCP ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_udp.html | UDP ]], and three optional modules: [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_ws.html | WebSocket ]], [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tls.html | TLS ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_sctp.html | 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, [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp.html | TCP ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_udp.html | UDP ]], and three optional modules: [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_ws.html | WebSocket ]], [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tls.html | TLS ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_sctp.html | 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: '''[[ http://www.opensips.org/html/docs/modules/3.2.x/dispatcher#id294021 | persistent_state ]]''' - prevent OpenSIPS from making any runtime UPDATE queries on the ''dispatcher'' table
Added line 116:
* New modparam: '''[[ http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id294547 | 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, [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp.html | TCP ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_udp.html | UDP ]], and three optional shared libraries: [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_ws.html | WebSocket ]], [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tls.html | TLS ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_sctp.html | 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, [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp.html | TCP ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_udp.html | UDP ]], and three optional modules: [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_ws.html | WebSocket ]], [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tls.html | TLS ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_sctp.html | 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 {+[[ http://www.opensips.org/Documentation/Script-CoreFunctions-3-2#toc2 | assert]]+}(statement, message) function''' - If ''statement'' does not hold, OpenSIPS can just print the message or even abort (if [[ http://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc24 | 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 [[ http://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc24 | abort_on_assert]] is enabled). More information [[ http://www.opensips.org/Documentation/Script-CoreFunctions-3-2#toc2 | 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 [[http://www.opensips.org/Documentation/Script-Async-3-2 | 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 [[http://www.opensips.org/Documentation/Script-Async-3-2 | OpenSIPS 3.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 [[http://www.opensips.org/Documentation/Script-Async-3-2 | 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 [[http://www.opensips.org/Documentation/Script-Async-3-2 | 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 [[http://www.opensips.org/Documentation/Script-Async-3-2 | 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 [[http://lists.opensips.org/pipermail/devel/2015-February/016340.html | here]] ...
to:
* A new module which performs both SIP message compression and SIP header compaction. Read more [[http://lists.opensips.org/pipermail/devel/2015-February/016340.html | 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 [[http://lists.opensips.org/pipermail/devel/2015-February/016340.html | here]] ...
to:
* New OpenSIPS module which performs both SIP message compression and SIP header compaction. Read more [[http://lists.opensips.org/pipermail/devel/2015-February/016340.html | 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 [[http://lists.opensips.org/pipermail/devel/2015-February/016340.html | here]].
to:
* Added a new compression module which performs both message compression and compaction. Read more [[http://lists.opensips.org/pipermail/devel/2015-February/016340.html | here]] ...
March 16, 2015, at 12:01 PM by liviu -
Changed line 40 from:
* '''New [[ http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc97 | $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 [[http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc97 | 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 [[http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc97 | 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 [[http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc97 | here]] ...
to:
* '''New [[ http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc97 | $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 [[http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc97 | here]] ...
March 13, 2015, at 09:11 PM by liviu -
Changed line 26 from:
* '''New TCP parameter: [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp.html#id293402 | tcp_crlf_drop]]''' - set to 1 in order to close TCP connections in case of "\r\n" pinging messages
to:
* '''New TCP parameter: [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp.html#id293402 | 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: [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp.html#id293402 | 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 [[ http://www.opensips.org/Documentation/Migration-1-11-0-to-3-2-0 | manual for how to migrate/update from 1.11.x to 3.2.x is now available on site ]].
to:
[[ http://www.opensips.org/Documentation/Migration-1-11-0-to-3-2-0 | A manual for how to migrate/update from 1.11.x to 3.2.x is now available on site ]].
March 13, 2015, at 09:06 PM by liviu -
Changed line 8 from:
A [[ http://www.opensips.org/Documentation/Migration-1-11-0-to-3-2-0 | manual for how to migrate/update from 1.10.x to 1.11.x is now available on site ]].
to:
A [[ http://www.opensips.org/Documentation/Migration-1-11-0-to-3-2-0 | manual for how to migrate/update from 1.11.x to 3.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 [[ http://www.opensips.org/Documentation/Migration-1-11-0-to-3-2-0 | 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: [[ http://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc36 | db_max_async_connections ]]''' - maximum number of connections to a single DB backend from a single worker

* '''New MI command: [[ http://www.opensips.org/Documentation/Interface-CoreMI-3-2#toc12 | 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 [[ http://www.opensips.org/html/docs/modules/3.2.x/ldap.html#id294108 | 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 [[ http://www.opensips.org/html/docs/modules/3.2.x/dispatcher#id294247 | 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 [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc38 | here ]] ...
to:
* '''New uri transformation: uri.schema''' - Extract the given URI's schema. More information [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc38 | 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''' ([[ http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc28 | Content-Type]]) and '''$rb''' ([[ http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc66 | 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) [[http://www.opensips.org/Documentation/Script-Tran-3-2 | transformations manual ]] for usage examples
to:
* '''New uri transformation: uri.schema''' - Extract the given URI's schema. More information [[ http://www.opensips.org/Documentation/Script-Tran-3-2#toc38 | here ]] ...
March 13, 2015, at 07:04 PM by liviu -
Changed line 38 from:
* '''New [[ http://www.opensips.org/Documentation/Script-CoreFunctions-3-2#toc2 | assert]](statement, message) function''' - If ''statement'' does not hold, OpenSIPS can just print the message or even abort (if [[ http://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc24 | abort_on_assert]] is set to true).
to:
* '''New {+[[ http://www.opensips.org/Documentation/Script-CoreFunctions-3-2#toc2 | assert]]+}(statement, message) function''' - If ''statement'' does not hold, OpenSIPS can just print the message or even abort (if [[ http://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc24 | 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 [[ http://www.opensips.org/Documentation/Script-CoreFunctions-3-2#toc2 | assert]](statement, message) function''' - If ''statement'' does not hold, OpenSIPS can just print the message or even abort (if [[ http://www.opensips.org/Documentation/Script-CoreParameters-3-2#toc24 | 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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | 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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | 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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | 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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | 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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | 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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | 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, [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tcp.html | TCP ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_udp.html | UDP ]], and three optional shared libraries: [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_ws.html | WebSocket ]], [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_tls.html | TLS ]] and [[ http://www.opensips.org/html/docs/modules/3.2.x/proto_sctp.html | 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) [[http://www.opensips.org/Documentation/Script-Tran-3-2 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/event_route#id293492 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id296797 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id296797 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/event_route#id293492 | here]] ...
to:
* Added '''async event handling''' - Allows for running the events in an asynchronous mode (in a dedicated process). More information [[http://www.opensips.org/html/docs/modules/3.2.x/event_route#id293492 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/load_balancer.html#id248904 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/load_balancer.html#id248904 | 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 [[http://www.opensips.org/Documentation/Script-Tran-3-2 | 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 [[http://www.opensips.org/Documentation/Script-Tran-3-2 | 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 [[http://www.opensips.org/Documentation/Script-Tran-3-2 | 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 [[http://www.opensips.org/Documentation/Script-Tran-3-2 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id295470 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id295470 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/event_rabbitmq.html#id249573 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/event_rabbitmq.html#id249573 | 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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | 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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/rest_client#id293723 | module documentation]].
to:
* rest_get() and rest_post() may now be used asynchronously. A usage example can be found in the [[http://www.opensips.org/html/docs/modules/3.2.x/rest_client#id293723 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/emergency.html | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/emergency.html | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/emergency.html | here]].

!!!! NEW FRAUD_DETECTION module
* A new module that helps you prevent fraud by detecting fraudulent calls based on dialing patterns. Read more [[http://lists.opensips.org/pipermail/users/2015-February/030974.html | 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 [[http://lists.opensips.org/pipermail/devel/2015-February/016340.html | here]].
Deleted lines 40-42:

!!!! NEW COMPRESSION module
* Added a new compression module which does message compression and compaction. Read more [[http://lists.opensips.org/pipermail/devel/2015-February/016340.html | 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 [[http://lists.opensips.org/pipermail/devel/2015-February/016340.html | 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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | 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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/rest_client#id293723 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/avpops#id294986 | module documentation]].
to:
* avp_db_query() may now be used asynchronously. A usage example can be found in the [[http://www.opensips.org/html/docs/modules/3.2.x/avpops#id294986 | 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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | 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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | here]] ...
Changed lines 34-35 from:
* avp_db_query() may now be used '''asynchronously'''. For usage examples, please refer to the [[http://www.opensips.org/html/docs/modules/3.2.x/avpops#id294986 | module documentation]].
to:
* avp_db_query() may now be used asynchronously. For usage examples, please refer to the [[http://www.opensips.org/html/docs/modules/3.2.x/avpops#id294986 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/avpops#id294986 | 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 [[http://www.opensips.org/Documentation/Interface-CoreMI-1-12#toc2 | here]] ...
to:
* '''Debugging levels''': complete rework. They can now be set globally or individually (per process) using the ''debug'' MI command. More information [[http://www.opensips.org/Documentation/Interface-CoreMI-3-2#toc2 | 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 [[http://www.opensips.org/Documentation/Script-CoreVar-1-12#toc97 | here]] ...
* '''New string transformation (s.fill)''' - Fills a string with a char/string until a given final length is reached. Refer to the [[http://www.opensips.org/Documentation/Script-Tran-1-12 | 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 [[http://www.opensips.org/Documentation/Script-CoreVar-3-2#toc97 | here]] ...
* '''New string transformation (s.fill)''' - Fills a string with a char/string until a given final length is reached. Refer to the [[http://www.opensips.org/Documentation/Script-Tran-3-2 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/domain#id248926 | here]] ...
to:
* You can now specify attributes from the domain names that can be used later on from the script. More information [[http://www.opensips.org/html/docs/modules/3.2.x/domain#id248926 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/event_rabbitmq.html#id249573 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/event_rabbitmq.html#id249573 | 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 [[ http://www.opensips.org/html/docs/modules/1.12.x/dialog.html#id296417 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/dialog.html#id295470 | 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 [[ http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id296417 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/dialog.html#id295470 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/drouting.html | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/dialplan.html | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/dialplan.html | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/drouting.html | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/drouting.html | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/drouting.html#id296634 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/drouting.html#id296728| 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 [[http://www.opensips.org/html/docs/modules/1.12.x/drouting.html#id296797 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id296634 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id296728| 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 [[http://www.opensips.org/html/docs/modules/3.2.x/drouting.html#id296797 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/event_route#id293492 | here]] ...
to:
* Added '''async event handling''' - Allows for running the events in an asynchronous mode ( in a dedicated process ). More information [[http://www.opensips.org/html/docs/modules/3.2.x/event_route#id293492 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/load_balancer.html#id248904 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/load_balancer.html#id248904 | here ]] ...
Changed lines 67-69 from:
* The sipmsg_validate function can now be used to check the From, To and Contact headers. More information [[http://www.opensips.org/html/docs/modules/1.12.x/sipmsgops.html#id294335 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/sipmsgops#id294804 | here ]] ...
to:
* The sipmsg_validate function can now be used to check the From, To and Contact headers. More information [[http://www.opensips.org/html/docs/modules/3.2.x/sipmsgops.html#id294335 | 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 [[http://www.opensips.org/html/docs/modules/3.2.x/sipmsgops#id294804 | here ]] ...
Changed line 77 from:
* Added '''per contact events''' - raised when a new contact is inserted / updated / deleted. Read more [[http://www.opensips.org/html/docs/modules/1.12.x/usrloc.html#id295298 | here ]] ...
to:
* Added '''per contact events''' - raised when a new contact is inserted / updated / deleted. Read more [[http://www.opensips.org/html/docs/modules/3.2.x/usrloc.html#id295298 | here ]] ...
Changed line 79 from:
!!! Devel Plan 1.12 release (TODO list)
to:
!!! Devel Plan 3.2 release (TODO list)
October 09, 2014, at 07:30 PM by 89.120.101.121 -
Changed line 1 from:
!!!!! About -> [[AvailableVersions|Available Versions]] -> [[About.Version-3-2-x|1.12.x Releases]] -> Release 3.2.0
to:
!!!!! About -> [[AvailableVersions|Available Versions]] -> [[About.Version-3-2-x|3.2.x Releases]] -> Release 3.2.0
October 09, 2014, at 07:29 PM by 89.120.101.121 -
Added lines 1-116:
!!!!! About -> [[AvailableVersions|Available Versions]] -> [[About.Version-3-2-x|1.12.x Releases]] -> Release 3.2.0
This page has been visited {$PageCount} times.
(:toc-float Table of Content:)

----
!!! Migration from 1.11.x to 3.2.0

To be done on release date.

----

!!! What is new in 3.2.0

!!!! Core

* '''Debugging levels''': complete rework. They can now be set globally or individually (per process) using the ''debug'' MI command. More information [[http://www.opensips.org/Documentation/Interface-CoreMI-1-12#toc2 | 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 [[http://opensips.org/pipermail/devel/2014-August/015175.html | 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 [[http://www.opensips.org/Documentation/Script-CoreVar-1-12#toc97 | here]] ...
* '''New string transformation (s.fill)''' - Fills a string with a char/string until a given final length is reached. Refer to the [[http://www.opensips.org/Documentation/Script-Tran-1-12 | transformations manual ]] for usage examples

!!!! NEW RTPENGINE module
* A new module that enables media streams to be proxied via [[https://github.com/sipwise/rtpengine | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/domain#id248926 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/event_rabbitmq.html#id249573 | 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 [[ http://www.opensips.org/html/docs/modules/1.12.x/dialog.html#id296417 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/dialog.html#id295470 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/drouting.html | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/dialplan.html | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/drouting.html | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/drouting.html | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/drouting.html#id296634 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/drouting.html#id296728| 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 [[http://www.opensips.org/html/docs/modules/1.12.x/drouting.html#id296797 | here ]]...

!!!! EVENT_ROUTE module
* Added '''async event handling''' - Allows for running the events in an asynchronous mode ( in a dedicated process ). More information [[http://www.opensips.org/html/docs/modules/1.12.x/event_route#id293492 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/load_balancer.html#id248904 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/sipmsgops.html#id294335 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/sipmsgops#id294804 | 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 [[http://www.opensips.org/html/docs/modules/1.12.x/usrloc.html#id295298 | here ]] ...
----
!!! Devel Plan 1.12 release (TODO list)

|| border=1
||! Importance ||! Module ||! Description ||
||xxxx || TM ||even 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 ||
||xxxx || DIALOG ||re-INVITE based in-dialog pinging (with proper SDP handling) ||
||xxx || REGISTRAR ||lookup() should have a flag to force '''lookup on all branches''' (and not only on RURI) ||
||xxx || DIALOG ||New events for dialog matched, terminated, etc ||
||xxx || DIALOG ||control 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. ||
||xxx || USRLOC ||distributed storage via a NoSQL DB ||
||xxx || DIALOG ||distributed storage via a NoSQL DB ||
||xxx || DIALOG ||be able to end all dialogs belonging to a certain profile (MI only) ||
||xxx || USRLOC ||when db is updated based on timer, combine multiple deletes in a single query ||
||xxx || SIPCAPTURE ||TCP support ||
||xxx || RTPProxy ||add ICE support for rtpproxy ||
||xxx || Event Interface ||add ZeroMQ support for Event Interface ||
||xxx || core ||send function (including from TM) should return a dedicated ret code to indicate network errors (failure in sending) ||
||xxx || core ||fix insert_new_lump()/append_new_lump() logic throughout lumps_len() ||
||xxx || core ||once fixed, replace all single anchor_lump()+insert_new_lump_{before,after}() calls with the simpler insert_new_lump() call ||
||xxx || new ||Integrate OpenSIPS with libpurple library for IM and Presence ||
||xx || TLS core ||add 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) ||
||xx || DROUTING || Allow the option to call do_routing with a particular number, but to propagate downstream a different number ( useful for number portability scenarios ) ||
||xx || USRLOC ||use a single Primary Key (non SIP related) for DB ops ||
||xx || TM ||allow dynamic number of branches per transaction (on demand) ||
||xx || Statistics Interface ||replace the BIG LOCK (if other arch than i386) with multiple shared locks (to protect the values) ||
||xx || new ||new cachedb_virtual modules, similar to db_virtual, but for NoSQL databases ||
||xx || db_virtual ||Opensips 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 ||
||xx || B2B ||Support for attended transfers on B2BUA
||xx || event_datagram ||Instead 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 ||
||xx || new ||support for RFC5626 - Managing Client-Initiated Connections in SIP ||
||x || new ||new module mi_stream to provide MI interaction via connection oriented links (TCP or fifo) ||
||x || new ||RFC6140 Registration for Multiple Phone Numbers ||
||x || AVPOPS ||Regexp based filter for avp_db_load - what AVPs to be loaded ||
||x || core ||Be able to specify multiple keys with the "cache_fetch" MI command ||
||x || core ||Handle OpenSIPS variable expansion within the format string of assert() ||
||x || script ||Consider implementing the "continue" and "break" keywords inside while and for-each ||
||x || cachedb core ||Allow results to be written in any PV (not just $avp) ||
||x || script ||Integer operators: make "+=" and "-=" work! ||

Page last modified on August 03, 2021, at 12:35 PM