< Previous by Date Date Index Next by Date >
  Thread Index Next in Thread >

[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