< Previous by Date | Date Index | Next by Date > |
Thread Index | Next in Thread > |
Hi,
We have been testing out the UAS PRACK implementation and have problems with queued provisionals. An answer provided before the second provisional is not included in the body. This patch solves the issue for us. Regards, Björn A. |
*** ServerInviteSession.cxx 2014-04-08 13:52:38.000000000 +0200 --- ServerInviteSession.cxx.orig 2014-04-08 13:50:19.000000000 +0200 *************** ServerInviteSession::prackCheckQueue() *** 1368,1380 **** if(mQueuedResponses.size() > 0 && mQueuedResponses.front().first < 200) { InfoLog (<< "Sending queued provisional" ); ! if(sendProvisional(mQueuedResponses.front().first, mQueuedResponses.front().second)) ! { ! if (mState == UAS_NoAnswerReliable) ! { ! transition(UAS_NoAnswerReliableWaitingPrack); ! } ! } mQueuedResponses.pop_front(); } else if(mQueuedResponses.size() > 0 && mQueuedResponses.front().first < 300) --- 1368,1374 ---- if(mQueuedResponses.size() > 0 && mQueuedResponses.front().first < 200) { InfoLog (<< "Sending queued provisional" ); ! sendProvisional(mQueuedResponses.front().first, mQueuedResponses.front().second); mQueuedResponses.pop_front(); } else if(mQueuedResponses.size() > 0 && mQueuedResponses.front().first < 300) *************** ServerInviteSession::dispatchNoAnswerRel *** 1597,1610 **** mDialog.makeResponse(*p200, msg, 200); send(p200); ! if(mCurrentLocalOfferAnswer.get()) ! { ! transition(UAS_FirstSentAnswerReliable); ! } ! else ! { ! transition(UAS_NoAnswerReliable); ! } handler->onPrack(getHandle(), msg); prackCheckQueue(); } --- 1591,1597 ---- mDialog.makeResponse(*p200, msg, 200); send(p200); ! transition(UAS_NoAnswerReliable); handler->onPrack(getHandle(), msg); prackCheckQueue(); }