Hi
I have the following case:
101 --- kamailio proxy/xcap server -- 102
101/102 : jitsi night build, xcap/SIMPLE mode
kamailio is 3.3
101 has 102 on its contacts list, and 102 has 101 on its contacts
list as well. ( no RLS involved)
(1) 101 add 102 to its contact list, what does it mean?
It seems that some(most?) sip clients' implemenatation ( at least for
jitsi or bria) assume:
101 will add 102 to its xcap resource-list, then 101 will subscribe
to 102's status
101 allow 102 to see its status by adding 102 to its allow list in
xcap pres-rules
(2) if 101 remove 102 from its contacts, what does it mean?
as in (1) that some(most?) sip clients' implemenatation ( at least
for jitsi or bria) assume:
101 remove 102 its from its xcap resource-list, 101 will un-subscribe
102's status
101 will not allow 102 to see its status by removing 102 from its
allow list in xcap pres-rules
(1)(2) so far seems reasonable.
(3) based on (1) and (2), let 101 remove 102 from its contacts list,
101 first remove 102 from its xcap pres-rules/resource-list, puts
those rules to the xcap server/proxy,
then send un-SUBSCRIBE ( expires=0 ).
proxy in this case will send out NOTIFY to 102 to indicate its
subscription of 101 has been terminated,
Subscription-State: terminated, reason=?
what should be the correct reason code?
according to the RFC 3265:
rejected: The subscription has been terminated due to change in
authorization policy. Clients SHOULD NOT attempt to re-subscribe.
The "retry-after" parameter has no semantics for "rejected".
It seems the rejected is the good choice.
Once client (102) received the rejected reason, the subscription
has been terminated, so it will NOT try to re-subscribe ( to 101)
again ( even though 101 is still in 102's contact list).
(4) But there is an issue, when 101 add 102 to its contact list again
In this case, 101 first puts pres-rules (allow 102 to see its
status), and resources-list( adding 102) to the xcap server ,
send subscribe to 102 to proxy,
The proxy( in our case kamailio) will try as following:
(4.a). If that subscription expired, or deleted by the kamailio
timer ( If understand kamailio code correctly)
of course kamailio will NOT send any NOTIFY (to 102) since
there is no such subscription..
(4.b). if that subscription do still exist in cache or db
(active_watcher in kamailio's case), that
subscriptions will be marked as active
kamailio/proxy will send the NOTIFY to 102 indicating
101's status
But from 102 point of view: since that subscription has been
terminated , this notify will be rejected as 481 non-exist. Is it right?
In neither case there is any way to indicate to 102 that 101 is
allowing 102 again,
thus 102 can NOT see 101's status.
is it correct?
(5) But from pure end-user point of view, that is not the expected
behavior.
User expect that 102 can see 101's status since 101 now allow
102 again
and 102 did not remove 101 from his contact list.
(6) are (1)-(5) above correct behavior based on the sip SIMPLE RFCs?
If so, how to solve the issue?
Is there any standard/RFC way to notify to 102 that 101 allow 102
again thus cause 102 to re-subscribe 101 again?
Just FYI, there was a discussion on it on the sip-router mailing list
http://lists.sip-router.org/pipermail/sr-users/2012-June/073759.html
Thanks.
min
_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors