[reSIProcate] why reject redirect on in-dialog NOTIFY?

Bruce Lowekamp lowekamp at sipeerior.com
Wed Apr 25 13:42:48 CDT 2007


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



More information about the resiprocate-devel mailing list