[sr-dev] git:master: modules_k/presence: RFC 4827 (presence hard-state) support
Anca Vamanu
anca.vamanu at 1and1.ro
Thu May 31 14:24:28 CEST 2012
Hi Peter,
Unfortunately I have not worked at this until now. If you can do it in
the next period, it would be great. If I can help you with anything,
please ask.
Regards,
Anca
On 05/31/2012 12:21 PM, Peter Dunkley wrote:
> Hi Anca,
>
> Did you get any time to look at this?
>
> If you didn't I might have a chance over the next couple of days.
>
> Regards,
>
> Peter
>
> On Wed, 2012-04-11 at 17:30 +0300, Anca Vamanu wrote:
>> Hi Peter,
>>
>>
>> Thanks for the feedback.
>>
>> I agree with extra parameters for pres_refresh_watchers(), so if type
>> is 2 it can receive two optional parameters: file URL and file name.
>> And also get_rules_doc function in presence_xml module has to be
>> changed to be able to do include int the query file URL is given.
>>
>> I also have a busy schedule in the next period (with Easter and some
>> holidays :) ), but I will try to implement this change in the next
>> period. I don't think we need to worry about the freeze, as this is
>> actually a fix, not a new feature.
>>
>> Regards,
>> Anca
>>
>>
>> On 04/11/2012 05:13 PM, Peter Dunkley wrote:
>>> Hi Anca,
>>>
>>> I hadn't realised this was already in presence_xml. I have added
>>> some comments below.
>>>
>>> I would like to make these changes, but it could be a couple of
>>> weeks before I have time. Given that there is a freeze coming up in
>>> two weeks what do you think should be done in the short-term?
>>>
>>> On Wed, 2012-04-11 at 16:55 +0300, Anca Vamanu wrote:
>>>> The good think about my solution was that I left the XCAP document
>>>> fetch part in *presence_xml* module. I think it is better like this
>>>> because the *presence* module remains independent of the XCAP part.
>>>> And more than this, it works for both integrated and not integrated
>>>> XCAP server ( because it uses the generic API of fetching XCAP
>>>> documents) and even for any event (not only presence).
>>>>
>>> I can see that presence_xml is a more logical place to put some of
>>> this implementation.
>>>
>>>> Here I like better that you have fetched the document and stored it
>>>> in presentity table with expires -1.
>>>>
>>>> As for the fact that you added a new function to be called from the
>>>> script when to fetch and store this document
>>>> (pres_update_presentity), I think it would have been better to use
>>>> the existing *pres_refresh_watchers* function. If you look in the
>>>> documentation, actually when type!= 0 , a pidf manipulation
>>>> document change might be expected:
>>>>
>>>> http://git.sip-router.org/cgi-bin/gitweb.cgi?p=sip-router;a=blob;f=modules_k/presence/README;h=25de125997927321c63938e5a013f93c10b86379;hb=refs/heads/master
>>>>
>>>> The reason why it is better to use this function is that it is
>>>> actually called by the refereshWatchers MI command and we will
>>>> maintain the compatibility with other external XCAP servers that
>>>> use this MI command. We can also put a specific type, let's say
>>>> type=2 for pidf manipulation document change and type=1 for
>>>> presentity table change.
>>> I do agree with this.
>>>
>>>> When *pres_refresh_watchers* is called with**type=*2* , try to
>>>> fetch the pidf manipulation document from xcap server and if found,
>>>> store it in presentity table with expires=-1 (as you have done).
>>>> The only thing that I would change is to use a wrapper over
>>>> *get_rules_doc* function from presence_xml module. We can do this
>>>> adding a new field in the pres_ev_t structure (exactly as
>>>> get_rules_doc field).
>>>>
>>>> Then continue with the query_db_notify(pres, ev, NULL) function
>>>> which will also be called if type=1.
>>>>
>>>> And to maintain compatibility for refereshWatchers function we can
>>>> call from here pres_referesh_watchers with type=2, considering that
>>>> also a pidf manipulation document
>>> This makes sense to me.
>>>
>>>> The only thing that I don't know is how to keep from your
>>>> implementation is the possibility for a user to have multiple pidf
>>>> documents. I saw that you use the URL to fetch from xcap table and
>>>> the file name as ETAG to offer the possibility of storing multiple
>>>> pidf documents. However my question is actually whether this use
>>>> case is actually possible? Why would a user have more permanent
>>>> state documents at the same time?
>>> I did this because I know (from experience) that many different
>>> clients use slightly different file names for the documents they
>>> store in XCAP. This doesn't matter so much for pres-rules, avatars,
>>> user-profiles, and resource-lists because the XML content of the
>>> documents is still the same regardless of name. With presentities
>>> it is a bit different. This is because different clients can (and
>>> do) use different XML nodes for things like <busy/>, <available/>,
>>> <vacation/>, as well as supporting and displaying different fields
>>> like emoticons, notes, URLs. This means that although different
>>> clients that support hard-state will both generate PIDF XML the
>>> fields within those XML documents could vary widely.
>>>
>>> Supporting multiple documents for a subscriber at least leaves open
>>> the possibility that someone who uses different clients (one on
>>> Windows at work, one on Linux at home, perhaps) wouldn't be in the
>>> situation of having one client simply dropping stuff the other had
>>> PUBLISHed.
>>>
>>> For example, the presence client I tested this development with
>>> (which doesn't support hard-state anyway - I had to use curl to
>>> upload the document) didn't support the <vacation/> status from RFC
>>> 4827, and therefore didn't display it (I had to confirm the NOTIFYs
>>> were correct with a Wireshark trace).
>>>
>>> Could this ETag stuff be supported by giving an extra (optional)
>>> parameter to pres_refresh_watchers() called ETag?
>>>
>>> Peter
>>>
>>> --
>>> Peter Dunkley
>>> Technical Director
>>> Crocodile RCS Ltd
>>>
>>
>
> --
> Peter Dunkley
> Technical Director
> Crocodile RCS Ltd
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20120531/8c1d6c07/attachment-0001.htm>
More information about the sr-dev
mailing list