[pjsip] 3PCC transfer implementation

Joegen E. Baclor joegen.baclor at gmail.com
Tue Nov 13 20:22:19 EST 2007

Hi Benny,

Benny Prijono wrote:
> 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?

Although it is most definitely a good idea to have ACK for 200 OK be 
handled by the application layer, I do not see its significance in a 
B2BUA as mentioned in the original post.  It will only be significant if 
the implementation is a Proxy.  In which case, ACK needs to be processed 
hop by hop to assure that every entity in the call path know that the 
ultimate endpoint has received the 200 Ok.     It would be interesting 
to know if there are other reasons.

> 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

More information about the pjsip mailing list