From: Daniel Hartwig <mandyke@gmail.com>
To: Andy Wingo <wingo@pobox.com>
Cc: "R. P. Dillon" <rpdillon@gmail.com>,
guile-user@gnu.org, 10147@debbugs.gnu.org
Subject: bug#10147: HTTP "Expires" header should handle non-date values
Date: Thu, 22 Dec 2011 12:28:01 +0800 [thread overview]
Message-ID: <CAN3veRcbLH8FRK1zPwMDSN1OOBLWXuk-NaDVc2mkTyTpCiapWQ@mail.gmail.com> (raw)
In-Reply-To: <87ty4tqpyf.fsf@pobox.com>
On 22 December 2011 10:51, Andy Wingo <wingo@pobox.com> wrote:
>
> On Sun 27 Nov 2011 05:39, Daniel Hartwig <mandyke@gmail.com> writes:
>
>> This is definitely a bug on Guile's part, HTTP/1.1 permits such values
>> for "Expires" headers [1], treating them as though they were a date in
>> the past:
>>
>> HTTP/1.1 clients and caches MUST treat other invalid date formats,
>> especially including the value "0", as in the past (i.e., "already
>> expired").
>>
>> [1] http://tools.ietf.org/html/rfc2616#section-14.21
>
> But that's right after saying
>
> The format is an absolute date and time as defined by HTTP-date in
> section 3.3.1; it MUST be in RFC 1123 date format:
>
> Expires = "Expires" ":" HTTP-date
>
> But, pragmatism may rule, here...
>
... especially given that players like Google are using "-1" ;-)
> ... Wouldn't it
> be better to keep the expires header as a date? Would any date in the
> past work fine?
>
That is what I initially considered. A great solution because it
requires no changes to existing code which would be expecting a date
value. I think any date would do, ideally it would match the value of
the Date header, but the current parsing code does not allow for
access to it. I considered using a single, well defined value for
date-in-the-past (Unix epoch).
The *only* concern I had with this approach is wrt implementing a
cache/proxy. My idea was that by storing the non-date values as a
string you can store/forward these unmodified and still check for the
"already expired" condition.
Admitedly this is a very minor concern, as there is no change in
semantics at the protocol level -- both approaches result in the
client understanding that the content is already expired.
I think what I came up with was a solution in need of a problem
(which should be solved more generally across the whole module
any way).
> Would it be best to allow some special cases like "0" or "-1" instead?
>
Not sure precisely what you mean here. Is it something like:
(or (false-if-exception (parse-date str))
(and (memq str '("0" "-1")) str)
date-in-the-past)
?
> I'm just trying to limit the damage here :) WDYT?
>
I am certainly in favour of keeping the value as a date to achieve
this aim.
next prev parent reply other threads:[~2011-12-22 4:28 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-27 10:39 HTTP "Expires" header should handle non-date values Daniel Hartwig
2011-12-22 2:51 ` bug#10147: " Andy Wingo
2011-12-22 4:28 ` Daniel Hartwig [this message]
2011-12-22 12:35 ` Andy Wingo
2011-12-27 15:49 ` Daniel Hartwig
[not found] ` <CAN3veRfgg+dDzjMy1L8xaAcaZ82dAuFM1dnNpGbzq-5ckoVsAA@mail.gmail.com>
2012-01-09 22:36 ` Andy Wingo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAN3veRcbLH8FRK1zPwMDSN1OOBLWXuk-NaDVc2mkTyTpCiapWQ@mail.gmail.com \
--to=mandyke@gmail.com \
--cc=10147@debbugs.gnu.org \
--cc=guile-user@gnu.org \
--cc=rpdillon@gmail.com \
--cc=wingo@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).