[pjsip] 3PCC transfer implementation

Anshuman S. Rawat arawat at 3clogic.com
Wed Nov 14 04:10:08 EST 2007

Hi Benny,

Thanks for the input. We have decided to do things in pjsua_lib. This is 
what we plan to do:

- Add a few functions to handle responses for '3pcc INVITE' (differentiating 
them from responses to regular INVITEs using a flag) and add an argument to 
pjsua_call_make_call() which will take care of sending an INVITE w/o SDP. 
Functionality for this exists currently though in the form of a macro and 
not an argument.
- Move responsibility of sending ACKs to '200 OK' responses to pjsua_lib.
- For handling re-INVITE scenario within the 3PCC 'call' we plan to add 
another callback which will be called upon receiving a re-INVITE. Return 
status from this callback will decide if we needed to follow the 'normal 
path' (one w/o 3PCC).

This looks much less complicated than having to add another module.


----- Original Message ----- 
From: "Benny Prijono" <bennylp at pjsip.org>
To: "pjsip embedded/DSP SIP discussion" <pjsip at lists.pjsip.org>
Sent: Tuesday, November 13, 2007 9:04 PM
Subject: Re: [pjsip] 3PCC transfer implementation

> Hi Anshuman,
> this is currently pretty hard to achieve with pjsip, as ACK will be
> sent automatically by the invite session layer upon receiving 2xx
> response. But I like your idea to add the ability to disable this
> automatic ACK sending and enabling application to send it manually,
> so maybe we can elaborate more on this. Can you explain more on why
> did you think this approach is not very extensible?
> As for REFER, it should reach the application. Have a look at
> on_call_transfered() function in pjsua_call.c. Basically application
> just need to implement on_tsx_state_changed() callback of the invite
> session and listen for incoming REFER. The stack below pjsua-lib
> layer does not handle REFER automatically.
> Btw, just to clarify, you will be using pjsip instead of pjsua-lib,
> right?
> I'm not too sure about implementing 3PCC module, by-passing the
> invite layer. This sounds like re-inventing the invite layer to me
> (which means loads of work!).
>  -benny
> Anshuman S. Rawat wrote:
>> Hi All,
>> We want to add 3PCC call transfer support in PJSIP as a part of our
>> requirement. We wanted to get pointers as to where would be the best 
>> place
>> to do this. We thought of 2 ways to do this. In bout cases, we 
>> (obviously)
>> act as the controller (a B2BUA).
>> - One way would be to do so from our application wherein we disable 
>> sending
>> 'ACK' from the stack and pass that job to the application. Our 
>> application
>> receives all the requests and responses and sends out requests and 
>> responses
>> (after necessary SDP modifications). This looks simpler to implement but
>> doesn't look very extendible. As in, for our requirement, the transferee 
>> may
>> want to transfer the call and send a REFER for that purpose. This REFER
>> should reach our B2BUA who then sends the new INVITE instead of stack 
>> doing
>> it. This will require more change to stack (besides the change for 
>> sending
>> ACK).
>> - Another way is to add the 3PCC "application" as a module with a higher
>> priority than pjsip_module so that incoming requests/responses first are
>> sent to 3PCC module first. From what I understand, if the 
>> request/response
>> is not handled by this module, it will then be passed to the 
>> pjsip_module.
>> (Is my understanding correct?)
>> Suggestions are very welcome. Hopefully I was clear enough.
>> Regards,
>> Anshuman
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
> -- 
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.5.503 / Virus Database: 269.15.30/1127 - Release Date: 
> 11/12/2007 9:19 PM

More information about the pjsip mailing list