Currently the DUM constructs the mDocumentKey in BaseSubscription and ServerPublication with the URI of request line include the port.
But in the DialogEventStateManager, the onEarly and other onXX callbacks, the DUM pass DialogEvent to these callbacks that URI without the port, that will causes the ApplyToServerSubscription doesn't sent the NOTIFY since can't find the range in the mServerSubscriptions, the elements with the port, but the key that without the port:
// will apply the specified functor(which takes a
//ServerSubscriptionHandle) to each matching ServerSubscription.
//Returns the functor after the last application.
template<typename UnaryFunction>
UnaryFunction applyToServerSubscriptions(const Data& aor,
const Data& eventType,
UnaryFunction applyFn)
{
Data key = eventType + aor; // The aor without port,
std::pair<ServerSubscriptions::iterator,ServerSubscriptions::iterator>
range = mServerSubscriptions.equal_range(key); // Elements in mServerSubscriptions with port
for (ServerSubscriptions::iterator i=range.first; i!=range.second; ++i)
{
ServerSubscriptionHandle h = i->second->getHandle();
applyFn(h);
}
return applyFn;
}
This issue occurs with below SUBSCRIBE message: