/[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 3262 by derek, Tue Aug 17 17:26:53 2004 UTC revision 3276 by derek, Fri Aug 20 02:45:28 2004 UTC
# Line 34  Line 34 
34       mNextOfferOrAnswerSdp(0),       mNextOfferOrAnswerSdp(0),
35       mUserConnected(false),       mUserConnected(false),
36       mDestroyer(this),       mDestroyer(this),
37       mCurrentRetransmit200(Timer::T1)       mCurrentRetransmit200(Timer::T1),
38         mQueuedBye(0)
39  {  {
40     DebugLog ( << "^^^ InviteSession::InviteSession " << this);       DebugLog ( << "^^^ InviteSession::InviteSession " << this);  
41     assert(mDum.mInviteSessionHandler);     assert(mDum.mInviteSessionHandler);
# Line 48  Line 49 
49     delete mProposedLocalSdp;     delete mProposedLocalSdp;
50     delete mProposedRemoteSdp;     delete mProposedRemoteSdp;
51     delete mNextOfferOrAnswerSdp;     delete mNextOfferOrAnswerSdp;
52       delete mQueuedBye;  
53     mDialog.mInviteSession = 0;     mDialog.mInviteSession = 0;
54  }  }
55    
# Line 327  Line 329 
329                 int code = msg.header(h_StatusLine).statusCode();                 int code = msg.header(h_StatusLine).statusCode();
330                 if (code < 200)                 if (code < 200)
331                 {                 {
332                    //ignore                    return;                  
333                 }                                   }                  
334                 else if (code < 300)                 else if (code < 300)
335                 {                 {
# Line 335  Line 337 
337                    {                    {
338                       mState = Connected;                       mState = Connected;
339                       send(makeAck());                       send(makeAck());
340                         //user has called end, so no more callbacks relating to
341                         //this usage other than onTerminated
342                         if (mQueuedBye)
343                         {
344                            mLastRequest = *mQueuedBye;
345                            delete mQueuedBye;
346                            mQueuedBye = 0;                        
347                            send(mLastRequest);
348                            return;
349                         }
350                       if (offans.first != None)                       if (offans.first != None)
351                       {                       {
352                          incomingSdp(msg, offans.second);                          incomingSdp(msg, offans.second);
# Line 361  Line 373 
373                 else                 else
374                 {                 {
375                    mState = Connected;                                  mState = Connected;              
376                      //user has called end, so no more callbacks relating to
377                      //this usage other than onTerminated
378                      if (mQueuedBye)
379                      {
380                         mLastRequest = *mQueuedBye;
381                         delete mQueuedBye;
382                         mQueuedBye = 0;                        
383                         send(mLastRequest);
384                         return;
385                      }
386                    mDum.mInviteSessionHandler->onOfferRejected(getSessionHandle(), msg);                    mDum.mInviteSessionHandler->onOfferRejected(getSessionHandle(), msg);
387                 }                 }
388              }              }
# Line 447  Line 469 
469           mState = Terminated;           mState = Terminated;
470           return mLastRequest;           return mLastRequest;
471           break;           break;
472          case ReInviting:
473             mQueuedBye = new SipMessage(mLastRequest);
474             mDialog.makeRequest(*mQueuedBye, BYE);
475             return *mQueuedBye;
476             break;
477        default:        default:
478           assert(0); // out of states           assert(0); // out of states
479     }     }
# Line 524  Line 551 
551  InviteSession::send(SipMessage& msg)  InviteSession::send(SipMessage& msg)
552  {  {
553     Destroyer::Guard guard(mDestroyer);     Destroyer::Guard guard(mDestroyer);
554       if (mQueuedBye && (mQueuedBye == &msg))
555       {
556          //queued
557          return;
558       }
559          
560     if (msg.isRequest())     if (msg.isRequest())
561     {     {
562        //unless the message is an ACK(in which case it is mAck)        //unless the message is an ACK(in which case it is mAck)

Legend:
Removed from v.3262  
changed lines
  Added in v.3276

webmaster AT resiprocate DOT org
ViewVC Help
Powered by ViewVC 1.1.27