<p>Scenario :<br>
Loading a rls-services XML file to <a href="mailto:admin@example.com">admin@example.com</a> (XCAP HTTP PUT) :</p>

<div class="highlight highlight-xml"><pre><?<span class="pl-ent">xml</span><span class="pl-e"> version</span>=<span class="pl-s"><span class="pl-pds">"</span>1.0<span class="pl-pds">"</span></span><span class="pl-e"> encoding</span>=<span class="pl-s"><span class="pl-pds">"</span>UTF-8<span class="pl-pds">"</span></span>?>
<<span class="pl-ent">rls-services</span>>
    <<span class="pl-ent">service</span> <span class="pl-e">uri</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:points@example.com<span class="pl-pds">"</span></span>>
        <<span class="pl-ent">list</span> <span class="pl-e">name</span>=<span class="pl-s"><span class="pl-pds">"</span>points<span class="pl-pds">"</span></span>>
            <<span class="pl-ent">entry</span> <span class="pl-e">uri</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:point1@example.com<span class="pl-pds">"</span></span>>
                <<span class="pl-ent">display-name</span>>Point 1</<span class="pl-ent">display-name</span>>
            </<span class="pl-ent">entry</span>>
            <<span class="pl-ent">entry</span> <span class="pl-e">uri</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:point2@example.com<span class="pl-pds">"</span></span>>
                <<span class="pl-ent">display-name</span>>Point 2</<span class="pl-ent">display-name</span>>
            </<span class="pl-ent">entry</span>>
            <<span class="pl-ent">entry</span> <span class="pl-e">uri</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:point3@example.com<span class="pl-pds">"</span></span>>
                <<span class="pl-ent">display-name</span>>Point 3</<span class="pl-ent">display-name</span>>
            </<span class="pl-ent">entry</span>>
        </<span class="pl-ent">list</span>>
        <<span class="pl-ent">packages</span>>
            <<span class="pl-ent">package</span>>presence</<span class="pl-ent">package</span>>
        </<span class="pl-ent">packages</span>>
    </<span class="pl-ent">service</span>>
</<span class="pl-ent">rls-services</span>>
</pre></div>

<p><a href="mailto:alice@example.com">alice@example.com</a> -> subscribes to event presence on -> <a href="mailto:point1@example.com">point1@example.com</a><br>
<a href="mailto:bob@example.com">bob@example.com</a> -> subscribes to event presence on -> <a href="mailto:point1@example.com">point1@example.com</a><br>
<a href="mailto:carol@example.com">carol@example.com</a> -> subscribes to event presence on -> <a href="mailto:point1@example.com">point1@example.com</a><br>
Waiting some time (10~20 seconds, approx rls, waitn_time option)...<br>
<a href="mailto:dave@example.com">dave@example.com</a> -> subscribes to event presence on -> <a href="mailto:point1@example.com">point1@example.com</a><br>
<a href="mailto:admin@example.com">admin@example.com</a> -> subscribes to RLS event presence.winfo for the first time on -> <a href="mailto:points@example.com">points@example.com</a></p>

<p>Kamailio sends only partial state as mentioned in "fullState="false"" and "state="partial"" and only for user dave (last one subscribed) with version "5" :</p>

<div class="highlight highlight-xml"><pre>NOTIFY sip:admin@192.168.1.56:7060;transport=tcp SIP/2.0
Via: SIP/2.0/TCP 192.168.1.56;branch=z9hG4bKdfb9.fc98d020000000000000000000000000.0
To: <<span class="pl-ent">sip</span><span class="pl-ent">:</span><span class="pl-ent">admin</span>@example.com>;tag=aoW7RQAYSw
From: <<span class="pl-ent">sip</span><span class="pl-ent">:</span><span class="pl-ent">points</span>@example.com>;tag=8790d89920d6a95cb6b77ece9ac70b8d-80d4
CSeq: 2 NOTIFY
Call-ID: cCiV8exRxM
Content-Length: 1050
User-Agent: kamailio (4.4.0-dev2 (i386/linux))
Max-Forwards: 70
Event: presence.winfo
Contact: <<span class="pl-ent">sip</span><span class="pl-ent">:</span><span class="pl-ent">rls</span>@192.168.1.56:5060>
Subscription-State: active;expires=8
Require: eventlist
Content-Type: multipart/related;type="application/rlmi+xml";start="<<span class="pl-ent">1438875442</span>.sip:points@example.com.1907048652>";boundary="LQLZpLYXZgJh5s2VPxHXdN1b"

--LQLZpLYXZgJh5s2VPxHXdN1b
Content-Transfer-Encoding: binary
Content-ID: <<span class="pl-ent">1438875442</span>.sip:points@example.com.1907048652>
Content-Type: application/rlmi+xml;charset="UTF-8"

<?<span class="pl-ent">xml</span><span class="pl-e"> version</span>=<span class="pl-s"><span class="pl-pds">"</span>1.0<span class="pl-pds">"</span></span>?>
<<span class="pl-ent">list</span> <span class="pl-e">uri</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:points@example.com<span class="pl-pds">"</span></span> <span class="pl-e">xmlns</span>=<span class="pl-s"><span class="pl-pds">"</span>urn:ietf:params:xml:ns:rlmi<span class="pl-pds">"</span></span> <span class="pl-e">version</span>=<span class="pl-s"><span class="pl-pds">"</span>2<span class="pl-pds">"</span></span> <span class="pl-e">fullState</span>=<span class="pl-s"><span class="pl-pds">"</span>false<span class="pl-pds">"</span></span>><<span class="pl-ent">resource</span> <span class="pl-e">uri</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:point2@example.com<span class="pl-pds">"</span></span>><<span class="pl-ent">instance</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>Scf8UhwQ<span class="pl-pds">"</span></span> <span class="pl-e">state</span>=<span class="pl-s"><span class="pl-pds">"</span>active<
 span class="pl-pds">"</span></span> <span class="pl-e">cid</span>=<span class="pl-s"><span class="pl-pds">"</span>1438875442.sip:point2@example.com.1254686349<span class="pl-pds">"</span></span>/></<span class="pl-ent">resource</span>></<span class="pl-ent">list</span>>

--LQLZpLYXZgJh5s2VPxHXdN1b
Content-Transfer-Encoding: binary
Content-ID: <<span class="pl-ent">1438875442</span>.sip:point2@example.com.1254686349>
Content-Type: application/watcherinfo+xml

<?<span class="pl-ent">xml</span><span class="pl-e"> version</span>=<span class="pl-s"><span class="pl-pds">"</span>1.0<span class="pl-pds">"</span></span>?>
<<span class="pl-ent">watcherinfo</span> <span class="pl-e">xmlns</span>=<span class="pl-s"><span class="pl-pds">"</span>urn:ietf:params:xml:ns:watcherinfo<span class="pl-pds">"</span></span> <span class="pl-e">version</span>=<span class="pl-s"><span class="pl-pds">"</span>5<span class="pl-pds">"</span></span> <span class="pl-e">state</span>=<span class="pl-s"><span class="pl-pds">"</span>partial<span class="pl-pds">"</span></span>>
  <<span class="pl-ent">watcher-list</span> <span class="pl-e">resource</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:point2@example.com<span class="pl-pds">"</span></span> <span class="pl-e">package</span>=<span class="pl-s"><span class="pl-pds">"</span>presence<span class="pl-pds">"</span></span>>
    <<span class="pl-ent">watcher</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>alice-bob-carol-dave<span class="pl-pds">"</span></span> <span class="pl-e">event</span>=<span class="pl-s"><span class="pl-pds">"</span>subscribe<span class="pl-pds">"</span></span> <span class="pl-e">status</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span>>sip:dave@example.com</<span class="pl-ent">watcher</span>>
  </<span class="pl-ent">watcher-list</span>>
</<span class="pl-ent">watcherinfo</span>>

--LQLZpLYXZgJh5s2VPxHXdN1b--</pre></div>

<p>If I am reading well RFC 4662 Section 4.5 (<a href="https://tools.ietf.org/html/rfc4662#section-4.5">https://tools.ietf.org/html/rfc4662#section-4.5</a>) Kamailio should send a full state NOTIFY for initial RLS subscribes and then it can send a partial state for updates.</p>

<p>I think we lose information here, but if a re-subscribe is performed I get a full NOTIFY, which is my current "workaround" :</p>

<p>1 - Initial subscribe<br>
2 - If full state -> OK<br>
3 - If partial state -> re-subscribe</p>

<div class="highlight highlight-xml"><pre>NOTIFY sip:admin@192.168.1.56:7060;transport=tcp SIP/2.0
Via: SIP/2.0/TCP 192.168.1.56;branch=z9hG4bK00c9.e11aad40000000000000000000000000.0
To: <<span class="pl-ent">sip</span><span class="pl-ent">:</span><span class="pl-ent">admin</span>@example.com>;tag=AcM3AIKdAx
From: <<span class="pl-ent">sip</span><span class="pl-ent">:</span><span class="pl-ent">points</span>@example.com>;tag=8790d89920d6a95cb6b77ece9ac70b8d-6573
CSeq: 1 NOTIFY
Call-ID: cCiV8exRxM
Content-Length: 3308
User-Agent: kamailio (4.4.0-dev2 (i386/linux))
Max-Forwards: 70
Event: presence.winfo
Contact: <<span class="pl-ent">sip</span><span class="pl-ent">:</span><span class="pl-ent">rls</span>@192.168.1.56:5060>
Subscription-State: active;expires=17
Require: eventlist
Content-Type: multipart/related;type="application/rlmi+xml";start="<<span class="pl-ent">1438875460</span>.sip:points@example.com.151089623>";boundary="lxwToHs6uINUYOQjbengkND5"

--lxwToHs6uINUYOQjbengkND5
Content-Transfer-Encoding: binary
Content-ID: <<span class="pl-ent">1438875460</span>.sip:points@example.com.151089623>
Content-Type: application/rlmi+xml;charset="UTF-8"

<?<span class="pl-ent">xml</span><span class="pl-e"> version</span>=<span class="pl-s"><span class="pl-pds">"</span>1.0<span class="pl-pds">"</span></span>?>
<<span class="pl-ent">list</span> <span class="pl-e">uri</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:points@example.com<span class="pl-pds">"</span></span> <span class="pl-e">xmlns</span>=<span class="pl-s"><span class="pl-pds">"</span>urn:ietf:params:xml:ns:rlmi<span class="pl-pds">"</span></span> <span class="pl-e">version</span>=<span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span> <span class="pl-e">fullState</span>=<span class="pl-s"><span class="pl-pds">"</span>true<span class="pl-pds">"</span></span>>
  <<span class="pl-ent">resource</span> <span class="pl-e">uri</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:point1@example.com<span class="pl-pds">"</span></span>>
    <<span class="pl-ent">instance</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>Scf8UhwQ<span class="pl-pds">"</span></span> <span class="pl-e">state</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span> <span class="pl-e">cid</span>=<span class="pl-s"><span class="pl-pds">"</span>1438875460.sip:point1@example.com.236018746<span class="pl-pds">"</span></span>/>
  </<span class="pl-ent">resource</span>>
  <<span class="pl-ent">resource</span> <span class="pl-e">uri</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:point2@example.com<span class="pl-pds">"</span></span>>
    <<span class="pl-ent">instance</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>Scf8UhwQ<span class="pl-pds">"</span></span> <span class="pl-e">state</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span> <span class="pl-e">cid</span>=<span class="pl-s"><span class="pl-pds">"</span>1438875460.sip:point2@example.com.720412755<span class="pl-pds">"</span></span>/>
  </<span class="pl-ent">resource</span>>
  <<span class="pl-ent">resource</span> <span class="pl-e">uri</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:point3@example.com<span class="pl-pds">"</span></span>>
    <<span class="pl-ent">instance</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>Scf8UhwQ<span class="pl-pds">"</span></span> <span class="pl-e">state</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span> <span class="pl-e">cid</span>=<span class="pl-s"><span class="pl-pds">"</span>1438875460.sip:point3@example.com.1064774448<span class="pl-pds">"</span></span>/>
  </<span class="pl-ent">resource</span>>
</<span class="pl-ent">list</span>>

--lxwToHs6uINUYOQjbengkND5
Content-Transfer-Encoding: binary
Content-ID: <<span class="pl-ent">1438875460</span>.sip:point1@example.com.236018746>
Content-Type: application/watcherinfo+xml

<?<span class="pl-ent">xml</span><span class="pl-e"> version</span>=<span class="pl-s"><span class="pl-pds">"</span>1.0<span class="pl-pds">"</span></span>?>
<<span class="pl-ent">watcherinfo</span> <span class="pl-e">xmlns</span>=<span class="pl-s"><span class="pl-pds">"</span>urn:ietf:params:xml:ns:watcherinfo<span class="pl-pds">"</span></span> <span class="pl-e">version</span>=<span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span> <span class="pl-e">state</span>=<span class="pl-s"><span class="pl-pds">"</span>full<span class="pl-pds">"</span></span>>
  <<span class="pl-ent">watcher-list</span> <span class="pl-e">resource</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:point1@example.com<span class="pl-pds">"</span></span> <span class="pl-e">package</span>=<span class="pl-s"><span class="pl-pds">"</span>presence<span class="pl-pds">"</span></span>>
    <<span class="pl-ent">watcher</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>796ffdf4-22384@192.168.1.56<span class="pl-pds">"</span></span> <span class="pl-e">event</span>=<span class="pl-s"><span class="pl-pds">"</span>subscribe<span class="pl-pds">"</span></span> <span class="pl-e">status</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span>>sip:admin@example.com</<span class="pl-ent">watcher</span>>
    <<span class="pl-ent">watcher</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>796ffdf4-22381@192.168.1.56<span class="pl-pds">"</span></span> <span class="pl-e">event</span>=<span class="pl-s"><span class="pl-pds">"</span>subscribe<span class="pl-pds">"</span></span> <span class="pl-e">status</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span>>sip:admin@example.com</<span class="pl-ent">watcher</span>>
  </<span class="pl-ent">watcher-list</span>>
</<span class="pl-ent">watcherinfo</span>>

--lxwToHs6uINUYOQjbengkND5
Content-Transfer-Encoding: binary
Content-ID: <<span class="pl-ent">1438875460</span>.sip:point2@example.com.720412755>
Content-Type: application/watcherinfo+xml

<?<span class="pl-ent">xml</span><span class="pl-e"> version</span>=<span class="pl-s"><span class="pl-pds">"</span>1.0<span class="pl-pds">"</span></span>?>
<<span class="pl-ent">watcherinfo</span> <span class="pl-e">xmlns</span>=<span class="pl-s"><span class="pl-pds">"</span>urn:ietf:params:xml:ns:watcherinfo<span class="pl-pds">"</span></span> <span class="pl-e">version</span>=<span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span> <span class="pl-e">state</span>=<span class="pl-s"><span class="pl-pds">"</span>full<span class="pl-pds">"</span></span>>
  <<span class="pl-ent">watcher-list</span> <span class="pl-e">resource</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:point2@example.com<span class="pl-pds">"</span></span> <span class="pl-e">package</span>=<span class="pl-s"><span class="pl-pds">"</span>presence<span class="pl-pds">"</span></span>>
    <<span class="pl-ent">watcher</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>796ffdf5-22384@192.168.1.56<span class="pl-pds">"</span></span> <span class="pl-e">event</span>=<span class="pl-s"><span class="pl-pds">"</span>subscribe<span class="pl-pds">"</span></span> <span class="pl-e">status</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span>>sip:admin@example.com</<span class="pl-ent">watcher</span>>
    <<span class="pl-ent">watcher</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>alice-bob-carol-dave<span class="pl-pds">"</span></span> <span class="pl-e">event</span>=<span class="pl-s"><span class="pl-pds">"</span>subscribe<span class="pl-pds">"</span></span> <span class="pl-e">status</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span>>sip:alice@example.com</<span class="pl-ent">watcher</span>>
    <<span class="pl-ent">watcher</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>alice-bob-carol-dave<span class="pl-pds">"</span></span> <span class="pl-e">event</span>=<span class="pl-s"><span class="pl-pds">"</span>subscribe<span class="pl-pds">"</span></span> <span class="pl-e">status</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span>>sip:bob@example.com</<span class="pl-ent">watcher</span>>
    <<span class="pl-ent">watcher</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>alice-bob-carol-dave<span class="pl-pds">"</span></span> <span class="pl-e">event</span>=<span class="pl-s"><span class="pl-pds">"</span>subscribe<span class="pl-pds">"</span></span> <span class="pl-e">status</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span>>sip:carol@example.com</<span class="pl-ent">watcher</span>>
    <<span class="pl-ent">watcher</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>alice-bob-carol-dave<span class="pl-pds">"</span></span> <span class="pl-e">event</span>=<span class="pl-s"><span class="pl-pds">"</span>subscribe<span class="pl-pds">"</span></span> <span class="pl-e">status</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span>>sip:dave@example.com</<span class="pl-ent">watcher</span>>
    <<span class="pl-ent">watcher</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>796ffdf5-22381@192.168.1.56<span class="pl-pds">"</span></span> <span class="pl-e">event</span>=<span class="pl-s"><span class="pl-pds">"</span>subscribe<span class="pl-pds">"</span></span> <span class="pl-e">status</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span>>sip:admin@example.com</<span class="pl-ent">watcher</span>>
  </<span class="pl-ent">watcher-list</span>>
</<span class="pl-ent">watcherinfo</span>>

--lxwToHs6uINUYOQjbengkND5
Content-Transfer-Encoding: binary
Content-ID: <<span class="pl-ent">1438875460</span>.sip:point3@example.com.1064774448>
Content-Type: application/watcherinfo+xml

<?<span class="pl-ent">xml</span><span class="pl-e"> version</span>=<span class="pl-s"><span class="pl-pds">"</span>1.0<span class="pl-pds">"</span></span>?>
<<span class="pl-ent">watcherinfo</span> <span class="pl-e">xmlns</span>=<span class="pl-s"><span class="pl-pds">"</span>urn:ietf:params:xml:ns:watcherinfo<span class="pl-pds">"</span></span> <span class="pl-e">version</span>=<span class="pl-s"><span class="pl-pds">"</span>1<span class="pl-pds">"</span></span> <span class="pl-e">state</span>=<span class="pl-s"><span class="pl-pds">"</span>full<span class="pl-pds">"</span></span>>
  <<span class="pl-ent">watcher-list</span> <span class="pl-e">resource</span>=<span class="pl-s"><span class="pl-pds">"</span>sip:point3@example.com<span class="pl-pds">"</span></span> <span class="pl-e">package</span>=<span class="pl-s"><span class="pl-pds">"</span>presence<span class="pl-pds">"</span></span>>
    <<span class="pl-ent">watcher</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>796ffdf6-22384@192.168.1.56<span class="pl-pds">"</span></span> <span class="pl-e">event</span>=<span class="pl-s"><span class="pl-pds">"</span>subscribe<span class="pl-pds">"</span></span> <span class="pl-e">status</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span>>sip:admin@example.com</<span class="pl-ent">watcher</span>>
    <<span class="pl-ent">watcher</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">"</span>796ffdf6-22381@192.168.1.56<span class="pl-pds">"</span></span> <span class="pl-e">event</span>=<span class="pl-s"><span class="pl-pds">"</span>subscribe<span class="pl-pds">"</span></span> <span class="pl-e">status</span>=<span class="pl-s"><span class="pl-pds">"</span>active<span class="pl-pds">"</span></span>>sip:admin@example.com</<span class="pl-ent">watcher</span>>
  </<span class="pl-ent">watcher-list</span>>
</<span class="pl-ent">watcherinfo</span>>

--lxwToHs6uINUYOQjbengkND5--</pre></div>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br>Reply to this email directly or <a href="https://github.com/kamailio/kamailio/issues/276">view it on GitHub</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AF36ZZy8QPYUdhuOJGkNZW6uigs0mRhFks5ok4SwgaJpZM4Fm-Td.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
  <div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
    <link itemprop="url" href="https://github.com/kamailio/kamailio/issues/276"></link>
    <meta itemprop="name" content="View Issue"></meta>
  </div>
  <meta itemprop="description" content="View this Issue on GitHub"></meta>
</div>