[SR-Users] Kamailio SCA Module

Andrew Mortensen admorten at isc.upenn.edu
Sat Dec 1 04:04:12 CET 2012


On Nov 30, 2012, at 5:23 PM, Robert Boisvert <rdboisvert at gmail.com> wrote:

> Andrew,
> Congratulations on your new position as a Kamailio developer!  When I saw your module (SCA) I began testing immediately since it may be a stepping stone to help me get the Polycom barge-in feature working with Kamailio.  However, I ran into a few difficulties.  Can you assist me?

Thanks for the kind words. I'll do my best to help.

> To make your existing code work as a K module I had to change a few lines of code and recompile under modules_k. Specifically, since the K definition of the ucontact structure defines ucontact->aor as str* and the S definition as str**, I changed “&c->aor” to “c->aor” in the following lines of sca_usrloc_cb.c:
> 73: if ( !sca_uri_is_shared_appearance( sca, c->aor )) {
> 74: LM_DBG( "%.*s is not a shared appearance line", STR_FMT( c->aor ));
> 79: &SCA_EVENT_NAME_CALL_INFO, c->aor ) < 0 ) {

This is no longer necessary, fortunately. The sca module no longer depends on usrloc. I've merged it into the project's master branch, in the modules directory. You should still be able to build it against the 3.3 branch.

> Since I use PostgreSQL as my SQL engine I created the SCA entries using this code:

I've also added an sca db schema file, so the db creation scripts get created automatically. Ovidiu generated the PostgreSQL create script, which you can find on the master branch in utils/kamctl/postgres.

> I applied the recommendations from your documentation on configuring Kamailio (3.3.1) and inserted the call to “sca_handle_subscribe ()” in kamailio.cfg.
> 
> ... snip ...
> 
> When I ran a tcpdump of the SIP communication (see attached pcap files) I found several anomalies:
> 	• Some packets (sca-reboot1 #22, 44, 113, 120 and sca-reboot2 #17, 38) contain spurious NUL characters in the tags section. In all tests it seems to occur in the Expire tag when Kamailio accepts the subscription.

Thanks for the captures. I've tracked down the cause for the NUL in the Expires header, and have committed a fix. (Misplaced parenthesis when writing the Expires value

> 	• When Kamailio sends call-info NOTIFY the Content-Length tag is missing.

It's there, it's just not the last header in the packet. If you do actually find a packet without Content-Length header, please let me know. It *must* be there when using TCP.

> 	• Sometimes the phone does not respond to a call-info NOTIFY event (sca-reboot1 #23, 45 and sca-reboot2 #18, 39).

This may be related to the NUL in the Expires header problem fixed above. Because the Expires line in the response gets mangled, the subscriber may be throwing away the subscription and ignoring the NOTIFY. Please grab the updated source and let me know if it fixes things for you.

> I think some of my problems are related to these anomalies. 

I agree. I've done the bulk of my testing with UDP to this point, too, so there may be assumptions in the code that are stumbling over TCP. I'll try to remedy that.

Thanks for your very helpful report!

Best,
andrew


More information about the sr-users mailing list