Re: [Webpush] Delivery receipt may be sent before AS request delivery

Idel Pivnitskiy <idel.pivnitskiy@gmail.com> Thu, 09 June 2016 02:12 UTC

Return-Path: <idel.pivnitskiy@gmail.com>
X-Original-To: webpush@ietfa.amsl.com
Delivered-To: webpush@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D52FE12D10D for <webpush@ietfa.amsl.com>; Wed, 8 Jun 2016 19:12:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.699
X-Spam-Level:
X-Spam-Status: No, score=-2.699 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id enkSHzdZqttu for <webpush@ietfa.amsl.com>; Wed, 8 Jun 2016 19:12:48 -0700 (PDT)
Received: from mail-io0-x22d.google.com (mail-io0-x22d.google.com [IPv6:2607:f8b0:4001:c06::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8365712B065 for <webpush@ietf.org>; Wed, 8 Jun 2016 19:12:48 -0700 (PDT)
Received: by mail-io0-x22d.google.com with SMTP id m62so26115322iof.0 for <webpush@ietf.org>; Wed, 08 Jun 2016 19:12:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=otASm8BabHrHEKwHW1/4wJi34gA5t0x7+GX37p/a9zY=; b=EIT4vrschgSQbcpy5d7NGKzkpeaUeKCvMKzn/aandXywGU2iyNUUoViJSs+qaBZj+3 8L79LkyW/iFryRvcmYRdip9n3hNtei9hjD39dtoCVx63dMvMA6lE2u8tzx+1dBkRSUY7 pACsYi8spB5Kq9frZ0IPjA6sopWe3Hx838++V3jiuT4Hi662klXtcCKRxTXIaQjuTQNj m2Ds3IsZiied8XNQnQg8p1Np8Y9K4FbB/O9cWBvb2lW8eFr4JNTMws4L2sRUTWoI7L53 kC/z06Vz3C2TiIfc9RbwbwOzf+wv79o3e1BGzcGXn/lTWfsPcTSLwdueAhAylo0qTiy8 zV4g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=otASm8BabHrHEKwHW1/4wJi34gA5t0x7+GX37p/a9zY=; b=k6UW7Pnox3UlJw6ibjWyK0uwq8xh5cRc2dfqSRpKgAck7vZfoNKj8lLfryNIqC2dTa Q2BzNjvz7JY6rpcaJnlXOqUdXUELNUcEroXhmk8YiVFrcC6zgELmRZOO0cpzkzek64ij vWv2AawJ6K3yMpOmumX3wWFylopPTYMdMukXSgSKEUZPf/VK9J/LSjwi3KP3f/3q9p/4 LzPOQ7WrEwVdROsnjgmOUi5gGaM3ayU9T1mjpaZ7Nao2PLS4LXGiAP32bOADaAhCPBbu 5aGT1qAdabh9gQLzN1BrwfR3cYSaUHEQXu4pVddZgq+0khz0rJT1OzzoSrNpJ+uyZ06i MpjA==
X-Gm-Message-State: ALyK8tLapowJpNkb06WbgO88Ugeg9NzCw+OzwpPOUDPm+nZvNI1QxmpvRs/P8mORSGhAjtcq6KTx3L33U9hrmA==
X-Received: by 10.107.148.143 with SMTP id w137mr13126889iod.63.1465438367533; Wed, 08 Jun 2016 19:12:47 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.36.152.131 with HTTP; Wed, 8 Jun 2016 19:12:08 -0700 (PDT)
In-Reply-To: <CABkgnnU3cUyo1=6qNPbD3QtPL_qDzqiFHG72zxmENL2fx9mnQw@mail.gmail.com>
References: <CAN+BUJrTzyUJBVbfv7ftUfNDkUsiAWu_5bLAw6k+9ZgKcPUS6g@mail.gmail.com> <CABkgnnU3cUyo1=6qNPbD3QtPL_qDzqiFHG72zxmENL2fx9mnQw@mail.gmail.com>
From: Idel Pivnitskiy <idel.pivnitskiy@gmail.com>
Date: Thu, 9 Jun 2016 05:12:08 +0300
Message-ID: <CAN+BUJo31xxPFPXfaJsY5Yz10X7-xX7WZmFyfoX+znWTbEdHfA@mail.gmail.com>
To: Martin Thomson <martin.thomson@gmail.com>
Content-Type: multipart/alternative; boundary=001a113fd4865690a90534cef577
Archived-At: <https://mailarchive.ietf.org/arch/msg/webpush/Rj8GCajSdO9TDxLitKttb2qmwig>
Cc: "webpush@ietf.org" <webpush@ietf.org>
Subject: Re: [Webpush] Delivery receipt may be sent before AS request delivery
X-BeenThere: webpush@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Discussion of potential IETF work on a web push protocol <webpush.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/webpush>, <mailto:webpush-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/webpush/>
List-Post: <mailto:webpush@ietf.org>
List-Help: <mailto:webpush-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/webpush>, <mailto:webpush-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 09 Jun 2016 02:12:51 -0000

I implemented the design which describes as "Before" in this presentation
[1] last year. And I agree that interaction of UA in this process
is inconvenient. It should be something like this [2], but instead of using
token-URI like /receipts/xjTG79I3VuptNWS0DsFu4ihT97aE6UQJ, introduce
something more simple, like:

POST /subscribe-for-receipt HTTP/1.1
Host: push.example.net

Benefits:

   1. subscription may be created and receiving Push Message Receipts may
   be requested before sending a new push message => no delivery receipts will
   be lost;
   2. no need to send a push message to get receipt subscription resource;
   3. easy receipt subscription management and receiving receipts (AS may
   have a separate thread or service for this purpose);
   4. simplifying registration of a new push message on PS side: just one
   new object will be created (a push message), no need to think about
   management of receipt subscriptions (what it needs to do? return the same
   receipt subscription or a new one).

Even if the 1st issue is not a big deal, because we may increase TTL value,
the 4th will simplify a PS and the 3rd will be more appropriate for an AS.

I'm also a little bit confused, when reading the draft and see the same
sentence, but with different status codes:

   - Section 5: A 201 (Created) response indicates that the push message
   was accepted.
   - Section 5.1: A 202 (Accepted) response indicates that the push message
   was accepted.
   - Section 5.4: A 201 (Created) response indicates that the push message
   replacement was accepted.

What will be for replacing Push Message with requesting delivery receipt:
"A 202 (Accepted) response indicates that the push message replacement was
accepted"?

Another advantage: just one status code will be returned when AS requests
Push Message delivery.

[1] https://www.ietf.org/proceedings/95/slides/slides-95-webpush-1.pdf
[2] https://tools.ietf.org/html/draft-ietf-webpush-protocol-04#section-5

Best regards,
Idel Pivnitskiy
--
Twitter: @idelpivnitskiy <https://twitter.com/idelpivnitskiy>
GitHub: @idelpivnitskiy <https://github.com/idelpivnitskiy>

On Thu, Jun 9, 2016 at 4:06 AM, Martin Thomson <martin.thomson@gmail.com>
wrote:

> For context:
>
> > Here may be a problem with push messages with a little value of TTL.
> Message may be sent to a UA and ack may be received from the UA before the
> AS will send a HTTP GET request to the receipt subscription resource. PS
> will retry delivering of receipt, but TTL may expire before this.
> >
> > To eliminate this problem it would be better to introduce separate
> resource for an AS: something like /subscribe for a UA, where AS may create
> a receipt subscription.
>
> We originally had the design you describe, but @brianraymor proposed a
> simpler design that accomplishes the same goals, providing that you
> recognize that a TTL shorter than the time it takes to poll the
> receipt subscription resource can result in losing the receipt.
>
> The only good solution to this general problem is to have a longer TTL.
>
> Even if you fix the "bug" you identified, a short TTL can expire
> between the time that the message is delivered to the user agent and
> before the acknowledgment can reach the push service.
>
>
> On 9 June 2016 at 09:07, Idel Pivnitskiy <idel.pivnitskiy@gmail.com>
> wrote:
> > Found out a problem with lost of delivery receipts for push messages with
> > little TTL, an issue was created:
> >
> > https://github.com/webpush-wg/webpush-protocol/issues/115
> >
> > Best regards,
> > Idel Pivnitskiy
> > --
> > Twitter: @idelpivnitskiy
> > GitHub: @idelpivnitskiy
> >
> > _______________________________________________
> > Webpush mailing list
> > Webpush@ietf.org
> > https://www.ietf.org/mailman/listinfo/webpush
> >
>