< Previous by Date | Date Index | Next by Date > |
< Previous in Thread | Thread Index |
There are 2 invite sessions in this scenario. Each invite
session is either a ClientInviteSession or a ServerInviteSession, but never
both. DUM will not maintain any mapping between the two legs of a B2B call –
that is your applications responsibility. Once you are tracking the 2
InviteSessions as belonging to the same B2BUA call, you can look up one from
the other’s callbacks and call end appropriately on the correct invite session. Scott From:
resiprocate-devel-bounces@xxxxxxxxxxxxxxx
[mailto:resiprocate-devel-bounces@xxxxxxxxxxxxxxx] On Behalf Of Sandeep
Ammaladinna Hi,
I am implementing a B2BUA over DUM. I figured out that DUM is generating an ACK when it gets a 200 OK (from the terminating user agent). But as per RFC 3261 the originating user agent must send the ACK. The problem I am facing is suppost the B2BUA/DUM generates an ACK and if the originating user agent does not send an ACK (within the timeout period), the call back "onAckNotReceived(InviteSessionHandle)" will be called. The InviteSessionHandle provides me the way to end (send BYE) the originating User agent only. I dont have a way to end the terminating user agent, who has already got the ACK from DUM/B2BUA.
I also tried something like this"
void InviteSessHandler::onAckNotReceived(InviteSessionHandle ish) {
InfoLog(<< "AckNotReceived : Invite Session"); //This will just end the originating UA ish->end(InviteSession::AckNotReceived);
//Below is the procedure to end the terminating UA ClientInviteSession *client_is = dynamic_cast <ClientInviteSession*>(ish.get());
if(!(client_is)) { CritLog( << "ClientInviteSession Not Found" << endl ); return ; } ClientInviteSessionHandle client_ish = client_is->getHandle(); client_ish->end();
}
But whenever I typecast InviteSessionHandle to ClientInviteSession, I get an error message saying "ClientInviteSession Not Found".
Please help me how to get rid of the issue.
-Sandeep A
|