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

RE: [reSIProcate] why not mCurrentRemoteSdp


The SDP is considered Proposed, until you send your answer, then it becomes 
mLocalRemoteSdp.

You can access the proposed SDP from the onNewSession callback - it is the 2nd 
parameter.

-----Original Message-----
From: resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxx 
[mailto:resiprocate-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of maodonghu
Sent: Monday, November 14, 2005 1:12 AM
To: resiprocate-devel
Subject: [reSIProcate] why not mCurrentRemoteSdp

this is my code to send 200 ok:

        call->is->provideAnswer( call->is->getRemoteSdp() );
        ((ServerInviteSession*)call->is)->accept();

when I track call->is->getRemoteSdp() , I found mCurrentRemoteSdp.get() is 
NULL, and I have look at ServerInviteSession.cxx(584): it save 
mProposedRemoteSdp but not mCurrentRemoteSdp, why?


void
ServerInviteSession::dispatchStart(const SipMessage& msg)
{
   assert(msg.isRequest());
   assert(msg.header(h_CSeq).method() == INVITE);

   InviteSessionHandler* handler = mDum.mInviteSessionHandler;
   std::auto_ptr<SdpContents> sdp = InviteSession::getSdp(msg);
   storePeerCapabilities(msg);

   switch (toEvent(msg, sdp.get()))
   {
      case OnInviteOffer:
         mLastSessionModification = msg;
         transition(UAS_Offer);
         mProposedRemoteSdp = InviteSession::makeSdp(*sdp);
         mCurrentEncryptionLevel = getEncryptionLevel(msg);
         handler->onNewSession(getHandle(), Offer, msg);
         if(!isTerminated())  
         {
            handler->onOffer(getSessionHandle(), msg, *sdp);
         }
         break;
                                

        maodonghu
        hhmmdd@xxxxxxx
          2005-11-14