[SR-Users] simple test case: add user/delete user on kamailio 3.3 presence server

Min Wang ser.basis at gmail.com
Wed Jun 20 12:16:10 CEST 2012


HI

This is another test case :

101/102 are jitsi client, but configured to use local storage mode, of 
course they all use SIMPLE mode instead of peer-to-peer.

script is like:

         if( is_method("SUBSCRIBE"))
         {
                 $var(ret_code)= rls_handle_subscribe();
                 if($var(ret_code)== 10)
                                 handle_subscribe();
                 t_release();
         }
         ....
        event_route[xhttp:request] {
...
                        xcap put/delete:
                                           
pres_update_watchers("$var(uri)", "presence");
                                         
pres_refresh_watchers("$var(uri)", "presence", 1);
  ...
}


when 101 add 102, auth window pop up, after click ok, but no presence on 
both sides, all are grey.

Checked the the kamailio wathcer table, there are two items: 101<->102, 
but both are in status=2 ( pending mode)

potential reason:

         the current implemention of handle_subscribe() function does 
not update the watcher table.
         The only possible functions to update watcher table are: 
pres_refresh_watchers/es_update_watcher.


         since we do not have any xcap operation, so 
pres_refresh_watchers/es_update_watcher never get called.


should we add pres_refresh_watchers/es_update_watcher after 
handle_subscribe()?
or should handle_subscribe() should update the watcher table as well?



thanks

min


On 06/19/2012 10:41 AM, Daniel-Constantin Mierla wrote:
> Hello,
>
> On 6/18/12 2:11 PM, Andreas Granig wrote:
>> Hi,
>>
>> On 06/15/2012 05:25 PM, Min Wang wrote:
>>> |  1 | sip:103 at 192.168.122.32 | 101              | 192.168.122.32 |
>>> presence |      2 |        |    1339772803 |
>>>
>>>     then I deleted the 103 from the contact list, the watcher table 
>>> still
>>> shows the same.
>> For local storage, I'd expect an unsubscribe (subscribe with Expires=0)
>> from 101 to 103. The obvious work-flow would be to set it to
>> "terminated" in watchers table, and in case of a subsequent re-subscribe
>> it should be changed back to "pending" state, although the state-machine
>> doesn't indicate a transition from "terminated" back to "pending". Isn't
>> this the case?
>>
>> For xcap storage, there are other ways to block/remove a contact on/from
>> the list. As Iñaki pointed out in
>> http://lists.opensips.org/pipermail/devel/2009-August/003868.html, the
>> xcap server needs to notify the sip server about the change, which in
>> turn will notify the other party (103) that it's no longer allowed to
>> see 101's state. If the xcap_server module of kamailio is used, there is
>> the following code snippet in some examples floating around on the 
>> internet:
>>
>>
>> switch($rm) {
>>    case "PUT":
>>    xcaps_put("$var(uri)", "$hu", "$rb");
>>    if($xcapuri(u=>auid)=~"pres-rules") {
>>      pres_update_watchers("$var(uri)", "presence");
>>      pres_refresh_watchers("$var(uri)", "presence", 1);
>>    }
>>
>> So, shouldn't this update the watchers accordingly? Anyways, also in
>> this case the watcher state should change to "terminated", and in case
>> of a re-subscribe it should go back to pending if xcap rules are
>> allowing this.
>>
>> Maybe someone with good xcap_server/presence insights could elaborate on
>> that?
> to summarize, you say that when the contact is removed from the buddy 
> list, the watcher table is not updated to state terminated by 
> pres_update_watchers(...)?
>
> Cheers,
> Daniel
>




More information about the sr-users mailing list