Login | Register

About

About -> Available Versions -> 4.0.x Releases -> Release 4.0.0

This page has been visited 1418 times.


1.  Migration from 3.6.x to 4.0.0


2.  What is new in 4.0.0

2.1  OpenSIPS Core

  • New $proxy_protocol variable provides access to the connection metadata delivered via the Proxy Protocol at the transport layer.
  • The socket core parameter can receive new flags indicating whether to accept or send Proxy Protocol information.
  • support for "bond" sockets (as a collection of regular sockets) intend not only to simplify, but also to make possible the proper selection of the outbound socket based on the last-minute discovered (DNS based) properties of the destination (like protocol or AF). Read more here on this blog post.
  • MI command names have been migrated to the new module:name format. Check the migration guide for more information. The legacy command names remain available for backward reference and compatibility.
  • process profiling support, or the realtime X-ray on OpenSIPS - in a per-process manner, the profiling generates a list of reports/events on the process activity. The idea is to give a better view on what the processes is doing (processing) in a time based manner. The events cover different processing levels - the IO reactor (idle or what kind of task is running), the SIP stack (executing the script or various TM, dialog, B2B or async callbacks), the extra processes (like MI dedicated processes, RTPproxy notification) and also the timer jobs (reporting where and what timer job is executed). The profiling data is now available via Events and controlled (general and per-process) via MI commands. See the 'profiling_proc' MI command for controlling the profiling and the E_PROFILING_PROC event for accessing the info.
  • SIP message profiling - the executed script routes, with names and execution time, are reported in realtime via opentelemetry protocol. See the EE_PROFILING_SCRIPT event for accessing the info or the Opentelemetry module.
  • The tcp:list command has a new parameter, proto that can be used to filter the printed commands.
  • A new MI command, tcp:close has been added that can be used to close an ongoing command.

2.2  OpenSIPS Development

  • Troubleshooting: added possibility to include full backtraces in each "struct hist" log, via a new compile-time -DBACKTRACE_DBG option. See lib/dbg/struct_hist.h for the API itself.
  • new -i (Ignore safety checks) option for the OpenSIPS binary which skips the 1:1 exact git SHA match for OpenSIPS binary and .so modules. Might speed up your workflow by avoiding a full rebuild after each "git pull", or it might help shoot yourself in the foot. YMMV.

2.3  [NEW] AUTH_WEB3 module

  • The new auth_web3 module to provide Web3-based authentication for OpenSIPS, enabling SIP authentication through blockchain technology and ENS (Ethereum Name Service) resolution.

2.4  [NEW] OPENTELEMETRY module

  • The new Opentelemetry module is providing a standardized, vendor-neutral framework (APIs, SDKs, tools) to collect, process, and export telemetry data (traces, metrics, logs) from distributed systems, enabling deep insights into application performance, faster debugging, and preventing vendor lock-in by routing data to multiple observability backends.

2.5  AUTH_JWT module

2.6  AUTH_DB module

  • Changed default value of use_domain to true (enabled).

2.7  AAA_DIAMETER module

  • A new parameter, max_json_log_size can be used to increase the size of printed JSONs in case of errors.

2.8  B2B_LOGIC module

  • A new variable has been added $b2b_logic.peer that returns the peer of a given b2b_logic key, expressed as callid;from-tag;to-tag.
  • The b2b_bridge function can now take a new parameter, propagate-avps to instruct the module to copy AVPs across bridges.
  • A new parameter, custom_contact_header_params has been added to allow passing contact parameters from one side to the other.
  • The b2b_init_request() function receives a new flag, pass-legs-upstream that makes the scenario pass upstream a different to-tag for each downstream leg. The same behaviour can be tuned more granularly by passing the pass-legs-upstream flag to the b2b_client_new() function.
  • The func_b2b_bridge() function receives a new flag, max-duration that can overwrite the default max_duration module parameter's value.

2.9  CACHEDB_REDIS module

  • added support for Redis Cluster Hash tags, by detecting "{...}" sequences inside your Redis keys and directing the query to that specific Redis node.
  • added support for Redis Cluster ASK and ASKING replies and queries, in order to re-route the query to the correct node which holds the key.
  • added username:password Auth support
  • added TCP keepalive for Redis connections (new redis_keepalive modparam).
  • added support for auto-adjusting to Redis Cluster topology changes, via "CLUSTER SHARDS" (new) and the existing "CLUSTER NODES" Redis commands.
  • added 4 new statistics about Redis queries, see the new Statistics chapter.
  • added 3 new MI commands to run against your Redis Cluster: redis_cluster_info, redis_cluster_refresh and redis_ping_nodes.
  • added support for connecting to Redis via UNIX socket, see the new cachedb_url modparam description.

2.10  CALLOPS module

  • The mi_call_hold and mi_call_unhold MI functions have been enhanced with two more parameters: leg that can specify which call to be put on hold, and headers that can be used to provide extra headers to the outgoing re-INVITE.

2.11  CARRIERROUTE module

  • Changed default value of use_domain to true (enabled).

2.12  CLUSTERER module

  • NEW mechanism for inter-cluster data replication added, called "cluster-bridge replication". The idea is to avoid full-mesh replication in multi-datacenter setups with lots of clusterer nodes, hence many WAN links. The first module to use bridge-replication is ratelimit.
  • NEW optional table, to define the cluster-to-cluster replication bridges called clusterer_bridge. For more info on bridge replication, see this blogpost.

2.13  CPL_C module

  • Changed default value of use_domain to true (enabled).

2.14  DIALOG module

  • !!! Full rework of the create_dialog() flags, to use complete, hyphenated names instead of single-letter flags. Not backwards-compatible, make sure to migrate!
  • NEW PRACK Support (manual). Added support for generating early-dialog PRACK requests, using dlg_send_sequential(). The function includes the necessary special handling to extract the correct To-tag and other necessary information for the PRACK, given that the dialog is not yet established, yet we're still attempting to send a mid-dialog request.
  • NEW PRACK Support (auto). New create_dialog() flag, "auto-prack", which will fully handle 100rel and/or PRACK as needed on the respective leg only, in both directions.
  • The load_dialog_ctx() function has been enhanced with a new parameter that allows filtering only active dialogs - that is dialogs that are not deleted, their state is lower than 5.

2.15  EVENT_ROUTING module

  • A new function has been added, wait_for_event, that can be used to synchronously wait for a particular event to be triggered.

2.16  GROUP module

  • Changed default value of use_domain to true (enabled).

2.17  HTTPD module

  • added optional HTTP Basic Authentication support.

2.18  JANUS module

  • the module supports WebRTC fragmentated packets.

2.19  JSON module

2.20  MI_DATAGRAM module

  • A new parameter has been added socket_buf_size that can be used to tune the datagram buffer size - this can be useful when dealing with Unix Datagram Sockets communication, where buffer size is not limited to UDP size.

2.21  MID_REGISTRAR module

  • New modparam: allow_dup_cseq for improving interoperability with SIP stacks which re-REGISTER with the same Call-ID and CSeq.

2.22  NATHELPER module

  • The fix_nated_contact() function has been added a new parameter containg flags; the first flag use is preserve-uri, which is used to preseve the original uri as a Contact's parameter fixing it.
  • A new function has been added, restore_nated_ruri() that can be used to restore the URI in the contact saved using the preserve-uri flag.

2.23  PRESENCE_CALLINFO module

  • Added support for inbound Shared Call Appearance, according to BroadWorks specs (see Page 55/110 for the SIP flow). The module already included support for SCA when dialing out, so this addition makes the implementation even further compliant with SCA-capable SIP phones.
  • Several fixes/improvements for the existing outbound SCA implementation, such as support for advertising "held" during on-hold.

2.24  PROTO_TCP module

  • New tcp_close_conn() script function, in order to close a given TCP connection.

2.25  RATE_CACHER module

  • The module has now the ability to add multiple ratesheets to carriers while maintaining backward compatibility.

2.26  RATELIMIT module

2.27  REGISTRAR module

  • New modparam: allow_dup_cseq for improving interoperability with SIP stacks which re-REGISTER with the same Call-ID and CSeq.

2.28  RTPENGINE module

  • The rtpengine flags now support lists and dictionaries.

2.29  RTPPROXY module

2.30  SQLOPS module

  • Changed default value of use_domain to true (enabled).

2.31  STIR_SHAKEN module

  • NEW default SSL cryptography library: WolfSSL, but support for OpenSSL is retained. To build with OpenSSL, either define the STIR_SHAKEN_OPENSSL=true Makefile variable, or just add DEFS += -DSTIR_SHAKEN_OPENSSL to Makefile.conf

2.32  TLS_MGM module

  • Added support for zero-cert advertising when acting as TLS client. As such, the certificate and private_key domain parameters are now optional when configuring CLIENT domains (only). Works with both OpenSSL and WolfSSL. This feature comes as support for the upcoming client authentication EKU removal from public TLS certificates (read more in this article).

2.33  TLS_WOLFSSL module

  • The new try_use_ktls parameter has been added to facilitate using KernelTLS features in wolfssl.

2.34  TM module

  • The module is no longer limited to a fixed number of branches, but rather the branches can be dynamically added in batches.

2.35  TOPOLOGY_HIDING module

2.36  UAC_REGISTRANT module

  • The module is now able to deal with dynamic registants, meaning registrants may be added and removed during runtime via MI command, see the reg_upsert and reg_delete commands.
  • Several events are now exposed to inform on the registration & authentication changes of the registrant
  • reports are provided for each registrant, to store the history of events.

2.37  USERBLACKLIST module

  • Changed default value of use_domain to true (enabled).

2.38  USRLOC module

  • Changed default value of use_domain to true (enabled).

2.39  UUID module

  • The $uuid variable can take a parameter indicating the UUID version to be used to generate the value.

Page last modified on April 22, 2026, at 08:29 PM