[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: FWS problem



Charles Lindsey wrote:

> When they start to develop RFC 2922bis, please join in and
> get them to remove some of their stupidities. But not now,
> for USEFOR.

It's not too bad, we'll fix their msg-id for the real world.

The remaining problems for 2822bis are only NO-WS-CTL and a
mandatory FWS after the colon.  I'm not too happy with our
SP plus "MUST be non-empty" for the body of the first line.

The old 2822 obs-stuff could be moved to an appendix together
with NO-WS-CTL.  The new obs would be a missing FWS after the
colon, ready, submit this 2822bis this year or wait for 2005 ?

> "Supersedes:" is just the example I chose to give.

Yes, my general idea to fix a leading or trailing [CFWS] did
not work as expected.  In the cases of Lines: and Supersedes:
it was intentionally ( [CFWS] => [FWS] ) => *WSP, because I
didn't want the comments there.

> the problem arises eberywhere you propose to use *WSP

Not where it was meant to replace [FWS] (all 7 cases of [FWS]
plus Lines: and Supersedes:).  It did not work for References:
(msg-id-list) and Injection-Info (but at least there was still
a real problem also with your syntax).

 [2822 FWS in Date:]
> that was an explcit exception put into RFC 2822 after
> discussion. But everywhere else it was understood that
> comments would be allowed wherever WSP was allowed. You can't
> have them in some headers but not in others, because no-one
> can be expected to remember which cases are which.

ACK, that's a point.  And References: _is_ a real 2822-header,
you only need a new syntax for it because you modified msg-id
and added msg-id-core.  And maybe because no separator at all
between msg-ids is dubious, s-o-1036 had 1*WSP.

> only because of loud protests by the server implementors that
> we agreed to make exceptions for the Newsgroups and Path
> headers, etc, but only on account of the performance hits.

Supersedes: is relevant for news servers, like Control:, where
you also have only three [FWS] or in the fixed variant two *WSP
and still one [FWS] in control-message.  No [CFWS] in Control:

For Lines: you could say that it's now deprecated and the old
syntax was Lines = "Lines:" SP *WSP 1*DIGIT *WSP CRLF

That's no lie, and if somebody tries new tricks with deprecated
headers, then old software might fail for Lines: (huge)9999(!)

> If there is something you want to forbid in a standard (such
> as empty header lines, etc), then it is an exceedingly Bad
> Idea to have two mechanisms for forbidding it

Then let's use your CWSP and WSPC trick.  It's a worse idea to
say something as a MUST in the text and then something else in
the syntax.  The [FWS] problem is already solved for 7+2 cases,
or 7+1 cases if you insist on Lines: (over)999(lines)

Only 5 (or 6) similar [CFWS] cases, all solved by your idea:

| WSPC = *WSP [ comment [CFWS] ]

Replace all (5 or 6) "leading" (near colon) [CFWS] by WSPC.

| CWSP = [ [CFWS] comment ] *WSP

Dito 5 or 6 "trailing" [CFWS] => CWSP (near CRLF), ready.
For our most critical example of the References: I get

| references  = "References:" SP msg-id-list CRLF
| msg-id-list = CWSP msg-id-core *( CFWS msg-id-core ) WSPC

That's a variant enforcing at least either a comment or a WSP
between msg-ids, it allows (x)<y@z>(a)<b@c>(u)<v@w>(e) and
<y@z> <b@c> <v@w>, but not adjacent <y@z><b@c><v@w>.   The RfC
2822 syntax is very similar:

| references  = "References:" 1*msg-id CRLF
| msg-id      = [CFWS] "<" id-left "@" id-right ">" [CFWS]

You don't use it, because msg-id one of these overloaded terms:

| msg-id      = [FWS] msg-id-core [FWS]

IMHO you should get rid of your special USEFOR msg-id, there's
exactly one line where you use it:

| message-id  = "Message-ID:" SP msg-id CRLF

Why not simply delete the special msg-id, and use msg-id-core ?

  message-id  = "Message-ID:" SP *WSP msg-id-core *WSP CRLF

                              Bye, Frank