Main.Ver15x History

Hide minor edits - Show changes to markup

April 25, 2013, at 04:14 PM by razvancrainea -
Added line 1:

(:redirect About.Version-1-5-x quiet=1:)

Deleted line 25:
October 25, 2012, at 11:21 AM by 109.99.235.212 -
Changed line 5 from:

OpenSIPS 1.5.x branch is outdated and not longer maintained, see current available releases.'

to:

OpenSIPS 1.5.x branch is outdated and not longer maintained, see current available releases.

October 25, 2012, at 11:21 AM by 109.99.235.212 -
Changed line 1 from:

Main -> Releases? -> Version 1.5.x

to:

Main -> Available Versions -> Version 1.5.x

Changed lines 5-8 from:

OpenSIPS 1.5.3 is the latest release from 1.5.x branch

to:

OpenSIPS 1.5.x branch is outdated and not longer maintained, see current available releases.'


OpenSIPS 1.5.3 is the last release from 1.5.x branch

July 01, 2011, at 06:51 PM by bogdan -
Changed lines 5-8 from:

OpenSIPS/OpenSER 1.5.3 is the latest release from 1.5.x branch

OpenSIPS/OpenSER 1.5.3

to:

OpenSIPS 1.5.3 is the latest release from 1.5.x branch

OpenSIPS 1.5.3

Changed lines 11-12 from:

OpenSIPS/OpenSER 1.5.2

to:

OpenSIPS 1.5.2

Changed lines 15-16 from:

OpenSIPS/OpenSER 1.5.1

to:

OpenSIPS 1.5.1

Changed line 19 from:
to:
August 27, 2009, at 07:27 PM by bogdan -
Changed lines 5-9 from:

OpenSIPS/OpenSER 1.5.2 is the latest release from 1.5.x branch

to:

OpenSIPS/OpenSER 1.5.3 is the latest release from 1.5.x branch

OpenSIPS/OpenSER 1.5.3

Minor release (see Changelog from 1.5.2)

July 15, 2009, at 10:40 PM by bogdan -
Changed lines 5-9 from:

OpenSIPS/OpenSER 1.5.1 is the latest release from 1.5.x branch

to:

OpenSIPS/OpenSER 1.5.2 is the latest release from 1.5.x branch

OpenSIPS/OpenSER 1.5.2

Minor release (see Changelog from 1.5.1)

April 13, 2009, at 04:11 PM by bogdan -
Changed line 9 from:

Minor release (see Changelog from 1.5.0.

to:

Minor release (see Changelog from 1.5.0)

April 13, 2009, at 04:11 PM by bogdan -
Changed line 7 from:

OpenSIPS/OpenSER 1.5.1

to:

OpenSIPS/OpenSER 1.5.1

April 13, 2009, at 04:11 PM by bogdan -
Changed line 7 from:

to:

OpenSIPS/OpenSER 1.5.1

April 13, 2009, at 04:10 PM by bogdan -
Changed line 7 from:
to:

April 13, 2009, at 04:10 PM by bogdan -
Changed lines 5-6 from:

OpenSIPS/OpenSER 1.5.0 is the latest release from 1.5.x branch

to:

OpenSIPS/OpenSER 1.5.1 is the latest release from 1.5.x branch

OpenSIPS/OpenSER 1.5.1

Minor release (see Changelog from 1.5.0.

Deleted lines 13-14:
March 23, 2009, at 07:56 PM by bogdan -
Changed line 7 from:
to:
March 23, 2009, at 07:52 PM by bogdan -
Changed lines 5-392 from:

OpenSIPS/OpenSER 1.5.0 is the current development version.


What is new in 1.5.0


Core

  • Add support for parsing the bandwidth attribute inside SDP: b=<bwtype>:<bandwidth>
  • Added support in the parser to identify the content-subtype "media_control+xml" [RFC5168]
  • Allow negative debug level (starting from L_ERR, the debug vals are negative)
  • Removed old "reply_to_via" core paramter as it is violating the RFC 3261.
  • Fix bug in preserving URI scheme - all functions that are performing partial change of the RURI (like rewritehostport, rewriteuser, strip, prefix, striptail, setport, sethost) were overwriting the URI scheme to SIP
  • Fixed bug in creating the pid file : if opensips is changing user, it needs also to change the owner of the pid file, so that it will be able to deleted at the end. (Affected scenario : (1) opensips is launched by root but configured to run as opensips user; (2) pid file is created as user root -> pid file is owned by root; (3) opensips deamonizes and runs as opensips ; (4) opensips shutdown and, as user opensips is not able to remove pid file which is owned by root
  • Added support in the MI internal API for doing flush (partial write of the MI reply tree). This will allow functions that output large amount of date to return the data in multiple sequences -> function will be able to retune any amount of data without any memory issues.
  • New API to allow registrations of new functions for "myself" test (to see if a domain is local or alias).
  • internal rework of the functions for setting the RURI
  • internal new functions for searching the headers (rev 4833)
  • internal optimization & cleanup of script functions operating with strings : STRING params replaced with STR to avoid len calculation

Stateless processing

If no stateless forwarding function is detected (in config script), the core will automatically trigger the dumping of received stateless replies.
Read more: http://lists.opensips.org/pipermail/users/2009-February/002951.html


Memory cache support

Memory Cache API

A new API was added in core to allow development of different modules that implements memory functionalities like memory_store and memory_fetch. See the MemCache Tutorial

Local memory store

New module that implements local memory storage support by storing Attribute-Value pairs in shared memory

MemCache implementation

Future new implementation of the memory cache via memcache system (for external interaction) - not necessary planned for 1.5

SystemV sharing

Future new implementation of the memory cache via System V shared mem (for external interaction) - not necessary planned for 1.5


Load-balancing module (NEW)

The "load-balancing" module comes to provide traffic routing based on load. Shortly, when OpenSIPS routes calls to a set of destinations, it is able to keep the load status (as number of ongoing calls) of each destination and to choose to route to the less loaded destination (at that moment). OpenSIPS is aware of the capacity of each destination - it is preconfigured with the maximum load accepted by the destinations. To be more precise, when routing, OpenSIPS will consider the less loaded destination not the destination with the smallest number of ongoing calls, but the destination with the largest available slot.

Read: http://www.opensips.org/index.php?n=Resources.DocsTutLoadbalancing


DB enhancement

Prepared statements

The support in DB API provides support for prepared statements. Modules using DB API may or may not request the usage of prepared statements instead of normal queries.

Right now, only the mysql driver (db_mysql) implements the prepared statements support.

There are several modules already using the prepared statements support:

  • acc
  • auth_db
  • alias_db
  • dialog
  • domain
  • group
  • presence_*
  • siptrace
  • speeddial
  • uri_db
  • usrloc
Memory fragmentation

The entire way of managing the DB result structure was reworked in order to avoid memory fragmentation:

  • the idea was to eliminate the usage of small chucks of memory (4-10 bytes);
  • instead of keep allocating/freeing for each DB result a number of chunks ( function of no of columns and no of rows), right now only 3 mem chuncks are used for a response.

Reducing the memory fragmentation is a key factor in producing a robust and endurable application.


Data flush in MI commands

This new addition is to fix the limitation related to commands not able to return large volume of data in replies (like listing all the registered users, all the ongoing dialogs, etc):

  • MI API was changed to allow such flush commands ;
  • mi_XXXX module implement the new flush functionality ;
  • usrloc uses mi_flush for dumping the location list

OpenSIPS Console - NEW

This is a new provisioning tool for OpenSIPS - the OpenSIPS console (osipsconsole). It intends to be a generic tool for OpenSIPS provisioning and to include all the functionalities which are now provided by several scripts - it will replace the opensipsctl & opensipsdbctl scripts.

Osipsconsole is not one command script, but a console - you start the application, you get a prompt, you can run the available commands, you have embedded help, command history (in the current session and from previous session).

Read: http://lists.opensips.org/pipermail/users/2008-October/000795.html


OpenSIPS Control Panel - NEW

OpenSIPS Control Panel (OpenSIPS-CP) is a web interface (PHP based) for provisioning your OpenSIPS system. OpenSIPS-CP is not designed for provisioning users, but for provisioning the operational side of OpenSIPS (like DB, MI operations).

OpenSIPS-CP is a collection of tools - different functionalities are implemented in separated tools.

Read: http://lists.opensips.org/pipermail/users/2008-October/000844.html
Web Site: http://opensips-cp.sourceforge.net/


DynamicRouting module - NEW

Dynamic Routing is a module for selecting (based on multiple criteria) the the best gateway/destination to be used for delivering a certain call. Least Cost Routing (LCR) is a special case of dynamic routing - when the rules are ordered based on costs.

See detailed documentation: http://www.opensips.org/html/docs/modules/devel/drouting.html


MaxMind GeoIP module - NEW

The module provides runtime geo-location information to the OpenSIPS scripting environment. Various geographic data available include country code, region, city, postal code, time zone and more, all described in the module documentation.

Read: http://lists.opensips.org/pipermail/users/2008-November/001244.html
Documentation: http://www.opensips.org/html/docs/modules/devel/mmgeoip.html

---

QOS module - NEW

The qos module uses the dialog module to be notified of any new or updated dialogs. It will then look for and extract the SDP session (if present) from SIP requests and replies and keep track of it for the entire life of a dialog.

Read: http://lists.opensips.org/pipermail/users/2008-December/002163.html
Documentation: http://www.opensips.org/html/docs/modules/devel/qos.html


Call Control - NEW

This module allows one to limit the duration of calls and automatically end them when they exceed the imposed limit. Its main use case is to implement a prepaid system, but it can also be used to impose a global limit on all calls processed by the proxy

Read: http://lists.opensips.org/pipermail/users/2008-December/002062.html
Documentation: http://www.opensips.org/html/docs/modules/devel/call_control.html


Signalling module -NEW

The SIGNALING module comes as a wrapper over tm and sl modules and offers one function to be called from script or by the modules that want to send a reply. The reply (depending of the current state - if transaction exists or not) will be automatically sent in the best manner (stateless or stateful).

Read: http://lists.opensips.org/pipermail/users/2008-November/001543.html
Documentation: http://www.opensips.org/html/docs/modules/devel/signaling.html


PUA_DIALOGINFO & PRESENCE_DIALOGINFO - NEW

The modules enable the handling of "Event: dialog" (as defined in RFC 4235) inside of the presence module. This can be used distribute the dialog-info status to the subscribed watchers.

Documentation: http://www.opensips.org/html/docs/modules/devel/pua_dialoginfo.html
Documentation: http://www.opensips.org/html/docs/modules/devel/presence_dialoginfo.html


SIP identity module - NEW

This is an implementation of SIP identity as per RFC 4474. The module implements both identification and verification of the SIP messages.

Documentation: http://www.opensips.org/html/docs/modules/devel/identity.html


Dialog Module

  • improved dialog state machine to be more flexible
  • better dialog matching (more efficient)
  • Automatic call termination on dialog timeout (by sending BYE in both directions). Read http://lists.opensips.org/pipermail/users/2008-October/001116.html
  • dialog persistent flags added. These flags will be visible for all the requests that belong to the same dialog. Available functions:
    • set_dlg_flag("n");
    • reset_dlg_flag("n");
    • is_dlg_flag_set("n");

Available PVs:

  • $DLG_flags (can be used directly from script via bitwise ops)
  • dialog persistent attributes - These attribute are visible for all the requests that belong to the same dialog; they can be manipulated (added,fetched) during the dialog lifetime. Available functions:
    • store_dlg_value("attr_name","attr_val"); // attr_val may contain PVs
    • fetch_dlg_value("attr_name","pv"); // pv is $var or $avp

Available PVs:

  • $dlg_val("attr_name"); // set and get available

READ: http://lists.opensips.org/pipermail/users/2009-January/002446.html

  • added new function create_dialog() to explicitly create the dialog from the script (instead of waiting for the t_relay()) - this function is also available via the module API

ACC module

  • extra accounting from replies - an extra accounting value may come from request context, but also from reply context. This new functionality provides easy and automatic access to all information from the reply. Read http://lists.opensips.org/pipermail/users/2008-November/001584.html
  • early_media module parameter triggers reply accounting for all provisional replies with body (not only 183).

AVPOPS module

  • added support for multiple DB connection (different DBs, different DB types, different DB hosts). Module parameter "db_url" allows multiple definitions. All AVPOPS DB ops may indicate the usage of a specific/different db_url. Read: http://lists.opensips.org/pipermail/users/2008-December/002209.html
  • fixed bogus handling of table name in avpops_db_xxxx functions

TEXTOPS module

  • added two new functions to be used from the script:
    • strip_body() : deletes the message body
    • add_body(new_body, content_type): adds a body to the message, replacing the initial one if it exists

TM module

  • minor branch for parallel forking - minor branch is a branch not taken into account during branch selection when closing a transaction). Read http://lists.opensips.org/pipermail/users/2008-October/000748.html
  • as TM is doing automatic release of the transactions at the end of script, the t_release() function is not longer available in script. This a low level function in transaction processing and all related processing is automatically done, so the user must not be aware or take care of it -> easier scripting now.
  • new functions added:
    • t_cancel_branch()
    • t_cancel_call()

Read: http://lists.opensips.org/pipermail/users/2009-January/002364.html

  • new PV $T_ruri - the RURI of the current branch; this information is taken from the transaction structure, so you can access this information for any sip message (request/reply) that has a transaction.
  • in failure route, use the msg RURI as first branch (as for request route), instead of using only the append branches. This is part of a bigger plan to align the scripting in failure route and request route. There will be no need to call append_branch() in failure route, just be make use of the RURI for relay
  • fixed e2eACK matching for local replied transaction - extended also for 3261 matching.
  • fixed race in concurrent callback execution -> random crash

PRESENCE module

  • new event "dialog;sla"
  • introduce MI command to trigger database cleanup
  • improved Subscribe receive sockinfo storing and processing:
	- keep a pointer to the sockinfo structure in memory
	- when updating in database - store the corresponding string
	- when fetching dialog info from database parse the string and search for the sockinfo structure
  • fixed BLA when call in put on hold
  • add "transport=proto" parameter to the contact if other proto than UDP is used.

Pua module

  • xcap-diff event support

RLS module

  • use rls-services document to take the list instead of resource-list document
  • send 200 OK faster so that retransmissions don't occur because of time consuming processing
  • added presence_server exported parameter to have the possibility to set the address of the presence server and avoid Subscribe messages being sent by the RLS bouncing on and off the main proxy
  • added special return code for rls_handle_notify function to show wheter the Notify request was processed or not by RLS (suggested by Adrian Georgescu
  • added a INFO level message for Subscribe messages processed by RLS with the format : Subscription from [watcher] for resource list uri [list_uri] expanded to [no_of_contacts] contacts (suggested by Adrian Georgescu)
  • updated the use of sockinfo field from subst_t structure to the definition commited in rev 4856
  • fixed a bug in timer_notify_update function related to the relevance of expires value(relative instead of absolute)
  • added deleting record from rls_presentity table when a Notify with subscription-state=terminate is received instead of being deleted on timer

REGISTRAR module

  • registered(), save() and lookup() functions may take an optional second param with a custome AOR. Mainly to tests more than only the RURI as AOR: registered("location","$fu");
  • "aor_avp" module parameter is dropped and useless
  • registered() function can be used from onreply route, branch route and local route. NOTE: if used from onreply route it is mandatory to pass as parameter an AOR (as replies do not have RURI).

Domains module

  • use the new core API for exporting a function to check if domain is local or not - this is used by the RR module for detecting the preloaded RR when domain is used instead of IPs. Read http://lists.opensips.org/pipermail/users/2009-February/002869.html

SIPTRACE module

  • dialog support in tracing message - with a single script function you can trace the entire dialog. READ: http://lists.opensips.org/pipermail/users/2009-January/002768.html

NATHELPER module

  • the list of RTPproxy sockets can be provisioned via DB now (versus the previous hardcoding in script).This allows provisioning at runtime (adding or removing rtpproxies) without restarting OpenSIPS.
    Read: http://lists.opensips.org/pipermail/users/2009-February/003174.html
  • improved logic for extracting the body from the SIP message
  • New rtpproxy_offer() and rtpproxy_answers() functions whose purpose is similar to force_rtp_proxy's 'S' flag (to allow SDP-less INVITEs), but providing cleaner API.
  • New family of functions rtpproxy_stream2uac(), rtpproxy_stream2uas(), rtpproxy_stop_stream2uac() and rtpproxy_stop_stream2uas() allowing to play pre-recorded announcement/MOH to one or both parties in response to various events. This feature requires latest 1.2 version snapshot of RTPproxy available at http://www.rtpproxy.org
  • Inclease list of recognizable and proxable streams with rtp/avpf, rtp/savp and udp/bfcp.

RR module

  • added new PV - $rr_params to export the entire Route param string

PERMISSION module

  • allow_trusted(), allow_address() are allowed to be used in reply route.

EXEC module

  • New extension in exec module (based on exec_avp code) that enables to read an environment variable and put its value inside an avp. For example, exec_getenv("HOSTNAME",$avp(s:hostname));

AUTH module

  • added module parameter 'disable_nonce_check' that allows disabling the nonce re-usability checking
  • Use the STALE_NONCE error code for the nonce reused case as well

DISPATCHER module

  • the reply codes of the probing requests can be configured via module parameter - a list of reply codes to be considered successful when probing.
    Read: http://www.opensips.org/html/docs/modules/devel/dispatcher.html#id271069
  • more efficient way of generating the probing requests
  • aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()

auth_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)

avp_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)

group_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)

uri_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)

---

SST module

  • fixed improper setting of the dialog timeout value (from sst to dialog)
  • fixed sending of malformed replies
  • set the default value of MINSE to 60 if the header exists

gflags module

  • fixed is_gflag MI function - function returns true if all bits (from bitmask) are set

URI_DB module

  • use DB API function for proper check on the table version
  • new statistic variables

SL module

  • new internal function to fetch the generated to_tag

CARRIERROUATE module

  • fetch support

GROUP module

  • Acceptance of a pseudovariable as second argument (group to check) of is_user_in function().

CFGUTILS module

  • Acceptance of a pseudovariable argument in sleep and usleep functions

LCR module

  • aligned lcr module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()

UAC REDIRECT module

  • aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()

UAC module

  • uac_replace_from() allowed per branch

CPL-c module

  • aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()

Generic Fixes

  • OS portability (mainly Solaris fixes)
  • fixed memory leaks (modules and core)
  • reduced memory fragmentation
  • replaced strncmp by strncasecmp in comparing SIP/SDP headers

Tools fixing

  • auto detection for libraries location
  • compile options
  • solaris packaging
  • opensipsctl - dialplan support
  • opensipcctl - changed behaviour in restart. If opensips is already stopped, does not exit, but it tries to start it.
to:

OpenSIPS/OpenSER 1.5.0 is the latest release from 1.5.x branch

OpenSIPS/OpenSER 1.5.0?

Major release

March 10, 2009, at 11:35 AM by bogdan -
Changed lines 50-51 from:

OpenSIPS is aware of the capacity of each destination - it is preconfigured with the maximum load accepted by the destinations. To be more precise, when routing, OpenSIPS will consider the less loaded destination not the destination with the smallest number of ongoing calls, but the destination with the largest available slot.READ: http://www.opensips.org/index.php?n=Resources.DocsTutLoadbalancing

to:

OpenSIPS is aware of the capacity of each destination - it is preconfigured with the maximum load accepted by the destinations. To be more precise, when routing, OpenSIPS will consider the less loaded destination not the destination with the smallest number of ongoing calls, but the destination with the largest available slot.

Read: http://www.opensips.org/index.php?n=Resources.DocsTutLoadbalancing

March 10, 2009, at 11:35 AM by bogdan -
Added lines 48-54:

Load-balancing module (NEW)

The "load-balancing" module comes to provide traffic routing based on load. Shortly, when OpenSIPS routes calls to a set of destinations, it is able to keep the load status (as number of ongoing calls) of each destination and to choose to route to the less loaded destination (at that moment). OpenSIPS is aware of the capacity of each destination - it is preconfigured with the maximum load accepted by the destinations. To be more precise, when routing, OpenSIPS will consider the less loaded destination not the destination with the smallest number of ongoing calls, but the destination with the largest available slot.READ: http://www.opensips.org/index.php?n=Resources.DocsTutLoadbalancing


Deleted lines 393-418:

What is still under development

Load-balancing module

New load-balancing module - module to do traffic routing based on real load-balancing (by counting the load -as ongoing calls- of each peer).Status: under development

Various small (but important) module enhancements:

dialog module
  • Ability to check if the Route info from a sequential request do matches the route info stored in the dialog - this will allow to

check the validity of sequential requests and to detect malicious BYE (for example)

TM module
  • t_relay - automate creation of transaction -> more simple to use the function
Nathelper
  • simplify the usage of sets of rtpproxys - no need for additional functions as we can pass now more than 2 params to module functions.
February 17, 2009, at 03:43 PM by 201.34.140.71 -
Added lines 361-365:

UAC module

  • uac_replace_from() allowed per branch

Changed lines 410-413 from:
UAC module
  • uac_replace_from() allowed per branch - this is a bit complicated as requires changes in TM
to:
February 17, 2009, at 03:41 PM by 201.34.140.71 -
Added line 104:
Added lines 259-260:
  • the list of RTPproxy sockets can be provisioned via DB now (versus the previous hardcoding in script).This allows provisioning at runtime (adding or removing rtpproxies) without restarting OpenSIPS.
    Read: http://lists.opensips.org/pipermail/users/2009-February/003174.html
Added lines 290-291:
  • the reply codes of the probing requests can be configured via module parameter - a list of reply codes to be considered successful when probing.
    Read: http://www.opensips.org/html/docs/modules/devel/dispatcher.html#id271069
February 10, 2009, at 08:14 PM by 81.180.102.217 -
Added lines 152-158:

SIP identity module - NEW

This is an implementation of SIP identity as per RFC 4474. The module implements both identification and verification of the SIP messages.

Documentation: http://www.opensips.org/html/docs/modules/devel/identity.html


Changed lines 389-397 from:

SIP identity module

An old submission for OpenSER 1.2, the identity module was refurbished and updated for OpenSIPS/OpenSER 1.5.0Status:

  • testing
  • fixing some design limitation
to:
February 09, 2009, at 08:10 PM by 92.81.68.225 -
Deleted line 24:
Added lines 26-31:

Stateless processing

If no stateless forwarding function is detected (in config script), the core will automatically trigger the dumping of received stateless replies.
Read more: http://lists.opensips.org/pipermail/users/2009-February/002951.html


Deleted line 77:
Added lines 79-86:

Data flush in MI commands

This new addition is to fix the limitation related to commands not able to return large volume of data in replies (like listing all the registered users, all the ongoing dialogs, etc):

  • MI API was changed to allow such flush commands ;
  • mi_XXXX module implement the new flush functionality ;
  • usrloc uses mi_flush for dumping the location list

Deleted lines 376-383:

Data flush in MI commands

This new addition is to fix the limitation related to commands not able to return large volume of data in replies (like listing all the registered users, all the ongoing dialogs, etc).Status:

  • MI API was already changed to allow such flush commands ; Status: on SVN
  • mi_fifo module implements the new flush functionality ; Status: under testing, not commited yet
  • implement flush for mi_datagram and mi_xmlrpc ; Status: under devel
February 03, 2009, at 01:04 PM by 81.180.102.217 -
Added line 185:
  • new PV $T_ruri - the RURI of the current branch; this information is taken from the transaction structure, so you can access this information for any sip message (request/reply) that has a transaction.
February 03, 2009, at 12:27 PM by 81.180.102.217 -
Added line 122:
Added line 130:
Added line 138:
Changed lines 223-224 from:
to:
  • registered() function can be used from onreply route, branch route and local route. NOTE: if used from onreply route it is mandatory to pass as parameter an AOR (as replies do not have RURI).
February 02, 2009, at 08:38 PM by 81.180.102.217 -
Changed line 89 from:

Read: http://lists.opensips.org/pipermail/users/2008-October/000844.html\

to:

Read: http://lists.opensips.org/pipermail/users/2008-October/000844.html\\

Changed line 103 from:

Read: http://lists.opensips.org/pipermail/users/2008-November/001244.html\

to:

Read: http://lists.opensips.org/pipermail/users/2008-November/001244.html\\

Changed line 111 from:

Read: http://lists.opensips.org/pipermail/users/2008-December/002163.html \

to:

Read: http://lists.opensips.org/pipermail/users/2008-December/002163.html \\

Changed line 119 from:

Read: http://lists.opensips.org/pipermail/users/2008-December/002062.html \

to:

Read: http://lists.opensips.org/pipermail/users/2008-December/002062.html \\

Changed line 126 from:

Read: http://lists.opensips.org/pipermail/users/2008-November/001543.html \

to:

Read: http://lists.opensips.org/pipermail/users/2008-November/001543.html \\

Changed line 133 from:

Documentation: http://www.opensips.org/html/docs/modules/devel/pua_dialoginfo.html \

to:

Documentation: http://www.opensips.org/html/docs/modules/devel/pua_dialoginfo.html \\

February 02, 2009, at 08:37 PM by 81.180.102.217 -
Changed line 89 from:

Read: http://lists.opensips.org/pipermail/users/2008-October/000844.html \

to:

Read: http://lists.opensips.org/pipermail/users/2008-October/000844.html\

Changed line 103 from:

Read: http://lists.opensips.org/pipermail/users/2008-November/001244.html \

to:

Read: http://lists.opensips.org/pipermail/users/2008-November/001244.html\

February 02, 2009, at 08:36 PM by 81.180.102.217 -
Changed line 89 from:

Read: http://lists.opensips.org/pipermail/users/2008-October/000844.html

to:

Read: http://lists.opensips.org/pipermail/users/2008-October/000844.html \

Changed line 103 from:

Read: http://lists.opensips.org/pipermail/users/2008-November/001244.html

to:

Read: http://lists.opensips.org/pipermail/users/2008-November/001244.html \

Changed line 111 from:

Read: http://lists.opensips.org/pipermail/users/2008-December/002163.html

to:

Read: http://lists.opensips.org/pipermail/users/2008-December/002163.html \

Changed line 119 from:

Read: http://lists.opensips.org/pipermail/users/2008-December/002062.html

to:

Read: http://lists.opensips.org/pipermail/users/2008-December/002062.html \

Changed line 126 from:

Read: http://lists.opensips.org/pipermail/users/2008-November/001543.html

to:

Read: http://lists.opensips.org/pipermail/users/2008-November/001543.html \

Changed lines 132-133 from:

Documentation: http://www.opensips.org/html/docs/modules/devel/pua_dialoginfo.html

to:

Documentation: http://www.opensips.org/html/docs/modules/devel/pua_dialoginfo.html \

February 02, 2009, at 08:35 PM by 81.180.102.217 -
Changed lines 75-80 from:

DynamicRouting module - NEW

Dynamic Routing is a module for selecting (based on multiple criteria) the the best gateway/destination to be used for delivering a certain call. Least Cost Routing (LCR) is a special case of dynamic routing - when the rules are ordered based on costs.

See detailed documentation: http://www.opensips.org/html/docs/modules/devel/drouting.html

to:

OpenSIPS Console - NEW

This is a new provisioning tool for OpenSIPS - the OpenSIPS console (osipsconsole). It intends to be a generic tool for OpenSIPS provisioning and to include all the functionalities which are now provided by several scripts - it will replace the opensipsctl & opensipsdbctl scripts.

Osipsconsole is not one command script, but a console - you start the application, you get a prompt, you can run the available commands, you have embedded help, command history (in the current session and from previous session).

Read: http://lists.opensips.org/pipermail/users/2008-October/000795.html

Added lines 84-99:

OpenSIPS Control Panel - NEW

OpenSIPS Control Panel (OpenSIPS-CP) is a web interface (PHP based) for provisioning your OpenSIPS system. OpenSIPS-CP is not designed for provisioning users, but for provisioning the operational side of OpenSIPS (like DB, MI operations).

OpenSIPS-CP is a collection of tools - different functionalities are implemented in separated tools.

Read: http://lists.opensips.org/pipermail/users/2008-October/000844.html Web Site: http://opensips-cp.sourceforge.net/


DynamicRouting module - NEW

Dynamic Routing is a module for selecting (based on multiple criteria) the the best gateway/destination to be used for delivering a certain call. Least Cost Routing (LCR) is a special case of dynamic routing - when the rules are ordered based on costs.

See detailed documentation: http://www.opensips.org/html/docs/modules/devel/drouting.html


February 02, 2009, at 08:28 PM by 81.180.102.217 -
Added lines 98-104:

Call Control - NEW

This module allows one to limit the duration of calls and automatically end them when they exceed the imposed limit. Its main use case is to implement a prepaid system, but it can also be used to impose a global limit on all calls processed by the proxy

Read: http://lists.opensips.org/pipermail/users/2008-December/002062.html Documentation: http://www.opensips.org/html/docs/modules/devel/call_control.html


Added lines 112-117:

PUA_DIALOGINFO & PRESENCE_DIALOGINFO - NEW

The modules enable the handling of "Event: dialog" (as defined in RFC 4235) inside of the presence module. This can be used distribute the dialog-info status to the subscribed watchers. Documentation: http://www.opensips.org/html/docs/modules/devel/pua_dialoginfo.html Documentation: http://www.opensips.org/html/docs/modules/devel/presence_dialoginfo.html


February 02, 2009, at 08:18 PM by 81.180.102.217 -
Deleted line 73:
Changed lines 75-93 from:

Dialog Module

  • improved dialog state machine to be more flexible
  • better dialog matching (more efficient)
  • Automatic call termination on dialog timeout (by sending BYE in both directions). Read http://lists.opensips.org/pipermail/users/2008-October/001116.html
  • dialog persistent flags added. These flags will be visible for all the requests that belong to the same dialog. Available functions:
    • set_dlg_flag("n");
    • reset_dlg_flag("n");
    • is_dlg_flag_set("n");

Available PVs:

  • $DLG_flags (can be used directly from script via bitwise ops)
  • dialog persistent attributes - These attribute are visible for all the requests that belong to the same dialog; they can be manipulated (added,fetched) during the dialog lifetime. Available functions:
    • store_dlg_value("attr_name","attr_val"); // attr_val may contain PVs
    • fetch_dlg_value("attr_name","pv"); // pv is $var or $avp

Available PVs:

  • $dlg_val("attr_name"); // set and get available

READ: http://lists.opensips.org/pipermail/users/2009-January/002446.html

  • added new function create_dialog() to explicitly create the dialog from the script (instead of waiting for the t_relay()) - this function is also available via the module API
to:

DynamicRouting module - NEW

Dynamic Routing is a module for selecting (based on multiple criteria) the the best gateway/destination to be used for delivering a certain call. Least Cost Routing (LCR) is a special case of dynamic routing - when the rules are ordered based on costs.

See detailed documentation: http://www.opensips.org/html/docs/modules/devel/drouting.html

Changed lines 82-86 from:

ACC module

  • extra accounting from replies - an extra accounting value may come from request context, but also from reply context. This new functionality provides easy and automatic access to all information from the reply. Read http://lists.opensips.org/pipermail/users/2008-November/001584.html
  • early_media module parameter triggers reply accounting for all provisional replies with body (not only 183).
to:

MaxMind GeoIP module - NEW

The module provides runtime geo-location information to the OpenSIPS scripting environment. Various geographic data available include country code, region, city, postal code, time zone and more, all described in the module documentation.

Read: http://lists.opensips.org/pipermail/users/2008-November/001244.html Documentation: http://www.opensips.org/html/docs/modules/devel/mmgeoip.html

---

QOS module - NEW

The qos module uses the dialog module to be notified of any new or updated dialogs. It will then look for and extract the SDP session (if present) from SIP requests and replies and keep track of it for the entire life of a dialog.

Read: http://lists.opensips.org/pipermail/users/2008-December/002163.html Documentation: http://www.opensips.org/html/docs/modules/devel/qos.html

Changed lines 98-102 from:

AVPOPS module

  • added support for multiple DB connection (different DBs, different DB types, different DB hosts). Module parameter "db_url" allows multiple definitions. All AVPOPS DB ops may indicate the usage of a specific/different db_url. Read: http://lists.opensips.org/pipermail/users/2008-December/002209.html
  • fixed bogus handling of table name in avpops_db_xxxx functions
to:

Signalling module -NEW

The SIGNALING module comes as a wrapper over tm and sl modules and offers one function to be called from script or by the modules that want to send a reply. The reply (depending of the current state - if transaction exists or not) will be automatically sent in the best manner (stateless or stateful).

Read: http://lists.opensips.org/pipermail/users/2008-November/001543.html Documentation: http://www.opensips.org/html/docs/modules/devel/signaling.html

Changed lines 105-109 from:

TEXTOPS module

  • added two new functions to be used from the script:
    • strip_body() : deletes the message body
    • add_body(new_body, content_type): adds a body to the message, replacing the initial one if it exists
to:

Dialog Module

  • improved dialog state machine to be more flexible
  • better dialog matching (more efficient)
  • Automatic call termination on dialog timeout (by sending BYE in both directions). Read http://lists.opensips.org/pipermail/users/2008-October/001116.html
  • dialog persistent flags added. These flags will be visible for all the requests that belong to the same dialog. Available functions:
    • set_dlg_flag("n");
    • reset_dlg_flag("n");
    • is_dlg_flag_set("n");

Available PVs:

  • $DLG_flags (can be used directly from script via bitwise ops)
  • dialog persistent attributes - These attribute are visible for all the requests that belong to the same dialog; they can be manipulated (added,fetched) during the dialog lifetime. Available functions:
    • store_dlg_value("attr_name","attr_val"); // attr_val may contain PVs
    • fetch_dlg_value("attr_name","pv"); // pv is $var or $avp

Available PVs:

  • $dlg_val("attr_name"); // set and get available

READ: http://lists.opensips.org/pipermail/users/2009-January/002446.html

  • added new function create_dialog() to explicitly create the dialog from the script (instead of waiting for the t_relay()) - this function is also available via the module API
Changed lines 125-136 from:

TM module

  • minor branch for parallel forking - minor branch is a branch not taken into account during branch selection when closing a transaction). Read http://lists.opensips.org/pipermail/users/2008-October/000748.html
  • as TM is doing automatic release of the transactions at the end of script, the t_release() function is not longer available in script. This a low level function in transaction processing and all related processing is automatically done, so the user must not be aware or take care of it -> easier scripting now.
  • new functions added:
    • t_cancel_branch()
    • t_cancel_call()

Read: http://lists.opensips.org/pipermail/users/2009-January/002364.html

  • in failure route, use the msg RURI as first branch (as for request route), instead of using only the append branches. This is part of a bigger plan to align the scripting in failure route and request route. There will be no need to call append_branch() in failure route, just be make use of the RURI for relay
  • fixed e2eACK matching for local replied transaction - extended also for 3261 matching.
  • fixed race in concurrent callback execution -> random crash
to:

ACC module

  • extra accounting from replies - an extra accounting value may come from request context, but also from reply context. This new functionality provides easy and automatic access to all information from the reply. Read http://lists.opensips.org/pipermail/users/2008-November/001584.html
  • early_media module parameter triggers reply accounting for all provisional replies with body (not only 183).
Changed lines 131-141 from:

PRESENCE module

  • new event "dialog;sla"
  • introduce MI command to trigger database cleanup
  • improved Subscribe receive sockinfo storing and processing:
	- keep a pointer to the sockinfo structure in memory
	- when updating in database - store the corresponding string
	- when fetching dialog info from database parse the string and search for the sockinfo structure
  • fixed BLA when call in put on hold
  • add "transport=proto" parameter to the contact if other proto than UDP is used.
to:

AVPOPS module

  • added support for multiple DB connection (different DBs, different DB types, different DB hosts). Module parameter "db_url" allows multiple definitions. All AVPOPS DB ops may indicate the usage of a specific/different db_url. Read: http://lists.opensips.org/pipermail/users/2008-December/002209.html
  • fixed bogus handling of table name in avpops_db_xxxx functions
Changed lines 137-140 from:

Pua module

  • xcap-diff event support
to:

TEXTOPS module

  • added two new functions to be used from the script:
    • strip_body() : deletes the message body
    • add_body(new_body, content_type): adds a body to the message, replacing the initial one if it exists
Changed lines 143-153 from:

RLS module

  • use rls-services document to take the list instead of resource-list document
  • send 200 OK faster so that retransmissions don't occur because of time consuming processing
  • added presence_server exported parameter to have the possibility to set the address of the presence server and avoid Subscribe messages being sent by the RLS bouncing on and off the main proxy
  • added special return code for rls_handle_notify function to show wheter the Notify request was processed or not by RLS (suggested by Adrian Georgescu
  • added a INFO level message for Subscribe messages processed by RLS with the format : Subscription from [watcher] for resource list uri [list_uri] expanded to [no_of_contacts] contacts (suggested by Adrian Georgescu)
  • updated the use of sockinfo field from subst_t structure to the definition commited in rev 4856
  • fixed a bug in timer_notify_update function related to the relevance of expires value(relative instead of absolute)
  • added deleting record from rls_presentity table when a Notify with subscription-state=terminate is received instead of being deleted on timer
to:

TM module

  • minor branch for parallel forking - minor branch is a branch not taken into account during branch selection when closing a transaction). Read http://lists.opensips.org/pipermail/users/2008-October/000748.html
  • as TM is doing automatic release of the transactions at the end of script, the t_release() function is not longer available in script. This a low level function in transaction processing and all related processing is automatically done, so the user must not be aware or take care of it -> easier scripting now.
  • new functions added:
    • t_cancel_branch()
    • t_cancel_call()

Read: http://lists.opensips.org/pipermail/users/2009-January/002364.html

  • in failure route, use the msg RURI as first branch (as for request route), instead of using only the append branches. This is part of a bigger plan to align the scripting in failure route and request route. There will be no need to call append_branch() in failure route, just be make use of the RURI for relay
  • fixed e2eACK matching for local replied transaction - extended also for 3261 matching.
  • fixed race in concurrent callback execution -> random crash
Changed lines 156-160 from:

REGISTRAR module

  • registered(), save() and lookup() functions may take an optional second param with a custome AOR. Mainly to tests more than only the RURI as AOR: registered("location","$fu");
  • "aor_avp" module parameter is dropped and useless
to:

PRESENCE module

  • new event "dialog;sla"
  • introduce MI command to trigger database cleanup
  • improved Subscribe receive sockinfo storing and processing:
	- keep a pointer to the sockinfo structure in memory
	- when updating in database - store the corresponding string
	- when fetching dialog info from database parse the string and search for the sockinfo structure
  • fixed BLA when call in put on hold
  • add "transport=proto" parameter to the contact if other proto than UDP is used.
Changed lines 168-176 from:

Domains module

  • use the new core API for exporting a function to check if domain is local or not - this is used by the RR module for detecting the preloaded RR when domain is used instead of IPs. Read http://lists.opensips.org/pipermail/users/2009-February/002869.html

SIPTRACE module

  • dialog support in tracing message - with a single script function you can trace the entire dialog. READ: http://lists.opensips.org/pipermail/users/2009-January/002768.html
to:

Pua module

  • xcap-diff event support
Changed lines 173-179 from:

NATHELPER module

  • improved logic for extracting the body from the SIP message
  • New rtpproxy_offer() and rtpproxy_answers() functions whose purpose is similar to force_rtp_proxy's 'S' flag (to allow SDP-less INVITEs), but providing cleaner API.
  • New family of functions rtpproxy_stream2uac(), rtpproxy_stream2uas(), rtpproxy_stop_stream2uac() and rtpproxy_stop_stream2uas() allowing to play pre-recorded announcement/MOH to one or both parties in response to various events. This feature requires latest 1.2 version snapshot of RTPproxy available at http://www.rtpproxy.org
  • Inclease list of recognizable and proxable streams with rtp/avpf, rtp/savp and udp/bfcp.
to:

RLS module

  • use rls-services document to take the list instead of resource-list document
  • send 200 OK faster so that retransmissions don't occur because of time consuming processing
  • added presence_server exported parameter to have the possibility to set the address of the presence server and avoid Subscribe messages being sent by the RLS bouncing on and off the main proxy
  • added special return code for rls_handle_notify function to show wheter the Notify request was processed or not by RLS (suggested by Adrian Georgescu
  • added a INFO level message for Subscribe messages processed by RLS with the format : Subscription from [watcher] for resource list uri [list_uri] expanded to [no_of_contacts] contacts (suggested by Adrian Georgescu)
  • updated the use of sockinfo field from subst_t structure to the definition commited in rev 4856
  • fixed a bug in timer_notify_update function related to the relevance of expires value(relative instead of absolute)
  • added deleting record from rls_presentity table when a Notify with subscription-state=terminate is received instead of being deleted on timer
Changed lines 185-188 from:

RR module

  • added new PV - $rr_params to export the entire Route param string
to:

REGISTRAR module

  • registered(), save() and lookup() functions may take an optional second param with a custome AOR. Mainly to tests more than only the RURI as AOR: registered("location","$fu");
  • "aor_avp" module parameter is dropped and useless
Changed lines 191-194 from:

PERMISSION module

  • allow_trusted(), allow_address() are allowed to be used in reply route.
to:

Domains module

  • use the new core API for exporting a function to check if domain is local or not - this is used by the RR module for detecting the preloaded RR when domain is used instead of IPs. Read http://lists.opensips.org/pipermail/users/2009-February/002869.html

SIPTRACE module

  • dialog support in tracing message - with a single script function you can trace the entire dialog. READ: http://lists.opensips.org/pipermail/users/2009-January/002768.html
Changed lines 201-204 from:

EXEC module

  • New extension in exec module (based on exec_avp code) that enables to read an environment variable and put its value inside an avp. For example, exec_getenv("HOSTNAME",$avp(s:hostname));
to:

NATHELPER module

  • improved logic for extracting the body from the SIP message
  • New rtpproxy_offer() and rtpproxy_answers() functions whose purpose is similar to force_rtp_proxy's 'S' flag (to allow SDP-less INVITEs), but providing cleaner API.
  • New family of functions rtpproxy_stream2uac(), rtpproxy_stream2uas(), rtpproxy_stop_stream2uac() and rtpproxy_stop_stream2uas() allowing to play pre-recorded announcement/MOH to one or both parties in response to various events. This feature requires latest 1.2 version snapshot of RTPproxy available at http://www.rtpproxy.org
  • Inclease list of recognizable and proxable streams with rtp/avpf, rtp/savp and udp/bfcp.
Changed lines 209-213 from:

AUTH module

  • added module parameter 'disable_nonce_check' that allows disabling the nonce re-usability checking
  • Use the STALE_NONCE error code for the nonce reused case as well
to:

RR module

  • added new PV - $rr_params to export the entire Route param string
Changed lines 214-218 from:

DISPATCHER module

  • more efficient way of generating the probing requests
  • aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()
to:

PERMISSION module

  • allow_trusted(), allow_address() are allowed to be used in reply route.
Changed lines 219-221 from:

auth_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)
to:

EXEC module

  • New extension in exec module (based on exec_avp code) that enables to read an environment variable and put its value inside an avp. For example, exec_getenv("HOSTNAME",$avp(s:hostname));
Changed lines 224-226 from:

avp_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)
to:

AUTH module

  • added module parameter 'disable_nonce_check' that allows disabling the nonce re-usability checking
  • Use the STALE_NONCE error code for the nonce reused case as well
Changed lines 230-236 from:

group_radius module

to:

DISPATCHER module

  • more efficient way of generating the probing requests
  • aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()

auth_radius module

Changed line 240 from:

uri_radius module

to:

avp_radius module

Deleted lines 242-248:

---

SST module

  • fixed improper setting of the dialog timeout value (from sst to dialog)
  • fixed sending of malformed replies
  • set the default value of MINSE to 60 if the header exists
Changed lines 244-247 from:

gflags module

  • fixed is_gflag MI function - function returns true if all bits (from bitmask) are set
to:

group_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)
Changed lines 248-252 from:

URI_DB module

  • use DB API function for proper check on the table version
  • new statistic variables
to:

uri_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)

---

SST module

  • fixed improper setting of the dialog timeout value (from sst to dialog)
  • fixed sending of malformed replies
  • set the default value of MINSE to 60 if the header exists
Changed lines 259-262 from:

SL module

  • new internal function to fetch the generated to_tag
to:

gflags module

  • fixed is_gflag MI function - function returns true if all bits (from bitmask) are set
Changed lines 264-267 from:

CARRIERROUATE module

  • fetch support
to:

URI_DB module

  • use DB API function for proper check on the table version
  • new statistic variables
Changed lines 270-273 from:

GROUP module

  • Acceptance of a pseudovariable as second argument (group to check) of is_user_in function().
to:

SL module

  • new internal function to fetch the generated to_tag
Changed lines 275-278 from:

CFGUTILS module

  • Acceptance of a pseudovariable argument in sleep and usleep functions
to:

CARRIERROUATE module

  • fetch support
Changed lines 280-283 from:

LCR module

  • aligned lcr module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()
to:

GROUP module

  • Acceptance of a pseudovariable as second argument (group to check) of is_user_in function().
Changed lines 285-288 from:

UAC REDIRECT module

  • aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()
to:

CFGUTILS module

  • Acceptance of a pseudovariable argument in sleep and usleep functions
Changed lines 290-295 from:

CPL-c module

to:

LCR module

  • aligned lcr module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()

UAC REDIRECT module

Added lines 300-304:

CPL-c module

  • aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()

February 02, 2009, at 08:05 PM by 81.180.102.217 -
Added lines 15-20:
  • Allow negative debug level (starting from L_ERR, the debug vals are negative)
  • Removed old "reply_to_via" core paramter as it is violating the RFC 3261.
  • Fix bug in preserving URI scheme - all functions that are performing partial change of the RURI (like rewritehostport, rewriteuser, strip, prefix, striptail, setport, sethost) were overwriting the URI scheme to SIP
  • Fixed bug in creating the pid file : if opensips is changing user, it needs also to change the owner of the pid file, so that it will be able to deleted at the end. (Affected scenario : (1) opensips is launched by root but configured to run as opensips user; (2) pid file is created as user root -> pid file is owned by root; (3) opensips deamonizes and runs as opensips ; (4) opensips shutdown and, as user opensips is not able to remove pid file which is owned by root
  • Added support in the MI internal API for doing flush (partial write of the MI reply tree). This will allow functions that output large amount of date to return the data in multiple sequences -> function will be able to retune any amount of data without any memory issues.
  • New API to allow registrations of new functions for "myself" test (to see if a domain is local or alias).
Changed lines 22-30 from:
  • internal L new functions for searching the headers (rev 4833)
  • internal optimization & cleanup of script functions operating with strings : STRING params replaced with STR to avoid len calculation
  • allow negative debug level (starting from L_ERR, the debug vals are negative)
  • removed old "reply_to_via" core paramter as it is violating the RFC 3261.
  • fix bug in preserving URI scheme - all functions that are performing partial change of the RURI (like rewritehostport, rewriteuser, strip, prefix, striptail, setport, sethost) were overwriting the URI scheme to SIP
  • fixed bug in creating the pid file : if opensips is changing user, it needs also to change the owner of the pid file, so that it will be able to deleted at the end. (Affected scenario : (1) opensips is launched by root but configured to run as opensips user; (2) pid file is created as user root -> pid file is owned by root; (3) opensips deamonizes and runs as opensips ; (4) opensips shutdown and, as user opensips is not able to remove pid file which is owned by root
  • added support in the MI internal API for doing flush (partial write of the MI reply tree). This will allow functions that output large amount of date to return the data in multiple sequences -> function will be able to retune any amount of data without any memory issues.
to:
  • internal new functions for searching the headers (rev 4833)
  • internal optimization & cleanup of script functions operating with strings : STRING params replaced with STR to avoid len calculation
Added line 57:
  • group
Changed line 85 from:
  • $DLG_flags (can be used directly from script via bitwise ops)
to:
  • $DLG_flags (can be used directly from script via bitwise ops)
Added line 91:

READ: http://lists.opensips.org/pipermail/users/2009-January/002446.html

Changed lines 103-104 from:
  • added support for multiple DB connection (different DBs, different DB types, different DB hosts). Module parameter "db_url" allows multiple definitions. All AVPOPS DB ops may indicate the usage of a specific/different db_url.

fixes:

to:
  • added support for multiple DB connection (different DBs, different DB types, different DB hosts). Module parameter "db_url" allows multiple definitions. All AVPOPS DB ops may indicate the usage of a specific/different db_url. Read: http://lists.opensips.org/pipermail/users/2008-December/002209.html
Changed lines 118-119 from:
	t_cancel_branch()
	t_cancel_call()
to:
  • t_cancel_branch()
  • t_cancel_call()

Read: http://lists.opensips.org/pipermail/users/2009-January/002364.html

Added lines 162-171:

Domains module

  • use the new core API for exporting a function to check if domain is local or not - this is used by the RR module for detecting the preloaded RR when domain is used instead of IPs. Read http://lists.opensips.org/pipermail/users/2009-February/002869.html

SIPTRACE module

  • dialog support in tracing message - with a single script function you can trace the entire dialog. READ: http://lists.opensips.org/pipermail/users/2009-January/002768.html

Deleted lines 311-317:

SIPtrace module

Enhancements:

  • dialog support
  • stateless ACK tracing to be fixed
  • fixed Cancel tracing
Changed lines 320-327 from:

Domains module

Export the domain to core in order to be used as aliases (fixes the preloaded RR when domain is used instead of IPs):

  • new core API to allow alias registrations
  • upgrade domains module to register the loaded modules via core API

Status: under devel

to:
February 02, 2009, at 07:45 PM by 81.180.102.217 -
Added lines 141-158:

RLS module

  • use rls-services document to take the list instead of resource-list document
  • send 200 OK faster so that retransmissions don't occur because of time consuming processing
  • added presence_server exported parameter to have the possibility to set the address of the presence server and avoid Subscribe messages being sent by the RLS bouncing on and off the main proxy
  • added special return code for rls_handle_notify function to show wheter the Notify request was processed or not by RLS (suggested by Adrian Georgescu
  • added a INFO level message for Subscribe messages processed by RLS with the format : Subscription from [watcher] for resource list uri [list_uri] expanded to [no_of_contacts] contacts (suggested by Adrian Georgescu)
  • updated the use of sockinfo field from subst_t structure to the definition commited in rev 4856
  • fixed a bug in timer_notify_update function related to the relevance of expires value(relative instead of absolute)
  • added deleting record from rls_presentity table when a Notify with subscription-state=terminate is received instead of being deleted on timer

REGISTRAR module

  • registered(), save() and lookup() functions may take an optional second param with a custome AOR. Mainly to tests more than only the RURI as AOR: registered("location","$fu");
  • "aor_avp" module parameter is dropped and useless

Added lines 172-176:

PERMISSION module

  • allow_trusted(), allow_address() are allowed to be used in reply route.

Changed lines 182-184 from:

auth_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)
to:

AUTH module

  • added module parameter 'disable_nonce_check' that allows disabling the nonce re-usability checking
  • Use the STALE_NONCE error code for the nonce reused case as well
Changed lines 188-194 from:

avp_radius module

to:

DISPATCHER module

  • more efficient way of generating the probing requests
  • aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()

auth_radius module

Changed line 198 from:

group_radius module

to:

avp_radius module

Changed line 202 from:

uri_radius module

to:

group_radius module

Changed lines 205-209 from:
to:

uri_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)
Added line 221:

Changed line 223 from:
  • use DB API function for proper check on the table verions
to:
  • use DB API function for proper check on the table version
Changed lines 226-236 from:

RLS module

  • use rls-services document to take the list instead of resource-list document
  • send 200 OK faster so that retransmissions don't occur because of time consuming processing
  • added presence_server exported parameter to have the possibility to set the address of the presence server and avoid Subscribe messages being sent by the RLS bouncing on and off the main proxy
  • added special return code for rls_handle_notify function to show wheter the Notify request was processed or not by RLS (suggested by Adrian Georgescu
  • added a INFO level message for Subscribe messages processed by RLS with the format : Subscription from [watcher] for resource list uri [list_uri] expanded to [no_of_contacts] contacts (suggested by Adrian Georgescu)
  • updated the use of sockinfo field from subst_t structure to the definition commited in rev 4856
  • fixed a bug in timer_notify_update function related to the relevance of expires value(relative instead of absolute)
  • added deleting record from rls_presentity table when a Notify with subscription-state=terminate is received instead of being deleted on timer
to:

Added line 232:

Deleted line 233:

new:

Changed lines 237-250 from:

AUTH module

new:

  • added module parameter 'disable_nonce_check' that allows disabling the nonce reusability checking
  • Use the STALE_NONCE error code for the nonce reused case as well

DISPATCHER module

new:

  • more efficient way of generating the probing requests
  • aligned lcr module to new way of filling in branches in Failure Route (which is the same as for Request Route):
	first branch goes to RURI
	following branches are added with append_branch()
to:

Deleted line 238:

new:

Added line 242:

Deleted line 243:

new:

Added lines 246-247:

Changed lines 249-252 from:

-aligned lcr module to new way of filling in branches in Failure Route (which is the same as for Request Route):

	first branch goes to RURI
	following branches are added with append_branch()
to:
  • aligned lcr module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()

Changed lines 254-257 from:

-aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route):

	first branch goes to RURI
	following branches are added with append_branch()
to:
  • aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()

Changed lines 259-273 from:

-aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route):

	first branch goes to RURI
	following branches are added with append_branch()

PERMISSION module

new: allow_trusted(), allow_address() are allowed to be used in reply route.

registrar module

new:

  • registered(), save() and lookup() functions may take an optional second param with a custome AOR. Mainly to tests more than only the RURI as AOR: registered("location","$fu");
  • "aor_avp" module parameter is dropped and useless
to:
  • aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route): (1) first branch goes to RURI; (2) following branches are added with append_branch()
Added line 269:
Deleted line 280:

TO BE completed.

February 02, 2009, at 07:39 PM by 81.180.102.217 -
Changed line 94 from:
  • adding message context for the accounted values - an extra accounting value may come from request context, but also from reply context. This new functionality provides easy and automatic access to all information from the reply. Read
to:
  • extra accounting from replies - an extra accounting value may come from request context, but also from reply context. This new functionality provides easy and automatic access to all information from the reply. Read http://lists.opensips.org/pipermail/users/2008-November/001584.html
Deleted line 97:
Added line 134:
Added line 139:
Changed lines 141-143 from:

auth_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)
to:

NATHELPER module

  • improved logic for extracting the body from the SIP message
  • New rtpproxy_offer() and rtpproxy_answers() functions whose purpose is similar to force_rtp_proxy's 'S' flag (to allow SDP-less INVITEs), but providing cleaner API.
  • New family of functions rtpproxy_stream2uac(), rtpproxy_stream2uas(), rtpproxy_stop_stream2uac() and rtpproxy_stop_stream2uas() allowing to play pre-recorded announcement/MOH to one or both parties in response to various events. This feature requires latest 1.2 version snapshot of RTPproxy available at http://www.rtpproxy.org
  • Inclease list of recognizable and proxable streams with rtp/avpf, rtp/savp and udp/bfcp.
Changed lines 149-151 from:

avp_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)
to:

RR module

  • added new PV - $rr_params to export the entire Route param string
Changed lines 154-159 from:

group_radius module

to:

EXEC module

  • New extension in exec module (based on exec_avp code) that enables to read an environment variable and put its value inside an avp. For example, exec_getenv("HOSTNAME",$avp(s:hostname));

auth_radius module

Changed line 163 from:

uri_radius module

to:

avp_radius module

Deleted lines 165-171:

---

SST module

  • fixed improper setting of the dialog timeout value (from sst to dialog)
  • fixed sending of malformed replies
  • set the default value of MINSE to 60 if the header exists
Changed lines 167-170 from:

gflags module

  • fixed is_gflag MI function - function returns true if all bits (from bitmask) are set
to:

group_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)
Changed lines 171-177 from:

NATHELPER module

  • improved logic for extracting the body from the SIP message
  • New rtpproxy_offer() and rtpproxy_answers() functions whose purpose is similar to force_rtp_proxy's 'S' flag (to allow SDP-less INVITEs), but providing cleaner API.
  • New family of functions rtpproxy_stream2uac(), rtpproxy_stream2uas(), rtpproxy_stop_stream2uac() and rtpproxy_stop_stream2uas() allowing to play pre-recorded announcement/MOH to one or both parties in response to various events. This feature requires latest 1.2 version snapshot of RTPproxy available at http://www.rtpproxy.org
  • Inclease list of recognizable and proxable streams with rtp/avpf, rtp/savp and udp/bfcp.
to:

uri_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)

---

SST module

  • fixed improper setting of the dialog timeout value (from sst to dialog)
  • fixed sending of malformed replies
  • set the default value of MINSE to 60 if the header exists

gflags module

  • fixed is_gflag MI function - function returns true if all bits (from bitmask) are set
Changed lines 187-190 from:

new:

  • use DB API function for proper check on the table verions (4843)
  • new statistic variables ??
to:
  • use DB API function for proper check on the table verions
  • new statistic variables
Added lines 191-205:
  • use rls-services document to take the list instead of resource-list document
  • send 200 OK faster so that retransmissions don't occur because of time consuming processing
  • added presence_server exported parameter to have the possibility to set the address of the presence server and avoid Subscribe messages being sent by the RLS bouncing on and off the main proxy
  • added special return code for rls_handle_notify function to show wheter the Notify request was processed or not by RLS (suggested by Adrian Georgescu
  • added a INFO level message for Subscribe messages processed by RLS with the format : Subscription from [watcher] for resource list uri [list_uri] expanded to [no_of_contacts] contacts (suggested by Adrian Georgescu)
  • updated the use of sockinfo field from subst_t structure to the definition commited in rev 4856
  • fixed a bug in timer_notify_update function related to the relevance of expires value(relative instead of absolute)
  • added deleting record from rls_presentity table when a Notify with subscription-state=terminate is received instead of being deleted on timer

SL module

  • new internal function to fetch the generated to_tag

CARRIERROUATE module

Changed lines 207-222 from:
  • ANCA (4854) - - fixed bugs in RLS discovered at SIPIT
	- use rls-services document to take the list instead of resource-list document
	- send 200 OK faster so that retransmissions don't occur because of time consumming processing
	- added presence_server exported parameter to have the possibility to set the address of the presence server and avoid Subscribe messages beeing sent by the RLS bouncing on and off the main proxy
	- fixed wrong double quotes in Content-Type (thanks also to Yoo Chan Jeon <yoojeon@gmail.com> for noticing this)
	- fixed a memory leack for subscribing passing through rls but were for presence server
	- check first the condition of containing header "Supported: eventlist" so as to avoid additional processing for messages that are not for RLS
  • ANCA (4871) - - added special return code for rls_handle_notify function to show wheter the Notify request was processed or not by RLS (suggested by Adrian Georgescu<ag@ag-projects.com>

- added a INFO level message for Subscribe messages processed by RLS with the format

	Subscription from [watcher] for resource list uri [list_uri] expanded to [no_of_contacts] contacts (suggested by Adrian Georgescu<ag@ag-projects.com>)

- updated the use of sockinfo field from subst_t structure to the definition commited in rev 4856 - fixed a bug in timer_notify_update function related to the relevance of expires value(relative instead of absolute) - added deleting record from rls_presentity table when a Notify with subscription-state=terminate is received instead of beeing deleted on timer

SL module

to:
  • fetch support

AUTH module

Changed lines 212-214 from:
  • new internal function to fetch the generated to_tag

RR module

to:
  • added module parameter 'disable_nonce_check' that allows disabling the nonce reusability checking
  • Use the STALE_NONCE error code for the nonce reused case as well

DISPATCHER module

Changed lines 218-225 from:
  • added new PV - $rr_params to export the entire Route param string

EXEC module

  • New extension in exec module (based on exec_avp code) that enables to read an environment variable and put its value inside an avp. For example, exec_getenv("HOSTNAME",$avp(s:hostname));

CARRIERROUATE module

to:
  • more efficient way of generating the probing requests
  • aligned lcr module to new way of filling in branches in Failure Route (which is the same as for Request Route):
	first branch goes to RURI
	following branches are added with append_branch()

GROUP module

Changed lines 226-229 from:
  • fetch support

AUTH module

to:
  • Acceptance of a pseudovariable as second argument (group to check) of is_user_in function().

CFGUTILS module

Changed lines 231-238 from:
  • added module parameter 'disable_nonce_check' that allows disabling the nonce reusability checking
  • Use the STALE_NONCE error code for the nonce reused case as well

DISPATCHER module

new:

  • more efficient way of generating the probing requests
  • aligned lcr module to new way of filling in branches in Failure Route (which is the same as for Request Route):
to:
  • Acceptance of a pseudovariable argument in sleep and usleep functions

LCR module

-aligned lcr module to new way of filling in branches in Failure Route (which is the same as for Request Route):

Changed lines 238-239 from:

GROUP module

to:

UAC REDIRECT module

-aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route):

	first branch goes to RURI
	following branches are added with append_branch()

CPL-c module

-aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route):

	first branch goes to RURI
	following branches are added with append_branch()

PERMISSION module

Changed lines 250-253 from:
  • Acceptance of a pseudovariable as second argument (group to check) of is_user_in function().

CFGUTILS module

to:

allow_trusted(), allow_address() are allowed to be used in reply route.

registrar module

Deleted lines 254-277:
  • Acceptance of a pseudovariable argument in sleep and usleep functions

LCR module

-aligned lcr module to new way of filling in branches in Failure Route (which is the same as for Request Route):

	first branch goes to RURI
	following branches are added with append_branch()

UAC REDIRECT module

-aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route):

	first branch goes to RURI
	following branches are added with append_branch()

CPL-c module

-aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route):

	first branch goes to RURI
	following branches are added with append_branch()

PERMISSION module

new: allow_trusted(), allow_address() are allowed to be used in reply route.

registrar module

new:

February 02, 2009, at 07:32 PM by 81.180.102.217 -
Changed line 77 from:
  • at timeout, the dialog module automatically sends BYE in both directions.
to:
  • Automatic call termination on dialog timeout (by sending BYE in both directions). Read http://lists.opensips.org/pipermail/users/2008-October/001116.html
Changed lines 92-95 from:

Pua module

  • xcap-diff event support
to:

ACC module

  • adding message context for the accounted values - an extra accounting value may come from request context, but also from reply context. This new functionality provides easy and automatic access to all information from the reply. Read
  • early_media module parameter triggers reply accounting for all provisional replies with body (not only 183).

Changed lines 101-102 from:

new:

  • added support for multiple DB connection (different DBs, different DB types, different DB hosts). Module parameter "db_url" allows multiple definitions. All AVPOPS DB ops may indicate the usage of a specific/different db_url.
to:
  • added support for multiple DB connection (different DBs, different DB types, different DB hosts). Module parameter "db_url" allows multiple definitions. All AVPOPS DB ops may indicate the usage of a specific/different db_url.
Added lines 106-124:

TEXTOPS module

  • added two new functions to be used from the script:
    • strip_body() : deletes the message body
    • add_body(new_body, content_type): adds a body to the message, replacing the initial one if it exists

TM module

  • minor branch for parallel forking - minor branch is a branch not taken into account during branch selection when closing a transaction). Read http://lists.opensips.org/pipermail/users/2008-October/000748.html
  • as TM is doing automatic release of the transactions at the end of script, the t_release() function is not longer available in script. This a low level function in transaction processing and all related processing is automatically done, so the user must not be aware or take care of it -> easier scripting now.
  • new functions added:
	t_cancel_branch()
	t_cancel_call()
  • in failure route, use the msg RURI as first branch (as for request route), instead of using only the append branches. This is part of a bigger plan to align the scripting in failure route and request route. There will be no need to call append_branch() in failure route, just be make use of the RURI for relay
  • fixed e2eACK matching for local replied transaction - extended also for 3261 matching.
  • fixed race in concurrent callback execution -> random crash

Deleted line 125:

new:

Deleted line 131:

fixes:

Changed lines 133-134 from:
  • add "transport=proto" paramter to the contact if other proto than UDP is used.
to:
  • add "transport=proto" parameter to the contact if other proto than UDP is used.

Pua module

  • xcap-diff event support

Deleted line 140:

new:

Changed line 143 from:
to:

Changed lines 147-148 from:
to:

Added line 151:

Changed line 156 from:
to:

---

Changed line 162 from:
to:

Changed lines 167-178 from:

TM module

  • minor branch for parallel forking (minor branch is a branch not taken into account during branch selection when closing a transaction)
  • Added infrastructure for tm callback parameter cleanup.(internal)
  • as TM is doing automatic release of the transactions at the end of script, the t_release() function is not longer available in script. This a low level function in transaction processing and all releated processing is automatically done, so the user must not be aware or take care of it.
  • new functions added:
	t_cancel_branch()
	t_cancel_call()
  • in failure route, use the msg RURI as first branch (as for request route), instead of using only the appened branches. This is part of a bigger plan to align the scripting in failure route and request route. There will be no need to call append_branch() in failure route, just be make use of the RURI for relay

fixes:

  • fixed e2eACK mathing for local replied transaction - extended also for 3261 matching.
  • fixed race in concurent callback execution -> random crash
to:

Changed lines 170-190 from:
  • Merge in several recent RTPproxy related features from the iptel's SER.

o New rtpproxy_offer() and rtpproxy_answers() functions whose purpose is similar to force_rtp_proxy's 'S' flag (to allow SDP-less INVITEs), but providing cleaner API. o New family of functions rtpproxy_stream2uac(), rtpproxy_stream2uas(), rtpproxy_stop_stream2uac() and rtpproxy_stop_stream2uas() allowing to play pre-recorded announcement/MOH to one or both parties in response to various events. This feature requires latest 1.2 version snapshor of RTPproxy available at http://www.rtpproxy.org o Inclease list of recognizable and proxable streams with rtp/avpf, rtp/savp and udp/bfcp. (rev 4935)

o Move some of the functions out of the overly long nathelper.c.

TEXTOPS module

  • added two new functions to be used from the script:
	- strip_body() : deletes the message body
	- add_body(new_body, content_type): adds a body to the message, replacing the initial one if it exi

ACC module

to:
  • New rtpproxy_offer() and rtpproxy_answers() functions whose purpose is similar to force_rtp_proxy's 'S' flag (to allow SDP-less INVITEs), but providing cleaner API.
  • New family of functions rtpproxy_stream2uac(), rtpproxy_stream2uas(), rtpproxy_stop_stream2uac() and rtpproxy_stop_stream2uas() allowing to play pre-recorded announcement/MOH to one or both parties in response to various events. This feature requires latest 1.2 version snapshot of RTPproxy available at http://www.rtpproxy.org
  • Inclease list of recognizable and proxable streams with rtp/avpf, rtp/savp and udp/bfcp.

URI_DB module

Deleted lines 176-181:
  • early_media module parameter triggers reply accouting for all provisional replies with body (not only 183).
  • adding message context for the accouted values - an extra accouting value may come from request context, but also from reply context. This new functionality provides easy and automatic access to all information from the reply.

URI_DB module

new:

February 02, 2009, at 07:18 PM by 81.180.102.217 -
Changed lines 10-23 from:

Generic Fixes

  • OS portability (mainly Solaris fixes)
  • fixed memory leaks (modules and core)
  • reduced memory fragmentation
  • replaced strncmp by strncasecmp in comparing SIP/SDP headers

Tools fixing

  • auto detection for libraries location
  • compile options
  • solaris packaging
  • opensipsctl - dialplan support
  • opensipcctl - changed behaviour in restart. If opensips is already stopped, does not exit, but it tries to start it.
to:

Added lines 24-25:

Changed line 41 from:
to:

Changed lines 46-47 from:

The support in DB API provides support for prepared statements. Modules using DB API may or may not request the usage of prepared statements instead of normal queries.

to:

The support in DB API provides support for prepared statements. Modules using DB API may or may not request the usage of prepared statements instead of normal queries.

Changed lines 67-71 from:
  • instead of keep allocating/freeing for each DB result a number of chunks ( function of no of columns and no of rows), right now only 3 mem chuncks are used for a response

Reducing the memory fragmentation is a key factor in producing a robust and endurable application.

to:
  • instead of keep allocating/freeing for each DB result a number of chunks ( function of no of columns and no of rows), right now only 3 mem chuncks are used for a response.

Reducing the memory fragmentation is a key factor in producing a robust and endurable application.


Deleted lines 271-272:

TO BE completed.

Added lines 273-291:

Generic Fixes

  • OS portability (mainly Solaris fixes)
  • fixed memory leaks (modules and core)
  • reduced memory fragmentation
  • replaced strncmp by strncasecmp in comparing SIP/SDP headers

Tools fixing

  • auto detection for libraries location
  • compile options
  • solaris packaging
  • opensipsctl - dialplan support
  • opensipcctl - changed behaviour in restart. If opensips is already stopped, does not exit, but it tries to start it.

TO BE completed.


February 02, 2009, at 07:15 PM by 81.180.102.217 -
Changed lines 34-36 from:
  • added support in the MI internal API for doing flush (partial write of the MI reply tree). This will allow functions that output large amount of date to return the data in multiple sequences. -> function will be able to retune any amount of data without any memory issues.
to:
  • added support in the MI internal API for doing flush (partial write of the MI reply tree). This will allow functions that output large amount of date to return the data in multiple sequences -> function will be able to retune any amount of data without any memory issues.

Memory cache support

Memory Cache API

A new API was added in core to allow development of different modules that implements memory functionalities like memory_store and memory_fetch. See the MemCache Tutorial

Local memory store

New module that implements local memory storage support by storing Attribute-Value pairs in shared memory

MemCache implementation

Future new implementation of the memory cache via memcache system (for external interaction) - not necessary planned for 1.5

SystemV sharing

Future new implementation of the memory cache via System V shared mem (for external interaction) - not necessary planned for 1.5

DB enhancement

Prepared statements

The support in DB API provides support for prepared statements. Modules using DB API may or may not request the usage of prepared statements instead of normal queries.

Right now, only the mysql driver (db_mysql) implements the prepared statements support.

There are several modules already using the prepared statements support:

  • acc
  • auth_db
  • alias_db
  • dialog
  • domain
  • presence_*
  • siptrace
  • speeddial
  • uri_db
  • usrloc
Memory fragmentation

The entire way of managing the DB result structure was reworked in order to avoid memory fragmentation:

  • the idea was to eliminate the usage of small chucks of memory (4-10 bytes);
  • instead of keep allocating/freeing for each DB result a number of chunks ( function of no of columns and no of rows), right now only 3 mem chuncks are used for a response

Reducing the memory fragmentation is a key factor in producing a robust and endurable application.

Deleted line 82:

new:

Changed lines 86-90 from:
  • 1) dialog persistent falgs added. These flags will be visible for all the requests that belong to the same dialog.

Available functions:

	- set_dlg_flag("n");
	- reset_dlg_flag("n");
	- is_dlg_flag_set("n");
to:
  • dialog persistent flags added. These flags will be visible for all the requests that belong to the same dialog. Available functions:
    • set_dlg_flag("n");
    • reset_dlg_flag("n");
    • is_dlg_flag_set("n");
Changed lines 91-95 from:
	- $DLG_flags  (can be used directly from script via bitwise ops)

2) dialog persistent attributes. These attribute are visible for all the requests that belong to the sae dialog; they can be manipulated (added,fetched) during the dialog lifetime. Available functions:

	- store_dlg_value("attr_name","attr_val");  // attr_val may contain PVs
	- fetch_dlg_value("attr_name","pv");  // pv is $var or $avp
to:
  • $DLG_flags (can be used directly from script via bitwise ops)
  • dialog persistent attributes - These attribute are visible for all the requests that belong to the same dialog; they can be manipulated (added,fetched) during the dialog lifetime. Available functions:
    • store_dlg_value("attr_name","attr_val"); // attr_val may contain PVs
    • fetch_dlg_value("attr_name","pv"); // pv is $var or $avp
Changed lines 96-99 from:
	- $dlg_val("attr_name");  // set and get available

3) added new function create_dialog() to explicitly create the dialog from the script (instead of waiting for the t_relay()) - this function is also available via the module API

to:
  • $dlg_val("attr_name"); // set and get available
  • added new function create_dialog() to explicitly create the dialog from the script (instead of waiting for the t_relay()) - this function is also available via the module API

Pua module

  • xcap-diff event support

AVPOPS module

new:

  • added support for multiple DB connection (different DBs, different DB types, different DB hosts). Module parameter "db_url" allows multiple definitions. All AVPOPS DB ops may indicate the usage of a specific/different db_url.
Deleted lines 107-120:
  • fixed tight dialog matching for pre 200 OK messages
  • fixed race condition for matching post 200 OK messages
  • prevent initial requests with preloaded route to be processed as sequential requests
  • fixed dialog searching (value based) through the profiles - a dialog may be inserted in the same profile multiple times, but with different values, so iterate thorugh all of them.
  • several fixes on DB_MODE_SHUTDOWN mode

Pua module

  • xcap-diff event support

AVPOPS module

new:

  • added support for multiple DB connection (different DBs, different DB types, different DB hosts). Module parameter "db_url" allows multiple definitions. All AVPOPS DB ops may indicate the usage of a specific/different db_url.

fixes:

Changed lines 285-321 from:

DB area

Prepared statements

The support in DB API was already commited.There is a first module already using prepared statements support for queries - auth_db.Left to do:

  • upload on SVN the prepared statement implementation for mysql driver; it is under testing right now
  • modify other modules (like usrloc, presence, etc) to use prepared statements (when available)
Memory fragmentation

Rework the DB result structure in order to avoid memory fragmentation:

  • the idea is eliminate the usage of small chucks of memory (4-10 bytes);
  • preliminary work shows that it is possible to reduce with almost 60% the numbers of mem chunks

Memory cache support

Memory Cache API

A new API in core to allow development of different modules that implements memory functionalities like memory_store and memory_fetchStatus: API is already ready, under final tests -> to be uploaded

Local memory store

New module that implements local memory storage support by storing Attribute-Value pairs in shared memoryStatus: ready, under final tunings and testing

MemCache implementation

Future new implementation of the memory cache via memcache system (for external interaction) - not necessary planned for 1.5

SystemV sharing

Future new implementation of the memory cache via System V shared mem (for external interaction) - not necessary planned for 1.5

to:
February 02, 2009, at 07:00 PM by 81.180.102.217 -
Changed line 12 from:
  • fixed memory leaks
to:
  • fixed memory leaks (modules and core)
Changed lines 33-41 from:
  • (5085) fixed bug in creating the pid file : if opensips is changing user, it needs also to change the owner of the pid file, so that it will be able to deleted at the end.

Affected scenario :

  1) opensips is launched by root but configured to run as opensips user
  2) pid file is created as user root -> pid file is owned by root
  3) opensips deamonizes and runs as opensips
  4) opensips shutdown and, as user opensips is not able to remove pid file which is owned by root
  • added support in the MI internal API for doing flush (partial write of the MI reply tree). This will allow functions that output large amount of date to return the data in multiple sequances. -> function will be able to retune any amount of data without any memeory issues.
to:
  • fixed bug in creating the pid file : if opensips is changing user, it needs also to change the owner of the pid file, so that it will be able to deleted at the end. (Affected scenario : (1) opensips is launched by root but configured to run as opensips user; (2) pid file is created as user root -> pid file is owned by root; (3) opensips deamonizes and runs as opensips ; (4) opensips shutdown and, as user opensips is not able to remove pid file which is owned by root
  • added support in the MI internal API for doing flush (partial write of the MI reply tree). This will allow functions that output large amount of date to return the data in multiple sequences. -> function will be able to retune any amount of data without any memory issues.
January 26, 2009, at 01:21 PM by 81.180.102.217 -
Changed line 166 from:

RLS module

to:

RLS module

January 26, 2009, at 01:20 PM by 81.180.102.217 -
Added lines 10-250:

Generic Fixes

  • OS portability (mainly Solaris fixes)
  • fixed memory leaks
  • reduced memory fragmentation
  • replaced strncmp by strncasecmp in comparing SIP/SDP headers

Tools fixing

  • auto detection for libraries location
  • compile options
  • solaris packaging
  • opensipsctl - dialplan support
  • opensipcctl - changed behaviour in restart. If opensips is already stopped, does not exit, but it tries to start it.

Core

  • Add support for parsing the bandwidth attribute inside SDP: b=<bwtype>:<bandwidth>
  • Added support in the parser to identify the content-subtype "media_control+xml" [RFC5168]
  • internal rework of the functions for setting the RURI
  • internal L new functions for searching the headers (rev 4833)
  • internal optimization & cleanup of script functions operating with strings : STRING params replaced with STR to avoid len calculation
  • allow negative debug level (starting from L_ERR, the debug vals are negative)
  • removed old "reply_to_via" core paramter as it is violating the RFC 3261.
  • fix bug in preserving URI scheme - all functions that are performing partial change of the RURI (like rewritehostport, rewriteuser, strip, prefix, striptail, setport, sethost) were overwriting the URI scheme to SIP
  • (5085) fixed bug in creating the pid file : if opensips is changing user, it needs also to change the owner of the pid file, so that it will be able to deleted at the end.

Affected scenario :

  1) opensips is launched by root but configured to run as opensips user
  2) pid file is created as user root -> pid file is owned by root
  3) opensips deamonizes and runs as opensips
  4) opensips shutdown and, as user opensips is not able to remove pid file which is owned by root
  • added support in the MI internal API for doing flush (partial write of the MI reply tree). This will allow functions that output large amount of date to return the data in multiple sequances. -> function will be able to retune any amount of data without any memeory issues.

Dialog Module

new:

  • improved dialog state machine to be more flexible
  • better dialog matching (more efficient)
  • at timeout, the dialog module automatically sends BYE in both directions.
  • 1) dialog persistent falgs added. These flags will be visible for all the requests that belong to the same dialog.

Available functions:

	- set_dlg_flag("n");
	- reset_dlg_flag("n");
	- is_dlg_flag_set("n");

Available PVs:

	- $DLG_flags  (can be used directly from script via bitwise ops)

2) dialog persistent attributes. These attribute are visible for all the requests that belong to the sae dialog; they can be manipulated (added,fetched) during the dialog lifetime. Available functions:

	- store_dlg_value("attr_name","attr_val");  // attr_val may contain PVs
	- fetch_dlg_value("attr_name","pv");  // pv is $var or $avp

Available PVs:

	- $dlg_val("attr_name");  // set and get available

3) added new function create_dialog() to explicitly create the dialog from the script (instead of waiting for the t_relay()) - this function is also available via the module API

fixes:

  • fixed tight dialog matching for pre 200 OK messages
  • fixed race condition for matching post 200 OK messages
  • prevent initial requests with preloaded route to be processed as sequential requests
  • fixed dialog searching (value based) through the profiles - a dialog may be inserted in the same profile multiple times, but with different values, so iterate thorugh all of them.
  • several fixes on DB_MODE_SHUTDOWN mode

Pua module

  • xcap-diff event support

AVPOPS module

new:

  • added support for multiple DB connection (different DBs, different DB types, different DB hosts). Module parameter "db_url" allows multiple definitions. All AVPOPS DB ops may indicate the usage of a specific/different db_url.

fixes:

  • fixed bogus handling of table name in avpops_db_xxxx functions

PRESENCE module

new:

  • new event "dialog;sla"
  • introduce MI command to trigger database cleanup
  • improved Subscribe receive sockinfo storing and processing:
	- keep a pointer to the sockinfo structure in memory
	- when updating in database - store the corresponding string
	- when fetching dialog info from database parse the string and search for the sockinfo structure

fixes:

  • fixed BLA when call in put on hold
  • add "transport=proto" paramter to the contact if other proto than UDP is used.

auth_radius module

new:

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)

avp_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)

group_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)

uri_radius module

  • use SIP callid as Acct-Session-Id in orde to create a relationship between an auth and acc request (RFC2866, xection 5.5)

SST module

  • fixed improper setting of the dialog timeout value (from sst to dialog)
  • fixed sending of malformed replies
  • set the default value of MINSE to 60 if the header exists

gflags module

  • fixed is_gflag MI function - function returns true if all bits (from bitmask) are set

TM module

  • minor branch for parallel forking (minor branch is a branch not taken into account during branch selection when closing a transaction)
  • Added infrastructure for tm callback parameter cleanup.(internal)
  • as TM is doing automatic release of the transactions at the end of script, the t_release() function is not longer available in script. This a low level function in transaction processing and all releated processing is automatically done, so the user must not be aware or take care of it.
  • new functions added:
	t_cancel_branch()
	t_cancel_call()
  • in failure route, use the msg RURI as first branch (as for request route), instead of using only the appened branches. This is part of a bigger plan to align the scripting in failure route and request route. There will be no need to call append_branch() in failure route, just be make use of the RURI for relay

fixes:

  • fixed e2eACK mathing for local replied transaction - extended also for 3261 matching.
  • fixed race in concurent callback execution -> random crash

NATHELPER module

  • improved logic for extracting the body from the SIP message
  • Merge in several recent RTPproxy related features from the iptel's SER.

o New rtpproxy_offer() and rtpproxy_answers() functions whose purpose is similar to force_rtp_proxy's 'S' flag (to allow SDP-less INVITEs), but providing cleaner API. o New family of functions rtpproxy_stream2uac(), rtpproxy_stream2uas(), rtpproxy_stop_stream2uac() and rtpproxy_stop_stream2uas() allowing to play pre-recorded announcement/MOH to one or both parties in response to various events. This feature requires latest 1.2 version snapshor of RTPproxy available at http://www.rtpproxy.org o Inclease list of recognizable and proxable streams with rtp/avpf, rtp/savp and udp/bfcp. (rev 4935)

o Move some of the functions out of the overly long nathelper.c.

TEXTOPS module

  • added two new functions to be used from the script:
	- strip_body() : deletes the message body
	- add_body(new_body, content_type): adds a body to the message, replacing the initial one if it exi

ACC module

new:

  • early_media module parameter triggers reply accouting for all provisional replies with body (not only 183).
  • adding message context for the accouted values - an extra accouting value may come from request context, but also from reply context. This new functionality provides easy and automatic access to all information from the reply.

URI_DB module

new:

  • use DB API function for proper check on the table verions (4843)
  • new statistic variables ??

RLS module

new:

  • ANCA (4854) - - fixed bugs in RLS discovered at SIPIT
	- use rls-services document to take the list instead of resource-list document
	- send 200 OK faster so that retransmissions don't occur because of time consumming processing
	- added presence_server exported parameter to have the possibility to set the address of the presence server and avoid Subscribe messages beeing sent by the RLS bouncing on and off the main proxy
	- fixed wrong double quotes in Content-Type (thanks also to Yoo Chan Jeon <yoojeon@gmail.com> for noticing this)
	- fixed a memory leack for subscribing passing through rls but were for presence server
	- check first the condition of containing header "Supported: eventlist" so as to avoid additional processing for messages that are not for RLS
  • ANCA (4871) - - added special return code for rls_handle_notify function to show wheter the Notify request was processed or not by RLS (suggested by Adrian Georgescu<ag@ag-projects.com>

- added a INFO level message for Subscribe messages processed by RLS with the format

	Subscription from [watcher] for resource list uri [list_uri] expanded to [no_of_contacts] contacts (suggested by Adrian Georgescu<ag@ag-projects.com>)

- updated the use of sockinfo field from subst_t structure to the definition commited in rev 4856 - fixed a bug in timer_notify_update function related to the relevance of expires value(relative instead of absolute) - added deleting record from rls_presentity table when a Notify with subscription-state=terminate is received instead of beeing deleted on timer

SL module

new:

  • new internal function to fetch the generated to_tag

RR module

new:

  • added new PV - $rr_params to export the entire Route param string

EXEC module

  • New extension in exec module (based on exec_avp code) that enables to read an environment variable and put its value inside an avp. For example, exec_getenv("HOSTNAME",$avp(s:hostname));

CARRIERROUATE module

new:

  • fetch support

AUTH module

new:

  • added module parameter 'disable_nonce_check' that allows disabling the nonce reusability checking
  • Use the STALE_NONCE error code for the nonce reused case as well

DISPATCHER module

new:

  • more efficient way of generating the probing requests
  • aligned lcr module to new way of filling in branches in Failure Route (which is the same as for Request Route):
	first branch goes to RURI
	following branches are added with append_branch()

GROUP module

new:

  • Acceptance of a pseudovariable as second argument (group to check) of is_user_in function().

CFGUTILS module

new:

  • Acceptance of a pseudovariable argument in sleep and usleep functions

LCR module

-aligned lcr module to new way of filling in branches in Failure Route (which is the same as for Request Route):

	first branch goes to RURI
	following branches are added with append_branch()

UAC REDIRECT module

-aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route):

	first branch goes to RURI
	following branches are added with append_branch()

CPL-c module

-aligned module to new way of filling in branches in Failure Route (which is the same as for Request Route):

	first branch goes to RURI
	following branches are added with append_branch()

PERMISSION module

new: allow_trusted(), allow_address() are allowed to be used in reply route.

registrar module

new:

  • registered(), save() and lookup() functions may take an optional second param with a custome AOR. Mainly to tests more than only the RURI as AOR: registered("location","$fu");
  • "aor_avp" module parameter is dropped and useless
January 26, 2009, at 12:40 PM by 81.180.102.217 -
Changed lines 51-91 from:

C) Data flush in MI commands - this new addition is to fix the limitation related to commands not able to return large volume of data in replies (like listing all the registered users, all the ongoing dialogs, etc)

         - MI API was already changed to allow such flush commands
         - mi_fifo module implements the new flush functionality
             Status: under testing, not commited yet
         - implement flush for mi_datagram and mi_xmlrpc
             Status: under devel

D) new load-balancing module - module to do traffic routing based on real load-balancing (by counting the load -as ongoing calls- of each peer).

   Status: under development

E) SIPtrace enhancements:

        - dialog support
        - stateless ACK tracing to be fixed
        - fixed Cancel tracing

F) new SIP identity module:

       an old submission for OpenSER 1.2, the identity module was 

refurbished and updated for OpenSIPS/OpenSER 1.5.0

       Status: testing and fixing some design limitation

G) Domains module - export the domain to core in order to be used as aliases (fixes the preloaded RR when domain is used instead of IPs)

       - new core API to allow alias registrations
       - upgrade domains module to register the loaded modules via core API

       Status: under devel

H) Various small (but important) module enhancements:

    1) dialog module
          - ability to check if the Route info from a sequential request 

do matches the route info stored in the dialog - this will allow to check the validity of sequential requests and to detect malicious BYE (for example)

to:

Data flush in MI commands

This new addition is to fix the limitation related to commands not able to return large volume of data in replies (like listing all the registered users, all the ongoing dialogs, etc).Status:

  • MI API was already changed to allow such flush commands ; Status: on SVN
  • mi_fifo module implements the new flush functionality ; Status: under testing, not commited yet
  • implement flush for mi_datagram and mi_xmlrpc ; Status: under devel

Load-balancing module

New load-balancing module - module to do traffic routing based on real load-balancing (by counting the load -as ongoing calls- of each peer).Status: under development

SIPtrace module

Enhancements:

  • dialog support
  • stateless ACK tracing to be fixed
  • fixed Cancel tracing

SIP identity module

An old submission for OpenSER 1.2, the identity module was refurbished and updated for OpenSIPS/OpenSER 1.5.0Status:

  • testing
  • fixing some design limitation

Domains module

Export the domain to core in order to be used as aliases (fixes the preloaded RR when domain is used instead of IPs):

  • new core API to allow alias registrations
  • upgrade domains module to register the loaded modules via core API

Status: under devel

Various small (but important) module enhancements:

dialog module
  • Ability to check if the Route info from a sequential request do matches the route info stored in the dialog - this will allow to

check the validity of sequential requests and to detect malicious BYE (for example)

Changed lines 93-95 from:
    2) TM module
          - t_relay - automate creation of transaction -> more simple to 

use the function

to:
TM module
  • t_relay - automate creation of transaction -> more simple to use the function
Changed lines 96-104 from:
    3) UAC module
          - uac_replace_from() allowed per branch - this is a bit 

complicated as requires changes in TM

    4) Nathelper
          - simplify the usage of sets of rtpproxys - no need for 

additional functions as we can pass now more than 2 params to module functions.

to:
UAC module
  • uac_replace_from() allowed per branch - this is a bit complicated as requires changes in TM
Nathelper
  • simplify the usage of sets of rtpproxys - no need for additional functions as we can pass now more than 2 params to module functions.
January 26, 2009, at 12:35 PM by 81.180.102.217 -
Changed lines 3-4 from:
to:

(:toc-float Table of Content:)

January 26, 2009, at 12:35 PM by 81.180.102.217 -
Changed line 6 from:
to:

Changed line 10 from:
to:

Changed lines 13-104 from:

TO BE completed.

to:

DB area

Prepared statements

The support in DB API was already commited.There is a first module already using prepared statements support for queries - auth_db.Left to do:

  • upload on SVN the prepared statement implementation for mysql driver; it is under testing right now
  • modify other modules (like usrloc, presence, etc) to use prepared statements (when available)
Memory fragmentation

Rework the DB result structure in order to avoid memory fragmentation:

  • the idea is eliminate the usage of small chucks of memory (4-10 bytes);
  • preliminary work shows that it is possible to reduce with almost 60% the numbers of mem chunks

Memory cache support

Memory Cache API

A new API in core to allow development of different modules that implements memory functionalities like memory_store and memory_fetchStatus: API is already ready, under final tests -> to be uploaded

Local memory store

New module that implements local memory storage support by storing Attribute-Value pairs in shared memoryStatus: ready, under final tunings and testing

MemCache implementation

Future new implementation of the memory cache via memcache system (for external interaction) - not necessary planned for 1.5

SystemV sharing

Future new implementation of the memory cache via System V shared mem (for external interaction) - not necessary planned for 1.5

C) Data flush in MI commands - this new addition is to fix the limitation related to commands not able to return large volume of data in replies (like listing all the registered users, all the ongoing dialogs, etc)

         - MI API was already changed to allow such flush commands
         - mi_fifo module implements the new flush functionality
             Status: under testing, not commited yet
         - implement flush for mi_datagram and mi_xmlrpc
             Status: under devel

D) new load-balancing module - module to do traffic routing based on real load-balancing (by counting the load -as ongoing calls- of each peer).

   Status: under development

E) SIPtrace enhancements:

        - dialog support
        - stateless ACK tracing to be fixed
        - fixed Cancel tracing

F) new SIP identity module:

       an old submission for OpenSER 1.2, the identity module was 

refurbished and updated for OpenSIPS/OpenSER 1.5.0

       Status: testing and fixing some design limitation

G) Domains module - export the domain to core in order to be used as aliases (fixes the preloaded RR when domain is used instead of IPs)

       - new core API to allow alias registrations
       - upgrade domains module to register the loaded modules via core API

       Status: under devel

H) Various small (but important) module enhancements:

    1) dialog module
          - ability to check if the Route info from a sequential request 

do matches the route info stored in the dialog - this will allow to check the validity of sequential requests and to detect malicious BYE (for example)

    2) TM module
          - t_relay - automate creation of transaction -> more simple to 

use the function

    3) UAC module
          - uac_replace_from() allowed per branch - this is a bit 

complicated as requires changes in TM

    4) Nathelper
          - simplify the usage of sets of rtpproxys - no need for 

additional functions as we can pass now more than 2 params to module functions.

January 26, 2009, at 11:19 AM by 81.180.102.217 -
Changed lines 4-13 from:

OpenSIPS is free software released under

to:

OpenSIPS/OpenSER 1.5.0 is the current development version.

What is new in 1.5.0

TO BE completed.

What is still under development

TO BE completed.

January 26, 2009, at 11:11 AM by 81.180.102.217 -
Added lines 1-4:

Main -> Releases? -> Version 1.5.x


OpenSIPS is free software released under


Page last modified on April 25, 2013, at 04:14 PM