< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index  

Re: [reSIProcate] ACK is getting generated by DUM


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
Sent: April 2, 2008 2:43 AM
To: resiprocate-devel@xxxxxxxxxxxxxxx
Subject: [reSIProcate] ACK is getting generated by DUM

 

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