[pjsip] 3PCC transfer implementation

Benny Prijono bennylp at pjsip.org
Tue Nov 13 10:34:39 EST 2007

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, 

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!).


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

More information about the pjsip mailing list