Thursday, December 25, 2008

Merry Christmas and Happy New Year 2009!

Day by day, we ended another year. 2008 was full of events, starting with one major release and six minor releases, participation to workshops and conferences wordlwide, adoption in new production environments and acknowledgement of running platforms with millions of users and billions of routed minutes/month using Kamailio (OpenSER), check the News archive at:

There were sad events as well, including the hijacking of the old domain name after the rename in Kamailio, still the SourceForge project goes on, with same name, proving the genuine openser project:

We maintained release 1.3.x series, last being 1.3.4, which still keeps the old name and is available at:

Life is going on, from the the latest major release, version 1.4.0, the project boosted in new features, a summary of what is new since then is available here:

An important share of effort was directed to clean the code and improve the stability and performance, a proof of maturity and the need to make the maintenance of the project easier and open for new comers. Lot of documentation was added in doxygen format inside the source code, Devel Guide was published, new developers can start new easier to enhance the application.

Reference moment for the future was the launch of SIP Router project in November - a concentration of many people with great SIP and VoIP expertise, backed up by huge programming experience in this field. This came to strengthen the development workforce, to ensure the reliability, to remove the doubts of what projects is better now or is going to develop better in the future.

So, 2009 is an year that announces already great achievements to be done in its first half:

  • 1st Quarter - release of Kamailio (OpenSER) 1.5.0
  • minor releases for 1.4x and 1.5.x
  • 2nd Quarter - release of SIP Router project as stable version
  • dedicated meeting to celebrate the first operational SIP Router and draw future directions

With the release of SIP Router project, everyone gets access to the features provided by Kamailio (OpenSER), SIP Express Router and OpenIMSCore projects:

Looking forward to a fruitful 2009!

Tuesday, December 16, 2008

Kamailio v1.4.3 Released

A new release in 1.4 series is out. Kamailio 1.4.3 is based on the latest version of branch 1.4, including many fixes in code and documentation, therefore those running 1.4.0, 1.4.1 or 1.4.2 are advised to upgrade.

Source tarballs are available at:

Detailed changelog:

Download via SVN:

svn co kamailio

Tag for this release can be browsed at:

Project site at (still using old name):

Modules' documentation:

What is new in 1.4.x release series is summarized in the announcement of v1.4.0:

Note: Kamailio is the new name of OpenSER project. First version under Kamailio name was 1.4.0. Older versions will continue to use OpenSER name.

Wednesday, December 10, 2008

Truphone - Call With Your iPod Touch

On 4th of December, 2008, Truphone increased its target market, making available their smart VoIP client available for iPod Touch:

... charming and handy to use. Still loyal to my Nokia phone, but the latest developments from Truphone for iPhone and i'Touch are really tempting ...

Tuesday, December 9, 2008

Request/Reply Attributes Access From TM

Latest developments provide access to the attributes of reply while processing the request and vice-versa.

The TM module introduces two new features:

  • access to SIP request attributes while processing a reply belonging to same transaction
  • access to SIP reply attributes while processing a request belonging to same transaction

Functionalities come as pseudo-variables, $T_req(pv) and $T_rpl(pv) - where pv can be any pseudo-variable, check documents at:

The new pseudo-variables can be used:

  • in failure_route to get the attributes of the reply causing the failure route. You can take decisions what to do with the request based on reply details
  • in onreply_route to get the attributes of the request. you can take decision what to do with the reply based on request attributes.
  • in acc to store data from reply
  • in C code (modules)

Note that couple of PV are disabled for these cases (PV will return null) - these are the PV that alter/depend on the context of the processed message, like $Ts, $Tf (but you can use $TS and $TF), $time, destination set attributes. The $avp(...) will be current avps, as they are stored in a global list. Also, in case there is a timeout or other reply generated by kamailio itself, $T_rpl(pv) will return null as there is no real reply structure behind.

Example, print the source ip of the reply in failure route:

failure_route[1] {
    xlog("reply received from: $T_rpl($si)\n");

Monday, December 8, 2008


sqlops module focuses to offer fast and easy access to SQL backends directly from the configuration file. Among its features:
  • many DB connections - the module can connect to many databases on different servers using different DB driver modules (mysql, postgres, ...) at the same time.
  • many DB results - the module can store many results of different SQL queries in separate structures at the same time. Thus is possible to work in parallel with several DB results.
  • access via pseudo-variables - the content of SQL query result is accessible via pseudo-variables.
  • array indexes - fast access to result values via array possition: [row,column].
  • persistence in process space - a result can be used many times in same worker process. Query once, use many times.

Here is an example of fetching and printing the content of a table:

sql_query("ca", "select * from domain", "ra");
xlog("rows: $dbr(ra=>rows) cols: $dbr(ra=>cols)\n");
    $var(i) = 0;
        xlog("--- SCRIPT: column[$var(i)] = $dbr(ra=>colname[$var(i)])\n");
        $var(i) = $var(i) + 1;
    $var(i) = 0;
        $var(j) = 0;
            xlog("[$var(i),$var(j)] = $dbr(ra=>[$var(i),$var(j)])\n");
            $var(j) = $var(j) + 1;
        $var(i) = $var(i) + 1;

Other advantages than the ones listed above against old avp_db_query() function:

- does not mess up fields position if the value in db is null

- use private memory, no locking

- does not iterate through linked (avp) list to get each field, direct

reference to each data structure in result array, thus much faster.

More info at:

Saturday, December 6, 2008

PV and Transformation API Updates

Pseudo-variables and transformations implemented in core for Kamailio (OpenSER) versions <= 1.4.x are now moved in pv module.

This is part of cleaning up the core, in order to keep it slimmer and less exposed to bugs. There are modules and use cases that need no PVs, therefore no need of keeping the implementation of about 100 pseudo-variables and over 30 transformations in core.

Now the core includes only an API that allows to:
- register pseudo-variables
- parse name, evaluate and set value of pseudo-variable
- register transformations
- parse name and evaluate transformations in config file

$shv(...) - shared variables, and $time(...) - broken down time, were moved from cfgutils module to pv module ($shv(...) depends on $var(...)).

To summarise, for devel version (upcoming v1.5.0 release), if you need $ru, $avp(...), $var(...), a.s.o. in your config file you have to load pv module.

Two new pseudo-variables were introduced with this occasion, $TS and $TF, see more:

Thursday, December 4, 2008

Code restructuring for Kamailio 1.5.0

The efforts to consolidate the core of Kamailio (OpenSER) and reduce duplicates of code are going on. Several modules with related functionalities were merged in others for a better and easier maintenance.
No functionality was removed, it can be now just found
in a different place.

1. gflags module
The functionality of this module was integrated into the cfgutils module. The internal functionality, function names and MI commands are the same, the parameter “initial” was renamed to “initial_gflags”.

2. options module
The functionality of this module was integrated into the siputils module. The function name was not changed, all parameters were prefixed with the "options_” string.

3. uri module
The functionality of this module was integrated into the siputils module. The function names were not changed, internal functionality is the same.

So starting from the release 1.5 you'll need to fix your "loadmodule" statements and some parameter prefixes in your config if you use one of the mentioned modules. Documentation for the functions can be found in the usual place:


Monday, December 1, 2008

25th Chaos Communication Congress

- Kamailio and 25th Chaos Communication Congress in Berlin...

Henning Westerholt, developer and board member of Kamailio (OpenSER) project, will be present this year at the 25th Chaos Communication Congress in Berlin [1], December 27th to 30th, 2008.

If you go there or you are around Berlin that time, contact Henning in case you want to meet for some hacking sessions and discussions around the Kamailio and SIP-Router projects.

For contact address, see his email posting with this announcement.