Subject: [Speechsc] Section 6.2.11 (Cache-Control) bugs

From: "Dave Burke" <[email-masked]>
Date: Thu, 29 Sep 2005 09:57:11 +0100

Hi Sarvi,

I had a closer look through section 6.2.11 and found some bugs / issues.
Here is a list of them with proposed resolutions.

-----------------------------------------------------------------------------------------------

A. Some subtleties with HTTP request max-age, max-stale, min-fresh:

1 max-age and min-fresh and max-stale can take a value of "not present".
2 max-stale value of "not present" is equivalent to max-stale=0
3 max-stale can take a value of "present but no value"

We're not allowing for 1 in the BNF nor are we allowing for the GET-PARAMs
results syntax when for value "not present". Suggest:

cache-directive     = "max-age" ["=" delta-seconds]
                       / "max-stale" [ "=" delta-seconds ]
                       / "min-fresh" ["=" delta-seconds]

If a SET-PARAMS includes max-age or max-stale or min-fresh with no value, it
should unset it (i.e. value of "not present").

There is no neat way to implement 3. So I suggest removing the
sentence/feature for max-stale, i.e. delete

"If no value is assigned to max-stale, then the client is willing to accept
a stale response of any age."

In practice, this behaviour can be obtained by setting max-stale to a high
number. Some paradigms, e.g. VoiceXML, don't even support "no value".

-----------------------------------------------------------------------------------------------

B. By default, max-age and min-fresh  and max-stale should have no value (or
optionally max-stale could be 0).

This gives normal user-agent behaviour one expects.

These defaults should be specified.

-----------------------------------------------------------------------------------------------

C. I find the following text (6.2.11) problematic:

"In particular, the "expires" and "cache-control" headers of
the cached URI or document MUST be honored and take precedence over
the Cache-Control defaults set by this header."

The settings in MRCP for Cache-Control correspond to values used in the HTTP
_request_ and are independent of the HTTP response and hence what is being
termed the "headers of the cached URI". I recommend just deleting this
sentence (which is anyway contradicting the last sentence in this section).

-----------------------------------------------------------------------------------------------

D. The text for min-fresh talks about a "server" but here it means "HTTP
server" and not MRCP server, which is very confusing indeed! Also, the last
sentence appears inaccurate and superfluous. Suggested text improvment:

"min-fresh: Indicates that the MRCP client is willing to allow the MRCP
server to accept a HTTP server response with cached data whose expiration is
no less than its current age plus the specified time in seconds.  That is,
the MRCP client wants the MRCP server to request a response from the HTTP
server that will still be fresh for at least the specified number of
seconds."

-----------------------------------------------------------------------------------------------

E. Change:

"The cache-control directives are used to define the
  default caching algorithms on the server for the
  session or request."

to

"The cache-control directives are used to override the
  default cache expirations on the MRCP server for the
  session or request."

-----------------------------------------------------------------------------------------------

The rest of the section looks fine.  Thanks and keep up the good work,

Dave

_______________________________________________
Speechsc mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/speechsc