On Sep 29, 2010, at 10:07 PM, bschumac wrote:

> On 9/29/10 1:02 PM, Justin Karneges wrote:
>> 
>> In other words, the XEP is saying to send like this:
>> 
>> <presence to="user" from="room/existing_occupant1"/>
>> <presence to="user" from="room/existing_occupant2"/>
>> <presence to="user" from="room/new_occupant"/>
>> 
>> However, any XMPP server (whether the one the MUC component is connected to,
>> or the user's, which may be over s2s) may route these stanzas in any order,
>> because the from JIDs are all different.  It would be perfectly legal for the
>> user's server to relay the stanzas to the user in this order:
>> 
>> <presence to="user" from="room/existing_occupant2"/>
>> <presence to="user" from="room/new_occupant"/>
>> <presence to="user" from="room/existing_occupant1"/>
>> 
>> I see this issue becoming greater as XMPP servers become more optimized,
>> threaded, clustered, etc.  Maintaining delivery order comes at a cost, and 
>> you
>> can be sure implementors will avoid that cost where allowed (indeed, this
>> thread was prompted after discussions I had with Artur of Tigase and his
>> desire to bend delivery rules for speed sake).
> 
> I believe the RFC is ambiguous in this regard and the XEP depends on an 
> understood reading of the RFC that perhaps isn't spelled out well enough. 
> Section 10.1 of RFC3921bis [1] simply states:
> 
> An XMPP server MUST ensure in-order processing of XML stanzas between any two 
> entities. This includes stanzas sent by a client to its server for direct 
> processing by the server (e.g., in-order processing of a roster get and 
> initial presence as described in [XMPP‑IM]).
> 
> In my opinion the expected behavior in this regard has always been between 
> two Bare JIDs -- from: <localp...@domainpart> to: <localp...@domainpart>.

I am afraid, in most cases there is no such thing like "between two bare JIDs".
If two users talk to each other and each of these users have two connections 
(resources)
then what in this context mean "between two Bare JIDs".

Please note also the RFC says "between any two entities". Even though it does 
not specific whether
this is between the entity sending the packet and receiving the packet or 
between the entity
in 'from' address and 'to' address which is not always the same thing.
I assume the RFC means between entities specified in 'from' and 'to' address.

Artur
-- 
Artur Hefczyc
http://www.tigase.org/
http://artur.hefczyc.net/

Reply via email to