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

Re: FWS problem



Charles Lindsey wrote:

 [NO-WS-CTL in utext]
> Indeed, but politically impossible to change it unilaterally.

Sooner or later you get me to believe in this IETF-2822-cabal,
and then I'll start unilaterally a war against it.  You found
a good reason to change the 2822 "unstructured" into a USEFOR
"unstructured".  It's already different, so why stick to the
utter dubious NO-WS-CTL ?  You could still add a "MAY accept"
and "SHOULD NOT generate" in the text, the polite form of "be
liberal".  [[ I'm only ranting, please leave utext as it is ]]

 [general [FWS] => *WSP]
> all that syntax works, but that is not to say that we should
> change it.

Why not ?  It reflects the MUST about non-empty characters, if
you don't like it, then something with this MUST is not okay.

> you have forbidden, for example:
> Supersedes:  (a comment)
>     <abcd@xxxxxxxxxxx>
>     (another comment)

Yes, "Supersedes:" is an odd case, it's no 2822 header, and you
have already restricted it to one msg-id, s-o-1036 had a list.
Here are some alternatives:

 [your version]
| supersedes =  "Supersedes:" SP [CFWS] msg-id-core [CFWS] CRLF

 [simple version based on msg-id]
| supersedes = "Supersedes:" SP msg-id CRLF

 [s-o-1036 version with a msg-id-list also used in references]
| supersedes = "Supersedes:" SP msg-id-list CRLF

But IIRC we have a rough consensus for one and only one msg-id
in supersedes, and that kills any msg-id-list here.  Why do you
want comments in this header ?  After all it's something a news
server has to understand, and you eliminated CFWS in almost all
other headers relevant for servers.  Is that something about
relaying agent vs. injecting agent, or what's the idea ?

> you would need some syntax of the form:
>     WSPC = *WSP [ comment [CFWS] ]
>     CWSP = [ [CFWS] comment ] *WSP

Yes, that's the idea, but it's a syntactical PITA.  Apparently
it's better to leave all [CFWS] before and after the header
content alone, both your text and 2822 have an explicit MUST
about non-empty header lines.  With one minor and very obscure
difference, 2822 allows "name:" SP CRLF WSP stuff CRLF, and
you don't allow it, no matter how stuff begins (incl. comment).

 [msg-id-list in references]
> you just spotted another bug in USEFOR.

Maybe this works:

| references  = "References:" SP [CFWS] msg-id-list [CFWS] CRLF
| msg-id-list = msg-id-core *( WSP [CFWS WSP] msg-id-core )

 [Lines = "Lines:" SP *WSP 1*DIGIT *WSP CRLF]
> It is a fundamental principle of RFC 2822 that comments and
> folding are allowed in _all_ headers.

They do have FWS in their syntax where they needed it, e.g. a
Date: header has no CFWS before or within the date, only at the
end.  That cries for a compromise:

| Lines = "Lines:" SP *WSP 1*DIGIT [WSP CFWS] CRLF

Actually it's not that important if Lines: isn't a part of the
overview.  But if it is, then I'd want a trivial way to spot
very long articles before I download this stuff.  You allow a
"Lines:" SP CRLF WSP "(many" CRLF WSP "lines)9999(!)" CRLF

It's an old header only used in news, it has no comments today
(taking s-o-1036 as state of the art, the news.txt.z fraction
 please reads 1036 ;-), you deprecate it, so why add comments
to its grave ?

> there are no grounds to make an exception for Lines.

Now admit it, the big IETF-2822-cabal is in fact you... <gd&r>

> I am still not convinced that your syntax has forbidden
> folded lines containing only WSP. All you need is some
> situation where two CFWS can appear adjacent

That's then a problem of 2822, any you've convinced me that we
keep [CFWS] as is where necessary (not in Lines and Supersedes
IMHO).  They tried to avoid this CFWS problem in 2822 somehow:

| CFWS = *([FWS] comment) (([FWS] comment) / FWS)

A "comment" is never empty, it starts with "(".  So there's a
"(" after each folding, i.e. *WSP CRLF 1*WSP, and whatever
happens within a comment, it ends with a non-empty ")".  Even
if the syntax allows CFWS CFWS somewhere it works for comments.

It fails if you replace CFWS CFWS by FWS FWS, and then fold
both resulting in an illegal *WSP CRLF 1*WSP *WSP CRLF 1*WSP.

The discussed simple cases in "our" headers had no CFWS CFWS
and no FWS FWS, or I missed it.  If I missed it it's within the
header content, not at the begin or the end.

> there are plenty of places in RFC 2822 where that can happen

None of our business, or are you planning to edit a 2822bis ?

> Moreover, you have got now to deal with all those things we
> take from RFC 2822, such as <mailbox-list> in the From

No, you already said that you won't touch any 2822 constructs,
only if it's necessary, but not for cases like mailbox-list.

> you still need wording to forbid folded lines with WSP only

Sure, I wanted our syntax to _reflect_ our MUST where possible,
not to _replace_ it.  And it's not worth the effort for [CFWS],
if that means that we need a CWSP and a WSPC.  But for [FWS]
it's possible.

> your modified syntax has still not solved the problem it set
> out to solve, so what have you gained?

A correct syntax for all [FWS] cases.  But if you say that we
should also try CWSP and WSPC looking for cases of CFWS CFWS,
then let's do it.
                     Bye, Frank