diff --git a/xep-0155.xml b/xep-0155.xml index a409dea8..9d4d439f 100644 --- a/xep-0155.xml +++ b/xep-0155.xml @@ -29,7 +29,7 @@ 0.10 2006-10-20 ip -

Enhanced implementation notes; added AMP note.

+

Specified handling of offline requests.

0.9 @@ -170,8 +170,8 @@ ]]> -

The contact's server delivers the request to the contact's most available resource (which in the examples below happens to be "balcony").

-

In any response to the request, the contact's client MUST mirror any 'id' attribute and &THREAD; value so that the user's client can correctly track the response.

+

The contact's server delivers the request to the contact's most available resource (which in the examples below happens to be "balcony"). If no resource is available (and no Advanced Message Processing rule included in the request specifies otherwise) then the server MAY store the request for later delivery. In this case, if the contact is interested only in an immediate chat session when it eventually receives the request, it SHOULD initiate a new chat session negotiation (including a newly-generated ThreadID) instead of responding to the user's request. Note: Sending any response to the user's original request would leak presence information since it would divulge the fact that the contact had been offline rather than just ignoring the user.

+

In any response to the user's request, the contact's client MUST mirror any 'id' attribute and &THREAD; value so that the user's client can correctly track the response.

If the contact's client does not support one of the default values or if the contact has disabled its support (as for Chat State Notifications and XHTML formatting in the example below), and the client can still accept the request, then it MUST set that field to a value that it can support.

In the example below we assume that Juliet accepts the chat and specifies that she prefers to speak Italian with Romeo: