Skip to content

Commit fa9e0f3

Browse files
committed
Remove content that's not strictly necessary; change requirements
1 parent 440c091 commit fa9e0f3

File tree

1 file changed

+11
-24
lines changed

1 file changed

+11
-24
lines changed

content.mkd

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,7 @@ A WebDAV-Push client typically
6565

6666
WebDAV-Push is not restricted to a specific push transport. This allows even upcoming, yet unknown push transports to be used with WebDAV-Push. Push transport definitions can define extra properties and additional processing rules.
6767

68-
WebDAV-Push implementations SHOULD implement at least the Web Push transport (defined in {{transport-web-push}}). If possible, other push transports SHOULD be connected over a Web Push gateway instead of defining a new WebDAV-Push transport.
69-
70-
To use a proprietary push service, a client vendor may need to provide a rewrite proxy that offers a Web Push endpoint that signs and forwards the requests to the respective push service. If possible, VAPID {{RFC8292}} should be used instead of such a proxy.
68+
WebDAV-Push implementations SHOULD implement at least the Web Push transport (defined in {{transport-web-push}}). Ideally, other transports are connected over a Web Push gateway instead of defining a new WebDAV-Push transport.
7169

7270

7371
## Terminology
@@ -116,7 +114,7 @@ WebDAV-Push
116114

117115
# Service Detection
118116

119-
A server that supports WebDAV-Push MUST include "webdav-push" in the `DAV` header of an `OPTIONS` response for any resource that supports WebDAV-Push. The "webdav-push" value MUST indicate that all MUST level requirements of this document are met.
117+
A server that supports WebDAV-Push MUST include "webdav-push" in the `DAV` header of an `OPTIONS` response for any resource that supports WebDAV-Push. The "webdav-push" value MUST indicate that all MUST-level requirements of this document are met and all SHOULD-level requirements are met except for a good reason.
120118

121119
Example:
122120

@@ -140,7 +138,7 @@ To provide information about WebDAV-Push support, new properties are defined. A
140138

141139
The `transports` element(((transports XML element))) lists available push transports. Within the scope of this document, the only supported transport is `web-push` (see {{transport-web-push}}). Although the property is defined on every Push-capable resource, its value is usually the same for every resource on the server.
142140

143-
The `topic`(((topic XML element))) is a globally unique identifier for the resource. A specific resource could be reachable with different URLs, but it can have only one push topic. A server could for instance use a random UUID or a canonical URL that won't change over the lifetime of the resource. The value should be globally unique because a client can subscribe to resources from multiple servers and needs to be able to determine the correct one when it receives a push message.
141+
The `topic`(((topic XML element))) is a (server-wide) unique identifier for the resource. A specific resource could be reachable with different URLs, but it can have only one push topic. A server could for instance use a random UUID or a canonical URL that won't change over the lifetime of the resource.
144142

145143
The `supported-triggers` element(((supported-triggers XML element))) MUST contain at least one of the following elements:
146144

@@ -299,9 +297,7 @@ HTTP/1.1 204 Unregistered
299297

300298
## Expiration
301299

302-
Clients MAY specify an expiration date-time when they register a subscription.
303-
304-
A server SHOULD take the expiration specified by a client into consideration, but MAY impose its own (often stricter) expiration rules, for instance to keep their database clean or because the client has specified an implausible late expiration. A server MUST allow subscriptions to be valid at least three days.
300+
Clients can specify an expiration date-time when they register a subscription. A server SHOULD take the requested expiration time into consideration, but MAY impose its own (often stricter) expiration rules, for instance to keep their database clean or because the client has specified an implausible late expiration. A server SHOULD allow subscriptions to be valid at least three days.
305301

306302
Clients have to refresh their registrations regularly and before the expiration date to keep them working. They can expect that subscriptions usually stay valid until their expiration, although there may be special circumstances that cause all subscriptions to be reset, like when the server software is changed.
307303

@@ -313,7 +309,7 @@ Expired subscriptions MUST NOT be used anymore as chances are high that doing so
313309

314310
A WebDAV-Push server MUST notify registered subscriptions of a subscribed resource:
315311

316-
- on a _content update_, if this was requested during subscription registration,
312+
- on a _content update_, if this was requested during subscription registration, and
317313
- on a _property update_, if this was requested during subscription registration.
318314

319315
In case of the Web Push transport, this happens over a `POST` request to the subscription (push resource).
@@ -354,11 +350,9 @@ quoted-registration-url = quoted-string
354350
; absolute push registration URL
355351
~~~
356352

357-
A server SHOULD NOT send push notifications that are triggered by the requested operation to the subscriptions of the `Push-Dont-Notify` header.
358-
359-
Because URIs are not per se canonical, the URL MUST be provided in the exact form as it was originally provided by the server in the `Location` header.
353+
In the context of the requested operation, a server MUST NOT send push notifications to the explicitly given subscription URLs of the `Push-Dont-Notify` header, and it SHOULD NOT send any push notifications when the asterisk value (`*`) is used.
360354

361-
Usage of the asterisk value (`*`) requests that the server doesn't send any notifications for the operation.
355+
Because URLs are not per se canonical, registration URLs MUST be provided in the exact form as it was originally provided by the server in the `Location` header.
362356

363357
Multiple values can be provided as a list and/or using multiple lines as described in {{Section 5.2 of RFC9110}}. If the asterisk is used, other values MUST NOT be sent.
364358

@@ -406,16 +400,16 @@ Servers SHOULD take measures to avoid such problems. These can include:
406400
* to delay push messages (usually for a short time),
407401
* to merge/omit push messages.
408402

409-
Such measures MUST not change the overall meaning of the push notifications so that the client can still perform its desired action. For instance, of a series of push messages that contain only content updates and occur shortly after each other, all but the last message can be omitted (the messages are _merged_ into a single one). If one of the push messages signals a property update, it can't be just omitted because the client then wouldn't know that a property update happened. So in that case the server could either send two messages (one merged message for the content updates and one for the property update) or even better a single push message that signals both the content and the property update.
403+
Such measures SHOULD NOT change the overall meaning of the push notifications so that the client can still perform its desired action. For instance, of a series of push messages that contain only content updates and occur shortly after each other, all but the last message can be omitted (the messages are _merged_ into a single one). If one of the push messages signals a property update, it can't be just omitted because the client then wouldn't know that a property update happened. So in that case the server could either send two messages (one merged message for the content updates and one for the property update) or even better a single push message that signals both the content and the property update.
410404

411405
Clients MAY use the `Push-Dont-Notify: *` header to reduce the number of push messages when desired (for instance, for all requests in a batch except the last one). However clients should be aware that it may be possible that the last operation fails and then no push notification is sent at all, so this should be used only when really necessary.
412406

413407

414408
## Removal of Invalid Subscriptions
415409

416-
A WebDAV-Push server MUST ensure that invalid subscriptions (encountered when trying to sending a push notification) are removed at some time.
410+
A WebDAV-Push server SHOULD ensure that invalid subscriptions (encountered when trying to sending a push notification) are removed at some time.
417411

418-
An invalid subscription is a subscription that push notifications can't be delivered to. Usually the push service returns an HTTP error code like 404 when it receives a notification for an invalid subscription. There may also be other conditions that render a subscription invalid, like a non-resolvable hostname or an encryption handshake error.
412+
An invalid subscription is a subscription that push notifications can't be delivered to. Usually the push service returns an HTTP error code like 404 when it receives a notification for an invalid subscription. There may also be other conditions that render a subscription invalid, like a non-resolvable hostname or an encryption error.
419413

420414
A server MAY use some logic like remembering the last successful delivery plus some tolerance interval to defer removal of an invalid subscription. Doing so will make WebDAV-Push more reliable in case of temporary problems and avoid temporal "holes" between subscription removal and re-registration.
421415

@@ -550,7 +544,7 @@ However because it's possible that the VAPID key changes without possibility to
550544

551545
Message encryption hides details of push messages from the push services. Before creating the subscription, the client generates a key pair as defined in {{RFC8291}}.
552546

553-
When the client then registers this subscription at the server, it MUST include these subscription properties:
547+
When the client then registers this subscription at the server, it includes these subscription properties:
554548

555549
* `content-encoding`(((content-encoding XML element))) – how the encrypted content is encoded; currently only `aes128gcm` is supported
556550
* `subscription-public-key`(((subscription-public-key XML element))) – public key of the user agent's key pair in uncompressed form and base64url encoded; attribute `type="p256dh"` MUST be added to allow different key types in the future
@@ -567,13 +561,6 @@ The push message is delivered via `POST` to the push resource, with `Content-Typ
567561

568562
The server MAY send the push message with a `Topic` header so that an undelivered push message can be replaced by an updated one. The server MUST ensure that the meaning doesn't change when a push message is potentially replaced. The `Topic` header is visible to the push service, so its value MUST NOT contain sensitive information.
569563

570-
For instance, the header value could be derived with a secure hash function from
571-
572-
- the collection topic,
573-
- whether the push message contains a content update,
574-
- whether the push message contains a property update, and
575-
- a secret that is only used for this purpose.
576-
577564
The server MAY use the `Urgency` header to set the priority of the push message. For instance, a CalDAV server may send push notifications for new/changed events with alarms that are scheduled within the next 15 minutes with `Urgency: high` so that users receive the alarm as soon as possible. Updates that are not that time-critical, for instance in slowly changing collections like a holiday calendar could be sent with `Urgency: low`.
578565

579566

0 commit comments

Comments
 (0)