[reSIProcate] Resiprocate/DUM assert hit when a rejected reINVITE is followed by an SDP-less reINVITE
Hi,
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();
transition(Connected);
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.
br
Szo