< Previous by Date | Date Index | Next by Date > |
< Previous in Thread | Thread Index | Next in Thread > |
Hi Scott,
The code below is the same as the fix I applied myself. It resolves the issue. Thank you! /Krister Från: slgodin@xxxxxxxxx [slgodin@xxxxxxxxx] för Scott Godin [sgodin@xxxxxxxxxxxxxxx]
Skickat: den 11 april 2013 15:37 Till: Krister Jarl Kopia: resiprocate-users@xxxxxxxxxxxxxxx Ämne: Re: [reSIProcate-users] TransactionState assert, sendCurrentToWire Hi Krister,
Can you please try adding the following highlighted lines to processServerNonInvite, and see if this resolves the issue for you?
Scott
TransactionState::processServerNonInvite(TransactionMessage* msg)
{
StackLog (<< "TransactionState::processServerNonInvite: " << msg->brief());
if (isRequest(msg) && !isInvite(msg) && isFromWire(msg)) // retransmission from the wire
{
if (mState == Trying)
{
// ignore
delete msg;
}
else if (mState == Proceeding || mState == Completed)
{
if(mIsAbandoned)
{
assert(mState == Completed);
mIsAbandoned=false;
// put a 500 in mNextTransmission
SipMessage* req = dynamic_cast<SipMessage*>(msg);
resetNextTransmission(Helper::makeResponse(*req, 500));
sendCurrentToWire();
}
else
{
// We have already sent a 100, but we have just received a retransmission. Requests
// likely crossed on the wire. We need to respond with another 100, but the last one was
// cleared so re-create the 100 now.
SipMessage* sip = dynamic_cast<SipMessage*>(msg);
if (sip && mMsgToRetransmit.empty() && !mNextTransmission)
{
resetNextTransmission(make100(sip));
}
sendCurrentToWire();
}
delete msg;
}
Scott
On Thu, Apr 11, 2013 at 5:40 AM, Krister Jarl
<kj@xxxxxxxxxxx> wrote:
|