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

[reSIProcate-users] Construct the mDocumentKey without port of request line


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:

SUBSCRIBE sip:10001@192.168.1.102:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.223:5060;branch=z9hG4bK9213299;rport=5060
Max-Forwards: 70
Contact: <sip:10000@192.168.1.223:5060>
To: <sip:10001@xxxxxxxxxxx:5060>;tag=9f57fb76
From: "10000"<sip:10000@xxxxxxxxxxx:5060>;tag=2580923442
Call-ID: 0_837872518@192.168.1.223
CSeq: 3 SUBSCRIBE
Expires: 900
Accept: application/dialog-info+xml
Proxy-Authorization: Digest username="10000",realm="example.com",nonce="13210074173:d7c6f7877c76305975ac8736f95c85ae",uri="sip:10001@192.168.1.102:5060",response="a5bf59d0d780a83d4388407211a385d0",algorithm=MD5
User-Agent: Yealink SIP-T58 58.83.0.20 805ec0009c8c
Event: dialog
Content-Length: 0