[reSIProcate] why reject redirect on in-dialog NOTIFY?
ServerSubscription.cxx has code to explicitly reject any 3xx class
response to an in-dialog NOTIFY, with a comment that it's bizarre:
//in dialog NOTIFY got redirected? Bizarre...
handler->onError(getHandle(), msg);
handler->onTerminated(getHandle());
delete this;
I am willing to believe that it's bizarre, but isn't it legal to do
this? My reading of 12.2.1.2 of 3261 makes me believe that it's
perfectly legal to do:
The behavior of a UAC that receives a 3xx response for a request sent
within a dialog is the same as if the request had been sent outside a
dialog. This behavior is described in Section 8.1.3.4.
I can't find anywhere that this behavior is overridden in 3265. Is
there a reason not to accept the redirect?
I also found a comment in DialogSet.cxx that seemed relevant:
//!dcm! -- need to protect against 3xx highjacking a dialogset which
//has a fully established dialog. also could case strange behaviour
//by sending 401/407 at the wrong time.
if (mDum.mRedirectManager.get() && mState != Established) //
!slg! for now don't handle redirect in established dialogs -
alternatively we could treat as a target referesh (using 1st Contact)
and reissue request
although I'm not sure what would need to be changed (other than the
test for != Established) to support the redirect.
Thanks,
Bruce