On 4/23/07 at 9:15 PM -0400, Bruce Lilly wrote:
OK -- I suggest using an ABNF rule name for the construct of
"clause" (rather than -- or in addition to -- 2822 "name-val-pair")
to make the association between RFC text and ABNF clearer.
[...]
Also, please be very careful: a literal
clause = *(word / domain / addr-spec / angle-addr)
would allow currently illegal atrocities
So, as with other stuff, 2822upd is going to have a more general
syntax that it will be up to 2821bis to limit. In this case, I'm
simply going to have:
received = "Received:" *received-tokens ";" date-time CRLF
received-tokens = word / angle-addr / addr-spec / domain
and leave it to 2821bis to use syntax (including defining proper
"clauses") that won't allow such "atrocities".
Please don't forget the existing (2821/2822) discrepancies:
1. 2821 permits "String" which in turn includes "Quoted-string", while
2822 does not allow "quoted-string" in a value-item [*]
I've got "word" which is "atom / quoted-string".
2. 2821 specifies the "for" clause name as having a value of
1 * ( Path / Mailbox ), whereas 2822 permits only a single
addr-spec or one or more angle-addrs
Allowed above by any number of "angle-addr" or "addr-spec". 2821bis
can limit as desired.
Although it may be tempting to specify a generic field in 2822bis
and punt the specifics to 2821bis, [...] it may be (depending on how
loose the 2822bis specification is) impossible in general to parse
such fields. 2822 as written hasn't quite fallen over that cliff,
but it's teetering on the edge:
Received:;1 Jan 2007 02:34:56 -0700
I would claim that 2822 is already well over that cliff and the
suggested change above really just finishes the task. I'd prefer to
keep the lack of normative reference from 2822 to 2821, and making it
generic does that.
pr
--
Pete Resnick <http://www.qualcomm.com/~presnick/>
QUALCOMM Incorporated - Direct phone: (858)651-4478, Fax: (858)651-1102