Mridul Muralidharan wrote:

>> Now, a 'from' address of the full JID seems odd to me. What if I send an
>> IQ-set from one of my resources to another? Does that mean I can do
>> roster pushes directly from one resource to another without updating the
>> roster on the server? Does the server deliver the IQ-result packets from
>> all interested resources to the initiating resource for the roster set?
>> That seems wrong to me (i.e., I think it's a spec bug in RFC 3921).
>>
>> A bare JID makes more sense because IQs sent to the bare JID are handled
>> by the server. But in that case, the server can't perform the usual
>> swapping of 'from' and 'to' addresses anyway, so it seems easier to not
>> include the 'from' address.
>>
> In our case, server handles roster iq's, irrespective of destination
> specified in stanza and will always be processed for the sender.

Here's what I'm talking about:

1. res1 sends a roster set:

<iq from='[EMAIL PROTECTED]/res1' type='set'>
  <query xmlns='jabber:iq:roster'>.....</query>
</iq>

2. Server processes the set and sends out roster pushes to res1, res2,
and res3:

<iq from='[EMAIL PROTECTED]/res1' to='[EMAIL PROTECTED]/res1' type='set'>
  <query xmlns='jabber:iq:roster'>.....</query>
</iq>

<iq from='[EMAIL PROTECTED]/res1' to='[EMAIL PROTECTED]/res2' type='set'>
  <query xmlns='jabber:iq:roster'>.....</query>
</iq>

<iq from='[EMAIL PROTECTED]/res1' to='[EMAIL PROTECTED]/res3' type='set'>
  <query xmlns='jabber:iq:roster'>.....</query>
</iq>

3. In accordance with RFC 3920 and RFC 3921, all three resources process
the roster push and return IQ-result:

<iq from='[EMAIL PROTECTED]/res1' to='[EMAIL PROTECTED]/res1' type='result'>
  <query xmlns='jabber:iq:roster'>.....</query>
</iq>

<iq from='[EMAIL PROTECTED]/res2' to='[EMAIL PROTECTED]/res1' type='result'>
  <query xmlns='jabber:iq:roster'>.....</query>
</iq>

<iq from='[EMAIL PROTECTED]/res3' to='[EMAIL PROTECTED]/res1' type='result'>
  <query xmlns='jabber:iq:roster'>.....</query>
</iq>

4. In accordance with RFC 3920, server routes all three IQ-results to
res1 -- it does not process them itself because IQs addressed to full
JIDs are delivered to the client, not processed by the server. So as a
result, the client running at res1 receives 3 IQ-results.

Is that desired behavior? I think not. The server doesn't process the
IQ-results (were they received?) and the res1 client is going to be
confused.

Or so it seems to me.

I say we didn't specify this fully or carefully enough in RFC 3921 and
should fix it.

Peter

-- 
Peter Saint-Andre
XMPP Standards Foundation
http://www.xmpp.org/xsf/people/stpeter.shtml

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to