Re: [xmpp] 3921bis: probe to full JID?

Justin Karneges <justin@affinix.com> Tue, 02 February 2010 00:48 UTC

Return-Path: <justin@affinix.com>
X-Original-To: xmpp@core3.amsl.com
Delivered-To: xmpp@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 600F328C0E2 for <xmpp@core3.amsl.com>; Mon, 1 Feb 2010 16:48:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.358
X-Spam-Level:
X-Spam-Status: No, score=-2.358 tagged_above=-999 required=5 tests=[AWL=0.241, BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y3Xp+Lu6N-gt for <xmpp@core3.amsl.com>; Mon, 1 Feb 2010 16:48:03 -0800 (PST)
Received: from homiemail-a1.g.dreamhost.com (caiajhbdccac.dreamhost.com [208.97.132.202]) by core3.amsl.com (Postfix) with ESMTP id 6C7AB3A6982 for <xmpp@ietf.org>; Mon, 1 Feb 2010 16:48:03 -0800 (PST)
Received: from localhost (andross.dreamhost.com [75.119.221.126]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by homiemail-a1.g.dreamhost.com (Postfix) with ESMTP id A1E24119DF5 for <xmpp@ietf.org>; Mon, 1 Feb 2010 16:48:39 -0800 (PST)
From: Justin Karneges <justin@affinix.com>
To: xmpp@ietf.org
Date: Mon, 01 Feb 2010 16:48:39 -0800
User-Agent: KMail/1.9.10
References: <4B6217EC.7020909@stpeter.im> <4B6742F4.2090709@stpeter.im> <4B674826.8010108@stpeter.im>
In-Reply-To: <4B674826.8010108@stpeter.im>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-Id: <201002011648.39285.justin@affinix.com>
Subject: Re: [xmpp] 3921bis: probe to full JID?
X-BeenThere: xmpp@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: XMPP Working Group <xmpp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/xmpp>, <mailto:xmpp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/xmpp>
List-Post: <mailto:xmpp@ietf.org>
List-Help: <mailto:xmpp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/xmpp>, <mailto:xmpp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 02 Feb 2010 00:48:04 -0000

On Monday 01 February 2010 13:31:18 Peter Saint-Andre wrote:
> On 2/1/10 2:09 PM, Peter Saint-Andre wrote:
> > On 2/1/10 12:56 PM, Ben Schumacher wrote:
> >> On 02/01/2010 12:29 PM, Justin Karneges wrote:
> >>> Basically, the server should return the most recently sent presence to
> >>> the JID
> >>> doing the probing, whether directed or undirected.  So, no, if you
> >>> send me
> >>> directed presence and then I probe you, I would not expect to receive
> >>> your "real" (undirected) presence.
> >>
> >> Therein lies the rub. I do not want to have to shove ever presence sent
> >> into a DB, DHT, whatever to meet these requirements. Hence the point of
> >> the recommendation re: probe + unavailable.
> >
> > Yes, that seems onerous.
> >
> > Currently, the server needs to keep track of whether another entity is
> > on the list for receiving unavailable presence for a given resource. The
> > server will remove an entity from that list if the user sends directed
> > unavailable presence to the entity. So the server knows if it can send
> > <presence/> (no details like show or status or priority) to an entity,
> > and perhaps that is the best thing for it to return to the entity if it
> > probes the full JID.
>
> How is this text?
>
>    If the contact's server receives a presence probe addressed to a full
>    JID of the contact, the server MUST NOT return presence information
>    about any resource except the resource specified by the 'to' address
>    of the probe.  Rules #1 and #2 for a bare JID probe apply equally to
>    the case of a full JID probe.  If there is a resource matching the
>    full JID and (a) the probing entity has authorization via a presence
>    subscription to see the contact's presence or (b) the contact has
>    sent directed available presence to the probing entity, then the
>    server MUST return an available presence notification, which SHOULD
>    communicate only the fact that the resource is available (not
>    detailed information such as the <show/>, <status/>, <priority/>, or
>    presence extensions).

Hmm, I'm okay with where you're going with this, but it is strange that the 
presence returned here has a different meaning than it would in normal 
circumstances.  I'm imagining a race condition where someone updates their 
directed presence to you right as you perform a probe on them.  Now when you 
receive their presence, you'll think it is a reply to the probe, meaning that 
the user is still online but you'll otherwise discard the details of the 
presence packet.  Then the probe is received by the contact's server and 
processed, and an empty presence is returned back to you, which you'd then 
process as a typical directed presence update.  Oops.

The simplest solution from a protocol perspective is to always return correct 
presence.  It's what you'd naturally expect, and it makes everything work 
too.  But I understand that some server developers might not want to do that.

I hate to make this seem more complicated by introducing new XML, but one idea 
is to have:
  <presence to="probing_entity">
    <unchanged/>
  </presence>

Then the meaning of received presence is always clear.  It would be at the 
server's option to reply either with <unchanged/> or with the complete 
presence details.

-Justin