< Previous by Date Date Index  
  Thread Index  

[reSIProcate] Resiprocate/DUM assert hit when a rejected reINVITE is followed by an SDP-less reINVITE


When a DUM leg receives a reINVITE which is rejected by the application,
the mProposedRemoteOfferAnswer member of InviteSession is left dangling,
which will trigger the assert() in InviteSession.cxx:454 (latest git)
when we try to send an offer to a subsequent SDP-less reINVITE.

We propose the following fix:

diff --git a/resip/dum/InviteSession.cxx b/resip/dum/InviteSession.cxx
index 9d6c93ec4..03fcf55e5 100644
--- a/resip/dum/InviteSession.cxx
+++ b/resip/dum/InviteSession.cxx
@@ -778,6 +778,7 @@ InviteSession::reject(int statusCode,
WarningCategory *warning)
       case ReceivedReinvite:
       case ReceivedReinviteNoOffer:
+         mProposedRemoteOfferAnswer.reset();
          SharedPtr<SipMessage> response(new SipMessage);

When a reINVITE is not rejected but accepted, mProposedRemoteOfferAnswer
is a nullpointer (so the assert won't trigger), because it is moved to
mCurrentRemoteOfferAnswer in InviteSession::provideAnswer(), that's why
I think in case of reject, we need to get rid of it completely, hence
the above proposed patch.