/[resiprocate]/main/resip/dum/InviteSession.cxx
ViewVC logotype

Diff of /main/resip/dum/InviteSession.cxx

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3289 by derek, Wed Aug 25 23:09:43 2004 UTC revision 3291 by derek, Sat Aug 28 02:30:03 2004 UTC
# Line 56  Line 56 
56  SipMessage&  SipMessage&
57  InviteSession::modifySession()  InviteSession::modifySession()
58  {  {
59     if (mNextOfferOrAnswerSdp == 0 || mState != Connected)     if (mNextOfferOrAnswerSdp == 0 || mState != Connected || mOfferState != Answered)
60     {     {
61        throw new UsageUseException("Must be in the connected state and have propsed an offer to call modifySession",        throw new UsageUseException("Must be in the connected state and have propsed an offer to call modifySession",
62                                    __FILE__, __LINE__);                                    __FILE__, __LINE__);
# Line 76  Line 76 
76  }  }
77    
78  SipMessage&  SipMessage&
79  InviteSession::acceptOffer(int statusCode)  InviteSession::acceptDialogModification(int statusCode)
80  {  {
81     if (mNextOfferOrAnswerSdp == 0 || mState != ReInviting)     if (mNextOfferOrAnswerSdp == 0 || mState != ReInviting)
82     {     {
# Line 207  Line 207 
207     {     {
208        //quench 200 retransmissions        //quench 200 retransmissions
209        mFinalResponseMap.erase(msg.header(h_CSeq).sequence());        mFinalResponseMap.erase(msg.header(h_CSeq).sequence());
210          if (msg.header(h_CSeq).sequence() == mLastIncomingRequest.header(h_CSeq).sequence())
211          {
212        if (offans.first != None)        if (offans.first != None)
213        {                            {                    
214           if (mOfferState == Answered)           if (mOfferState == Answered)
# Line 231  Line 233 
233           mDum.mInviteSessionHandler->onIllegalNegotiation(getSessionHandle(), msg);           mDum.mInviteSessionHandler->onIllegalNegotiation(getSessionHandle(), msg);
234        }        }
235     }     }
236       }
237    
238     switch(mState)     switch(mState)
239     {     {
# Line 269  Line 272 
272                       mState = ReInviting;                       mState = ReInviting;
273                       mDialog.update(msg);                       mDialog.update(msg);
274                       mLastIncomingRequest = msg;                       mLastIncomingRequest = msg;
275                       mDum.mInviteSessionHandler->onDialogModified(getSessionHandle(), msg);                       mDum.mInviteSessionHandler->onDialogModified(getSessionHandle(), offans.first, msg);
276                       if (offans.first != None)                       if (offans.first != None)
277                       {                       {
278                          incomingSdp(msg, offans.second);                          incomingSdp(msg, offans.second);
279                       }                       }
280                         else
281                         {
282                            mDum.mInviteSessionHandler->onOfferRequired(getSessionHandle(), msg);                        
283                         }                                            
284                    }                    }
285                    else                    else
286                    {                    {
# Line 336  Line 343 
343                    if (msg.header(h_CSeq).sequence() == mLastRequest.header(h_CSeq).sequence())                    if (msg.header(h_CSeq).sequence() == mLastRequest.header(h_CSeq).sequence())
344                    {                    {
345                       mState = Connected;                       mState = Connected;
                      send(makeAck());  
346                       //user has called end, so no more callbacks relating to                       //user has called end, so no more callbacks relating to
347                       //this usage other than onTerminated                       //this usage other than onTerminated
348                       if (mQueuedBye)                       if (mQueuedBye)
# Line 350  Line 356 
356                       if (offans.first != None)                       if (offans.first != None)
357                       {                       {
358                          incomingSdp(msg, offans.second);                          incomingSdp(msg, offans.second);
359                            if (offans.first == Answer)
360                            {
361                               //no late media required, so just send the ACK
362                               send(makeAck());
363                            }
364                       }                       }
365                       else                       else
366                       {                       {
# Line 383  Line 394 
394                       send(mLastRequest);                       send(mLastRequest);
395                       return;                       return;
396                    }                    }
397                      //reset the sdp state machine
398                      incomingSdp(msg, 0);
399                    mDum.mInviteSessionHandler->onOfferRejected(getSessionHandle(), msg);                    mDum.mInviteSessionHandler->onOfferRejected(getSessionHandle(), msg);
400                 }                 }
401              }              }
# Line 542  Line 555 
555              mProposedLocalSdp = 0;              mProposedLocalSdp = 0;
556              mProposedRemoteSdp = 0;              mProposedRemoteSdp = 0;
557              // !jf! is this right?              // !jf! is this right?
558              mDum.mInviteSessionHandler->onOfferRejected(getSessionHandle(), msg);  //            mDum.mInviteSessionHandler->onOfferRejected(getSessionHandle(), msg);
559           }           }
560           break;           break;
561     }     }
# Line 565  Line 578 
578        {        {
579           case INVITE:           case INVITE:
580           case UPDATE:           case UPDATE:
581             case ACK:
582              if (mNextOfferOrAnswerSdp)              if (mNextOfferOrAnswerSdp)
583              {              {
584                 msg.setContents(mNextOfferOrAnswerSdp);                 msg.setContents(mNextOfferOrAnswerSdp);
# Line 716  Line 730 
730  }  }
731    
732  SipMessage&  SipMessage&
733  InviteSession::rejectOffer(int statusCode)  InviteSession::rejectDialogModification(int statusCode)
734  {  {
735     if (statusCode < 400)     if (statusCode < 400)
736     {     {
# Line 758  Line 772 
772    
773     assert(ack.header(h_Vias).size() == 1);     assert(ack.header(h_Vias).size() == 1);
774    
775     if (mNextOfferOrAnswerSdp)  //    if (mNextOfferOrAnswerSdp)
776     {  //    {
777        ack.setContents(mNextOfferOrAnswerSdp);  //       ack.setContents(mNextOfferOrAnswerSdp);
778        sendSdp(mNextOfferOrAnswerSdp);  //       sendSdp(mNextOfferOrAnswerSdp);
779        mNextOfferOrAnswerSdp = 0;  //       mNextOfferOrAnswerSdp = 0;
780     }  //    }
781     return ack;     return ack;
782  }  }
783    

Legend:
Removed from v.3289  
changed lines
  Added in v.3291

webmaster AT resiprocate DOT org
ViewVC Help
Powered by ViewVC 1.1.27