[pjsip] 3PCC transfer implementation
bennylp at pjsip.org
Thu Nov 15 23:20:31 EST 2007
That's a good catch. While it's generally true that once call is
establish most signaling should go end-to-end, I would have thought
that this should have been supported with current framework (well at
least at idea level).
Suppose controller has two call legs, leg A and leg B. Suppose
re-INVITE comes from leg-A. If the re-INVITE has SDP, this would
trigger on_rx_offer() callback to be called. The controller
retrieves the SDP from the request, and send it to leg B. When leg B
replies with SDP answer, controller calls pjsip_inv_set_sdp_answer()
to send the answer to leg A.
At least that's the idea. One thing that prevents this from working
now is the inv session wants to send 200/OK to re-INVITE
immediately, so if the answer is not set immediately it will respond
with 488 or 500.
I suppose fixing these should be easier than implementing a whole
new 3pcc module.
Amit Sharma wrote:
> I guess there are also issues once the call transfer is completed.
> Once the 3pcc transfer is completed, most of the signalling would need
> to be end to end (between the endpoints) with the controller passing
> requests (and responses) from leg to the other. This requires that there
> is no local handling of reinvites,updates etc. Would this not require
> exposing incoming requests also to the application? I think a 3pcc call
> would need a different state machine for the handling of requests.
> Can we not have a pjsip_inv_set_3pcc_mode(inv_session, peerdialog)
> like api that can be invoked by the application on a invite session to
> change how subsequent requests are handled in the session . The invite
> session could define a different invite state handler for 3pcc scenario
> which the session uses once the 3pcc mode is set
> void (*thirdpcc_inv_state_handler)( pjsip_inv_session *inv,
> pjsip_event *e) =
> This is probably close to writing a 3pcc module. The reason is that I
> am not sure we can reuse the existing invite session to support both
> 3pcc and normal scenarios in the application.
More information about the pjsip